在SQL Server數(shù)據(jù)庫開發(fā)中的十大問題
在SQL Server數(shù)據(jù)庫開發(fā)中的十大問題
在SQL Server中進(jìn)行開發(fā)會讓你身處險地,并且尋找快速解決方案。我們編輯了前十名關(guān)于SQL Server開發(fā)的常見問題。對常見的針對表和字段的名字約束進(jìn)行探究。學(xué)習(xí)如何解決并發(fā)問題,并且在不了解T-SQL的情況下編寫存儲過程。查看這些解決方案的快速參考,并且了解更多內(nèi)容。 在SQL Server開發(fā)問題中你可能會問到的十個問題: 1、什么是常見的對表和字段的名字約束? 2、有沒有可能在不了解T-SQL的情況下編寫存儲過程 3、T-SQL 中如何比較CLR 存儲過程和函數(shù)的性能? 4、我如何在一個存儲過程中使用另一個存儲過程產(chǎn)生的結(jié)果? 5、我如何解決SQL Server 2005的并發(fā)問題? 6、在SQL Server 2005中用什么工具替代了查詢分析器? 7、你能提供一些有關(guān)SQL 和T-SQL的詳細(xì)信息嗎? 8、SQL Server 2005 有沒有新的索引類型? 9、我如何創(chuàng)建一個腳本在表中進(jìn)行選擇? 10、我如何列出那些沒有記錄的數(shù)據(jù)庫表? 對于表和字段的常見名字約束 專家回答: SQL Server 2000下的表和字段名稱有1到128字節(jié)的限制,并且遵循用于標(biāo)識的規(guī)則。第一個字母必須是如下的一種: Unicode Standard 2.0中規(guī)定的字母。 Unicode對字母的定義包括:拉丁字母,從A到Z,除了來自其他語言的字母之外。 下劃線(_),at符號(@),或者數(shù)字符號(#) 在SQL Server中以這些符號作為標(biāo)識符的開始具有特殊的含義。一個以at符號(@)開頭的標(biāo)識符表示一個本地的變量或者參數(shù)。一個以數(shù)字符號(#)開頭的標(biāo)識符代表一個臨時表或者過程。一個以兩個數(shù)字符號(##)開頭的標(biāo)識符標(biāo)識的是一個全局臨時對象。一些Transact-SQL函數(shù)的名字以兩個at符號(@@)開頭。為了避免與這些函數(shù)混淆,推薦你不要使用兩個at符號(@@)開頭的標(biāo)識符。接下來的字母可以是以下的任意幾種: 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ù)的時候,在 CLR主機(jī)提供的環(huán)境中就會使用同樣的類。 我要強(qiáng)調(diào)的是,從技術(shù)角度來說,不使用T-SQL來編寫存儲過程是可能的。那么有沒有理由這么做呢?一種情況就是這是一個用來從普通文件或者網(wǎng)絡(luò)服務(wù)中檢索數(shù)據(jù)的CLR存儲過程,并將數(shù)據(jù)格式設(shè)置為行集。這里可能就會用到不需要T-SQL的操作——但是這并不是對T -SQL存儲過程能力的一個很好的比喻。 CLR存儲過程vs. T-SQL存儲過程 CLR存儲過程和函數(shù)與T-SQL存儲過程和函數(shù)相比,性能如何? 專家回答: 這里是用來比較T-SQL例程和CLR例程性能的一種常用的規(guī)則:用你的數(shù)據(jù),在你的服務(wù)器上,測試兩套配置,看看哪一個比較好。 就是說,許多人都運(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)于這個主題的有用鏈接: 在 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ù)的性能比較。 如何在一個存儲過程中使用另一個存儲過程的結(jié)果 專家回答: 只要存儲過程只產(chǎn)生了一個單個的結(jié)果,要在另外一個存儲過程中使用這個存儲過程產(chǎn)生的輸出,這個技術(shù)是非常直接的。這個技術(shù)就是使用一個臨時表來裝載存儲過程的巨額iguo,然后通過INSERT EXEC語句來執(zhí)行這個過程并保存結(jié)果。一旦結(jié)果保留在臨時表中了,他們就可以像使用其它表數(shù)據(jù)一樣來使用它了。 這里是我們可能會復(fù)用的一個過程例子: CREATE PROC usp_Demo_AllAuthors as select * from pubs..authors GO
作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機(jī)號)
框架官網(wǎng):
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國思RDIF開發(fā)框架
,
給用戶和開發(fā)者最佳的.Net框架平臺方案,為企業(yè)快速構(gòu)建跨平臺、企業(yè)級的應(yīng)用提供強(qiáng)大支持。
關(guān)于作者:系統(tǒng)架構(gòu)師、信息系統(tǒng)項(xiàng)目管理師、DBA。專注于微軟平臺項(xiàng)目架構(gòu)、管理和企業(yè)解決方案,多年項(xiàng)目開發(fā)與管理經(jīng)驗(yàn),曾多次組織并開發(fā)多個大型項(xiàng)目,在面向?qū)ο蟆⒚嫦蚍?wù)以及數(shù)據(jù)庫領(lǐng)域有一定的造詣。現(xiàn)主要從事基于
RDIF
框架的技術(shù)開發(fā)、咨詢工作,主要服務(wù)于金融、醫(yī)療衛(wèi)生、鐵路、電信、物流、物聯(lián)網(wǎng)、制造、零售等行業(yè)。
如有問題或建議,請多多賜教!
本文版權(quán)歸作者和CNBLOGS博客共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過微信、郵箱、QQ等聯(lián)系我,非常感謝。

浙公網(wǎng)安備 33010602011771號