ISO 選項的作用

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics

ODBC 標準與 ISO 標準緊密相符,而 ODBC 應用程式預期 ODBC 驅動程式會有標準行為。 為了讓其行為與 ODBC 標準中所定義的更緊密一致,SQL Server Native Client ODBC 驅動程式一律會使用它所連接之 SQL Server 版本中可用的任何 ISO 選項。

當 SQL Server Native Client ODBC 驅動程式連線到 SQL Server 實例時,伺服器會偵測到用戶端正在使用 SQL Server Native Client ODBC 驅動程式,並設定數個選項。

驅動程式會自行發出這些語句;ODBC 應用程式不會執行任何動作來要求它們。 設定這些選項可讓 ODBC 應用程式使用驅動程式更容易移植,因為伺服器行為接著符合 ISO 標準。

資料庫連結庫型應用程式通常不會開啟這些選項。 執行相同 SQL 語句時,在 ODBC 或 DB 連結庫客戶端之間觀察到不同行為的網站不應該假設這點指向 SQL Server Native Client ODBC 驅動程序的問題。 他們應該先在 DB-Library 環境中以與SETSQL Server Native Client ODBC 驅動程式相同的選項重執行該語句。

由於 SET 使用者和應用程式可以隨時開啟或關閉選項,儲存程序與觸發器的開發者也應謹慎測試,並同時 SET 開啟或關閉上述選項。 這可確保不論特定連接在叫用程式或觸發程式時可能設定的選項為何,程式和觸發程式都能正常運作。 需要特定設定的觸發器或儲存程序,應在觸發器或儲存程序開頭發出 SET 一個語句。 此 SET 敘述僅在觸發器或儲存程序執行時生效;當程序或觸發器結束時,原始設定會被恢復。

當連接到 SQL Server 實例時,SET第四個選項 CONCAT_NULL_YIELDS_NULL也會被設定為 。 如果在數據源或 SQLDriverConnect 或 SQLBrowseConnect 上指定 AnsiNPW=NO,SQL Server Native Client ODBC 驅動程式就不會在 上設定這些選項。

如同先前提到的 ISO 選項,SQL Server Native Client ODBC 驅動程式若在資料來源或 QUOTED_IDENTIFIER 或 SQLBrowseConnect 中指定 QuotedID=NO,則不會開啟該選項。

為了讓驅動程式知道目前選項的 SET 狀態,ODBC 應用程式不應使用 Transact-SQL SET 陳述來設定這些選項。 它們只應該使用數據源或連接選項來設定這些選項。 如果應用程式發出 SET 了陳述式,驅動程式可能會產生錯誤的 SQL 陳述式。