>  該堆棧的頂部是API或?qū)ο髱鞂印?yīng)用程序通過對象庫公開的API函數(shù)或接口連接到Microsoft®SQLServer。用于訪問SQLServer的API示例包括ODBC和DB-Li">
microsoft sql server 連接知識--

microsoft sql server 連接知識--

ID:22820294

大?。?8.00 KB

頁數(shù):8頁

時間:2018-10-31

microsoft sql server 連接知識--_第1頁
microsoft sql server 連接知識--_第2頁
microsoft sql server 連接知識--_第3頁
microsoft sql server 連接知識--_第4頁
microsoft sql server 連接知識--_第5頁
資源描述:

《microsoft sql server 連接知識--》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、MicrosoftSQLServer連接知識>>  該堆棧的頂部是API或?qū)ο髱鞂?。?yīng)用程序通過對象庫公開的API函數(shù)或接口連接到Microsoft®SQLServer。用于訪問SQLServer的API示例包括ODBC和DB-Library。用于訪問SQLServer的對象庫示例包括OLEDB、ADO和ADO.。由于ADO最終使用OLEDB與服務(wù)器通信,因此S計劃程序。當(dāng)客戶端連接到服務(wù)器時,這些客戶端將指定給具有最少連接數(shù)的計劃程序。連接后,客戶端將不會更換計劃程序-它將始終受到指定計劃程序的控制,直到連接斷開。  這對與服務(wù)器建立多個連接的應(yīng)用程序很重要。如

2、果應(yīng)用程序性能較差,或無法在它的多個連接上平均分配工作,則在該應(yīng)用程序的某些連接之間可能造成不必要的CPU資源爭用,而其他連接實際上卻處于空閑狀態(tài)。  例如,應(yīng)用程序與雙處理器計算機(jī)上運行的SQLServer建立了四個連接,連接1和3隸屬于處理器0,連接2123下一頁>>>>這篇文章來自..,。和4隸屬于處理器1。如果應(yīng)用程序的大部分工作通過連接1和3執(zhí)行,則這兩個連接將爭用CPU0,而CPU1實際上可能仍處于空閑狀態(tài)。這種情況下,應(yīng)用程序只能斷開某些連接或重新連接某些連接,并希望連接1和3隸屬于不同的CPU(連接時無法指定處理器隸屬關(guān)系),或在它的連接上重新分配工作負(fù)荷

3、,以便每個連接的工作負(fù)荷更加均衡。當(dāng)然,后一種情況要遠(yuǎn)好于前一種情況?!   ∵B接內(nèi)存  SQLServer為客戶端請求的每個連接保留三個數(shù)據(jù)包緩沖區(qū)。每個緩沖區(qū)的大小取決于sp_configure存儲過程指定的默認(rèn)網(wǎng)絡(luò)數(shù)據(jù)包大小。如果默認(rèn)網(wǎng)絡(luò)數(shù)據(jù)包大小小于8KB,則這些數(shù)據(jù)包的內(nèi)存將由SQLServer的緩沖池提供。否則,該內(nèi)存將由SQLServer的MemToLeave區(qū)域分配?!   ≈档靡惶岬氖?,.FrameToLeave區(qū)域提供。而典型的ADO應(yīng)用程序卻不同,它們的默認(rèn)數(shù)據(jù)包大小為4KB,因此緩沖區(qū)將由SQLServer緩沖池分配?! ∈录 ∵B接后的客戶端請求

4、通常分為兩種廣泛類別:語言事件和遠(yuǎn)程過程調(diào)用。盡管還存在其他類別,但大多數(shù)由SQLServer客戶端發(fā)送到服務(wù)器的請求由以下兩種類型之一構(gòu)成:語言事件是從客戶端發(fā)送到服務(wù)器的一組T-SQL。例如,如果調(diào)用ADOmand對象(其mandText屬性設(shè)置為T-SQL查詢,mandType屬性設(shè)置為adCmdText)的Execute方法,則查詢將作為語言事件提交給服務(wù)器。同樣,如果將mandType設(shè)置為adCmdTable并調(diào)用Execute方法,則ADO將生成一個內(nèi)部查詢(它將選擇mandText屬性標(biāo)識的表中的所有列),并將它作為語言事件提交給服務(wù)器。另一方面,如果將m

5、andType設(shè)置為adStoredProc,則調(diào)用Execute將使ADO向服務(wù)器提交一個遠(yuǎn)程過程調(diào)用請求,以執(zhí)行mandText屬性中列出的存儲過程。  為何要關(guān)心將請求作為語言事件還是作為RPC提交給服務(wù)器呢?通常,這是因為RPC的功能更為出色,特別是在重復(fù)調(diào)用具有不同篩選值的同一查詢時。盡管SQLServer可以自動將普通的語言事件請求參數(shù)化,但這種能力非常有限。它從不嘗試自動將某些類型的查詢參數(shù)化。這可能會導(dǎo)致基本相同的查詢產(chǎn)生不同的執(zhí)行,從而只因為這些不同的執(zhí)行提供不同的值,而導(dǎo)致在服務(wù)器上白白浪費計劃編譯的成本。這通常不是您所希望的結(jié)果-您希望針對查詢的第一

6、次執(zhí)行編譯一個新的計劃,然后將該計劃重復(fù)用于具有不同參數(shù)的執(zhí)行?! 《鳵PC則通過顯式參數(shù)化查詢(而不是依賴服務(wù)器參數(shù)化查詢)來支持計劃重復(fù)使用。為過程的第一次執(zhí)行生成一個計劃后,隨后的執(zhí)行將自動重復(fù)使用該計劃,即使它們提供的參數(shù)值不同。與通過語言事件調(diào)用存儲過程相比,使用RPC調(diào)用存儲過程不僅節(jié)省了計劃編譯所需的執(zhí)行時間和CPU資源,還增強(qiáng)了SQLServer內(nèi)存資源的利用率,因為它避免了冗余執(zhí)行計劃所浪費的內(nèi)存。  在執(zhí)行動態(tài)T-SQL時,通常首選sp_executesql而不是EXEC()也出于同樣的原因。Sp_executesql的工作方式是:使用指定的查詢創(chuàng)建一

7、個存儲過程,然后使用提供的參數(shù)調(diào)用它。與EXEC()不同,sp_executesql提供了一個允許您參數(shù)化動態(tài)T-SQL并支持計劃重復(fù)使用的機(jī)制。使用sp_executesql執(zhí)行的動態(tài)查詢比使用EXEC()的查詢能夠在更大程度上避免不必要的編譯和資源消耗?! DS  從客戶端發(fā)送到SQLServer的RPC、語言事件和其他類型的請求被格式化為稱作表格數(shù)據(jù)流(TDS)的SQLServer特定數(shù)據(jù)格式。TDS是SQLServer客戶端和服務(wù)器之間使用的語言。對于它的確切格式將不作介紹,但是,如果客戶端要與SQLServer進(jìn)行

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。