在SQL Server資料庫開發中的十大問題
在SQL Server中進行開發會讓你身處險地,并且尋找快速解決方案。我們編輯了前十名關于SQL Server開發的常見問題。對常見的針對表和字段的名字限制進行探究。學習如何解決并發問題,并且在不了解T-SQL的情況下編寫存儲過程。檢視這些解決方案的快速參考,并且了解更多内容。 在SQL Server開發問題中你可能會問到的十個問題: 1、什麼是常見的對表和字段的名字限制? 2、有沒有可能在不了解T-SQL的情況下編寫存儲過程 3、T-SQL 中如何比較CLR 存儲過程和函數的性能? 4、我如何在一個存儲過程中使用另一個存儲過程産生的結果? 5、我如何解決SQL Server 2005的并發問題? 6、在SQL Server 2005中用什麼工具替代了查詢分析器? 7、你能提供一些有關SQL 和T-SQL的詳細資訊嗎? 8、SQL Server 2005 有沒有新的索引類型? 9、我如何建立一個腳本在表中進行選擇? 10、我如何列出那些沒有記錄的資料庫表? 對于表和字段的常見名字限制 專家回答: SQL Server 2000下的表和字段名稱有1到128位元組的限制,并且遵循用于辨別的規則。第一個字母必須是如下的一種: Unicode Standard 2.0中規定的字母。 Unicode對字母的定義包括:拉丁字母,從A到Z,除了來自其他語言的字母之外。 下劃線(_),at符号(@),或者數字元号(#) 在SQL Server中以這些符号作為辨別符的開始具有特殊的含義。一個以at符号(@)開頭的辨別符表示一個本地的變量或者參數。一個以數字元号(#)開頭的辨別符代表一個臨時表或者過程。一個以兩個數字元号(##)開頭的辨別符辨別的是一個全局臨時對象。一些Transact-SQL函數的名字以兩個at符号(@@)開頭。為了避免與這些函數混淆,推薦你不要使用兩個at符号(@@)開頭的辨別符。接下來的字母可以是以下的任意幾種: Unicode Standard 2.0定義的字母 來自基礎拉丁文或者其他語音的十進制數字 at符号(@),美元符号($),數字元号(#),或者下劃線 辨別符絕對不能是Transact-SQL的保留字。SQL Server保留了一些大寫和小寫的保留字。内建的空間或者特殊的字母都不允許出現,盡管你可以在好的老版本的Northwind中看到它們包含了内建的空間。你必須通過把它們括在括号中才可以通路。 不具有任何T-SQL知識的情況下編寫SQL Server2005存儲過程嗎? 作為過去幾年裡面微軟試圖用SQL Server 2005的.net內建來稱霸市場的野心的結果,許多程式員都認為建立SQL Server存儲過程不再必需T-SQL了。不幸的是(或者并非如此,這根據你的觀點),這并不全是事實。在技術上是可以在不了解T-SQL的情況下建立存儲過程的,但是沒有T-SQL的話則無法通路任何的資料。 在CLR存儲過程内部進行資料通路,是通過使用标準的ADO.NET類來完成的。開發人員會在應用程式層發現很多同樣的沒有用處的資料通路代碼,這些代碼會很輕易地轉移到SQLCLR例程中去。當中間層的這些ADO.NET類需要使用T-SQL來通路資料的時候,在 CLR主機提供的環境中就會使用同樣的類。 我要強調的是,從技術角度來說,不使用T-SQL來編寫存儲過程是可能的。那麼有沒有理由這麼做呢?一種情況就是這是一個用來從普通檔案或者網絡服務中檢索資料的CLR存儲過程,并将資料格式設定為行集。這裡可能就會用到不需要T-SQL的操作——但是這并不是對T -SQL存儲過程能力的一個很好的比喻。 CLR存儲過程vs. T-SQL存儲過程 CLR存儲過程和函數與T-SQL存儲過程和函數相比,性能如何? 專家回答: 這裡是用來比較T-SQL例程和CLR例程性能的一種常用的規則:用你的資料,在你的伺服器上,測試兩套配置,看看哪一個比較好。 就是說,許多人都運作過性能測試,一般的結果就是T-SQL在标準的CRUD(建立、讀取、更新、删除)操作上表現要比好一點,而在複雜數學、字元串指派和其他的超過資料通路的任務上,則是CLR的性能表現更好一點。 SQL Server 的專家Gustavo Larriera編輯了如下一些關于這個主題的有用連結: 在 SQL Server 2005中使用CLR Integration。 簡單介紹在 SQL Server 2005中的 CLR Integration。 在 SQL Server 2005中對CLR 和T-SQL做出選擇。 介紹 SQL Server 2005中的 CLR Integration。 SQL Server 閑談: SQL Server 2005 Beta 2 CLR問題與回答。 資料庫管理者的防禦.NET。 ·使用者自定義函數的性能比較。 如何在一個存儲過程中使用另一個存儲過程的結果 專家回答: 隻要存儲過程隻産生了一個單個的結果,要在另外一個存儲過程中使用這個存儲過程産生的輸出,這個技術是非常直接的。這個技術就是使用一個臨時表來裝載存儲過程的巨額iguo,然後通過INSERT EXEC語句來執行這個過程并儲存結果。一旦結果保留在臨時表中了,他們就可以像使用其它表資料一樣來使用它了。 這裡是我們可能會複用的一個過程例子: CREATE PROC usp_Demo_AllAuthors as select * from pubs..authors GO
本文轉自yonghu86 51CTO部落格,原文連結:http://blog.51cto.com/yonghu/1321479,如需轉載請自行聯系原作者