国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

揭秘SQL Server開發中需要注意的十個問題

2024-08-31 00:46:52
字體:
來源:轉載
供稿:網友
1、什么是常見的對表和字段的名字約束?
  回答:
  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中看到它們包含了內建的空間。你必須通過把它們括在括號中才可以訪問。

2、不具有任何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存儲過程能力的一個很好的比喻。

3、T-SQL 中如何比較CLR 存儲過程和函數的性能?
  回答:
  這里是用來比較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。 ·用戶自定義函數的性能比較。

4、我如何在一個存儲過程中使用另一個存儲過程產生的結果?
  回答:
  只要存儲過程只產生了一個單個的結果,要在另外一個存儲過程中使用這個存儲過程產生的輸出,這個技術是非常直接的。這個技術就是使用一個臨時表來裝載存儲過程的巨額iguo,然后通過INSERT EXEC語句來執行這個過程并保存結果。一旦結果保留在臨時表中了,他們就可以像使用其它表數據一樣來使用它了。 這里是我們可能會復用的一個過程例子:
  CREATE PROC usp_Demo_AllAuthors as 
  select * from pubs..authors 
  GO 

現在有一個存儲過程使用usp_Demo_AllAuthors的結果:
CREATE proc usp_Demo_SPUser as CREATE TABLE #Authors (
au_id varchar(11) NOT NULL PRIMARY KEY CLUSTERED,
au_lname varchar (40) NOT NULL ,
au_fname varchar (20) NOT NULL ,
phone char (12) NOT NULL,
address varchar (40) NULL ,
city varchar (20) NULL ,
state char (2) NULL ,
zip char (5) NULL ,
contract bit NOT NULL
)– Execute usp_Demo_AllAuthors storing the
– results in #Authors
insert into #Authors
exec usp_Demo_AllAuthors– Here we use the #Authors table. This example only
– only selects from the temp table but you could do much
– more such as use a cursor on the table or join with
– other data.
SELECT au_fName + ‘ ‘ + au_lname as [name]
, address+’, ‘+city+’, ‘+state+’ ‘+zip [Addr]
from #AuthorsDROP TABLE #Authors
GO 

共3頁上一頁123下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新田县| 南澳县| 连云港市| 平江县| 洱源县| 寿光市| 寿阳县| 罗甸县| 礼泉县| 克拉玛依市| 额济纳旗| 剑川县| 灌阳县| 永福县| 泌阳县| 贞丰县| 乐山市| 丘北县| 怀宁县| 安平县| 崇阳县| 泰州市| 南木林县| 鲁山县| 武夷山市| 德格县| 南宫市| 肥东县| 凤冈县| 德庆县| 梁河县| 儋州市| 阳春市| 巴林左旗| 加查县| 长葛市| 九龙城区| 登封市| 鸡泽县| 离岛区| 永寿县|