SQLServer開發(fā)問題前十名[2]

字號:

接下來的字母可以是以下的任意幾種:
    · Unicode Standard 2.0定義的字母
    · 來自基礎(chǔ)拉丁文或者其他語音的十進(jìn)制數(shù)字
    · at符號(@),美元符號($),數(shù)字符號(#),或者下劃線
    標(biāo)識符絕對不能是Transact-SQL的保留字。SQL Server保留了一些大寫和小寫的保留字。內(nèi)建的空間或者特殊的字母都不允許出現(xiàn),盡管你可以在好的老版本的Northwind中看到它們包含了內(nèi)建的空間。你必須通過把它們括在括號中才可以訪問。
    我可以在不具有任何T-SQL知識的情況下編寫SQL Server2005存儲過程嗎?
    作為過去幾年里面微軟試圖用SQL Server 2005的.NET集成來稱霸市場的野心的結(jié)果,許多程序員都認(rèn)為創(chuàng)建SQL Server存儲過程不再必需T-SQL了。不幸的是(或者并非如此,這根據(jù)你的觀點(diǎn)),這并不全是事實(shí)。在技術(shù)上是可以在不了解T-SQL的情況下創(chuàng)建存儲過程的,但是沒有T-SQL的話則無法訪問任何的數(shù)據(jù)。
    在CLR存儲過程內(nèi)部進(jìn)行數(shù)據(jù)訪問,是通過使用標(biāo)準(zhǔn)的ADO.NET類來完成的。開發(fā)人員會在應(yīng)用程序?qū)影l(fā)現(xiàn)很多同樣的沒有用處的數(shù)據(jù)訪問代碼,這些代碼會很輕易地轉(zhuǎn)移到SQLCLR例程中去。當(dāng)中間層的這些ADO.NET類需要使用T-SQL來訪問數(shù)據(jù)的時(shí)候,在 CLR主機(jī)提供的環(huán)境中就會使用同樣的類。
    我要強(qiáng)調(diào)的是,從技術(shù)角度來說,不使用T-SQL來編寫存儲過程是可能的。那么有沒有理由這么做呢?一種情況就是這是一個(gè)用來從普通文件或者網(wǎng)絡(luò)服務(wù)中檢索數(shù)據(jù)的CLR存儲過程,并將數(shù)據(jù)格式設(shè)置為行集。這里可能就會用到不需要T-SQL的操作——但是這并不是對T -SQL存儲過程能力的一個(gè)很好的比喻。
    CLR存儲過程vs. T-SQL存儲過程
    CLR存儲過程和函數(shù)與T-SQL存儲過程和函數(shù)相比,性能如何?
    專家回答:
    這里是用來比較T-SQL例程和CLR例程性能的一種常用的規(guī)則:用你的數(shù)據(jù),在你的服務(wù)器上,測試兩套配置,看看哪一個(gè)比較好。
    就是說,許多人都運(yùn)行過性能測試,一般的結(jié)果就是T-SQL在標(biāo)準(zhǔn)的CRUD(創(chuàng)建、讀取、更新、刪除)操作上表現(xiàn)要比好一點(diǎn),而在復(fù)雜數(shù)學(xué)、字符串賦值和其他的超過數(shù)據(jù)訪問的任務(wù)上,則是CLR的性能表現(xiàn)更好一點(diǎn)。
    SQL Server 的專家Gustavo Larriera編輯了如下一些關(guān)于這個(gè)主題的有用鏈接:
    ·在 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問題與回答
    ·數(shù)據(jù)庫管理員的酒吧門防御.NET大壞狼
    ·用戶自定義函數(shù)的性能比較
    如何在一個(gè)存儲過程中使用另一個(gè)存儲過程的結(jié)果