共用方式為


撰寫 SQLPROPSET_OPTHINTS 屬性集程式

個別的 OLE DB 提供者可支援定義於 DBPROPVAL_SQL_SUBMINIMUM 以外的一些 SQL 功能,但並非 DBPROPVAL_SQL_ODBC_CORE 或 DBPROPVAL_SQL_ANSI92_ENTRY 內的所有功能。SQL Server 查詢最佳化工具可使用這些驅動程式所支援的一些功能,來增加分散式查詢的效能。這些提供者可以使用 SQLPROPSET_OPTHINTS 屬性集,將這些提供者支援並可加速分散式查詢的功能通知 SQL Server。

雖然 SQLPROPSET_OPTHINTS 屬性集是定義在 SQL Server 文件集之中,但個別的 OLE DB 提供者開發人員仍必須在他們的提供者內撰寫支援屬性集的程式碼。在將支援此屬性集的程式碼加入提供者之後,SQL Server 會用它將分散式查詢的效能最佳化。

支援 DBPROPVAL_SQL_ANSI92_ENTRY 或 DBPROPVAL_SQL_ODBC_CORE 的 OLE DB 提供者,並不需要 SQLPROP_DATELITERALS 以外的任何 SQLPROPSET_OPTHINTS 屬性。這些提供者必須支援 SQLPROPSET_OPTHINTS 屬性集所涵蓋的所有功能 (除了 SQLPROP_DATELITERALS 以外),以便提供 DBPROPVAL_SQL_ANSI92_ENTRY 或 DBPROPVAL_SQL_ODBC_CORE 支援。

下表列出透過 SQLPROPSET_OPTHINTS 來報告的屬性。

屬性

描述

SQLPROP_ANSILIKE

依照 ISO Entry Level 所定義的方式,指定支援包含 % 和 _ 萬用字元的 LIKE 子句。

SQLPROP_DATELITERALS

指定提供者支援 datetime 常值或常數 (依照 Transact-SQL 語法)。

SQLPROP_DYNAMICSQL

指定提供者支援使用問號 (?) 的 ODBC 參數標記語法。).

SQLPROP_INNERJOIN

指定提供者支援在 WHERE 子句中參考多個資料表,只要它們並非外部聯結參考。

SQLPROP_GROUPBY

指定提供者支援 SELECT 陳述式內的 GROUP BY 與 HAVING 子句。該屬性也指定提供者支援 AVG、COUNT、MIN、MAX 與 SUM 彙總函式,只要 DISTINCT 並未指定成彙總引數。

SQLPROP_NESTEDQUERIES

指定提供者支援 FROM 子句中的巢狀 SELECT 陳述式。

SQLPROP_SQLLIKE

指出提供者支援 SQL Server LIKE 語法。當 SQLPROP_SQLLIKE 為開啟時,如果查詢計畫適合的話,最佳化工具就可以將包含 SQL Server LIKE 述詞的查詢傳送到遠端伺服器。如果 SQLPROP_SQLLIKE 為關閉,則 SQL Server LIKE 述詞都會在本機評估。

SQLPROP_SUBQUERIES

指定提供者支援 ISO Entry Level 所定義的子查詢。

下列常數可用來定義 OLE DB 提供者程式碼內的 SQLPROPSET_OPTHINTS 屬性集:

Extern const GUID SQLPROPSET_OPTHINTS =
{ 0x2344480c, 0x33a7, 0x11d1,
     { 0x9b, 0x1a, 0x0, 0x60, 0x8, 0x26, 0x8b, 0x9e }
};
enum SQLPROPERTIES
{
     SQLPROP_NESTEDQUERIES = 0x4,
     SQLPROP_DYNAMICSQL = 0x5,
     SQLPROP_GROUPBY = 0x6,
     SQLPROP_DATELITERALS = 0x7,
     SQLPROP_ANSILIKE = 0x8,
     SQLPROP_INNERJOIN = 0x9,
     SQLPROP_SUBQUERIES = 0x10,
     SQLPROP_SQLLIKE = 0x15
}