SQL Server遠(yuǎn)程查詢的正確執(zhí)行方案介紹
以下的文章主要向大家講述的是SQL Server遠(yuǎn)程查詢的正確執(zhí)行方案,SQL Server 數(shù)據(jù)庫(kù)的試圖主要是將評(píng)估分布式查詢的工作,使盡可能多地委派給 SQL 命令提供程序。如果 SQL 查詢只訪問存儲(chǔ)在提供程序數(shù)據(jù)源中的遠(yuǎn)程表。
將從原始分布式查詢中析取該查詢并在提供程序上SQL Server遠(yuǎn)程查詢執(zhí)行。這將減少?gòu)奶峁┏绦蚍祷氐男袛?shù),并使提供程序得以在評(píng)估查詢時(shí)使用它的索引。
在多大程度上將原始分布式查詢委派給 SQL 命令提供程序的影響因素包括:
SQL 命令提供程序支持的專用語級(jí)別
SQL Server 僅在受特定的專用語級(jí)別支持時(shí)才委派操作。專用語級(jí)別由高到低為:SQL Server、SQL-92 Entry 級(jí)、ODBC core 和 Jet.專用語級(jí)別越高,SQL Server 可以給提供程序委派的操作就越多。
說明 當(dāng)提供程序?qū)?yīng)于 SQL Server 鏈接服務(wù)器時(shí),使用 SQL Server 專用語級(jí)別。
每個(gè)專用語級(jí)別都是其下屬級(jí)別的超集。因此,如果將操作委派給某個(gè)級(jí)別,也就將它委派給了這一級(jí)之上的所有級(jí)別。
始終不將涉及下列各項(xiàng)的查詢委派給提供程序,總在本地對(duì)這類查詢進(jìn)行評(píng)估:
- bit
- uniqueidentifier
下列操作/語法元素委派給對(duì)應(yīng)的專用語級(jí)別(和所有更高的級(jí)別):
SQL Server:外聯(lián)接、CUBE、ROLLUP、模運(yùn)算符 (%)、位運(yùn)算符、字符串函數(shù)和算術(shù)系統(tǒng)函數(shù)。
SQL-92 Entry 級(jí):UNION 和 UNION ALL。
ODBC 核心:帶 DISTINCT 的聚合函數(shù)和字符串常量。
Jet:不帶 DISTINCT 的聚合函數(shù)、排序 (ORDER BY)、內(nèi)連接、謂詞、子查詢運(yùn)算符(EXISTS、ALL、SOME、IN)、DISTINCT、在上級(jí)中沒提到的算術(shù)運(yùn)算符、在上級(jí)中沒提到的常量、以及所有邏輯運(yùn)算符。
例如,除涉及 CUBE、ROLLUP、外聯(lián)接、模運(yùn)算符 (%)、位運(yùn)算符、字符串函數(shù)和算術(shù)系統(tǒng)函數(shù)的操作外,將所有其它操作都委派給不同時(shí)也是 SQL Server遠(yuǎn)程查詢執(zhí)行 的 SQL-92 Entry 級(jí)提供程序。
排序規(guī)則兼容性
對(duì)于分布式查詢,所有字符數(shù)據(jù)的比較語義由字符集和本地 SQL Server 的排序次序定義。Microsoft SQL Server 2000 支持多種排序規(guī)則(每一列的排序規(guī)則可以各不相同),每個(gè)字符值都具有相關(guān)聯(lián)的排序規(guī)則屬性。SQL Server 2000 解釋來自遠(yuǎn)程數(shù)據(jù)源的字符數(shù)據(jù)的排序規(guī)則屬性,并相應(yīng)地對(duì)其進(jìn)行處理。
SQL Server 僅在可以確定下列條件時(shí),才能將在字符列上的比較和 ORDER BY 操作委派給提供程序:
基礎(chǔ)數(shù)據(jù)源使用列的排序規(guī)則序列和字符集。
字符比較語義遵從 SQL-92(和 SQL Server)標(biāo)準(zhǔn)。
SQL Server 將根據(jù)"分布式查詢中的排序規(guī)則"主題中的表,確定每一列的排序規(guī)則。如果遠(yuǎn)程數(shù)據(jù)源支持該排序規(guī)則,則提供程序被視為排序規(guī)則兼容。
其它 SQL 支持注意事項(xiàng)
SQL 專用語級(jí)別不規(guī)定下列 SQL 語法元素:
嵌套查詢支持
如果提供程序支持嵌套查詢(子查詢),則 SQL Server 將這些操作委派給提供程序。由于不能通過 OLE DB 屬性自動(dòng)確定嵌套查詢支持,系統(tǒng)管理員應(yīng)設(shè)置 NestedQueries 提供程序選項(xiàng)以向 SQL Server 表明提供程序支持嵌套查詢。
參數(shù)標(biāo)記支持
如果提供程序通過在查詢中使用 ? 參數(shù)標(biāo)記支持參數(shù)化查詢執(zhí)行,則 SQL Server 可以將參數(shù)化SQL Server遠(yuǎn)程查詢執(zhí)行委派給提供程序。由于不能通過 OLE DB 屬性自動(dòng)確定嵌套查詢支持,系統(tǒng)管理員應(yīng)設(shè)置 DynamicParameters 提供程序選項(xiàng)以向 SQL Server 表明提供程序支持嵌套查詢。
【編輯推薦】