Share via


SET ANSI_DEFAULTS (Transact-SQL)

控制一群共同指定某些 ISO 標準行為的 SQL Server 設定。

主題連結圖示Transact-SQL 語法慣例

語法

SET ANSI_DEFAULTS { ON | OFF }

備註

SET ANSI_DEFAULTS 是用戶端不會修改的伺服器端設定。用戶端會管理自己的設定。依預設,這些設定與伺服器設定相反。使用者不應該修改伺服器設定。若要變更用戶端行為,使用者應使用 SQL_COPT_SS_PRESERVE_CURSORS。如需詳細資訊,請參閱<SQLSetConnectAttr>。

當啟用 (ON) 時,這個選項會啟用下列 ISO 設定:

SET ANSI_NULLS

SET CURSOR_CLOSE_ON_COMMIT

SET ANSI_NULL_DFLT_ON

SET IMPLICIT_TRANSACTIONS

SET ANSI_PADDING

SET QUOTED_IDENTIFIER

SET ANSI_WARNINGS

 

這些 ISO 標準 SET 選項共同定義了使用者、執行中的觸發程序或預存程序之工作階段持續期間的查詢處理環境。不過,這些 SET 選項並未包括符合 ISO 標準所需要的所有選項。

當處理計算資料行索引和索引檢視時,這些預設值其中的四個 (ANSI_NULLS、ANSI_PADDING、ANSI_WARNINGS 和 QUOTED_IDENTIFIER) 必須設為 ON。這些預設值是在建立和變更計算資料行索引和索引檢視時,必須指派必要值的七個選項之中。其他 SET 選項有 ARITHABORT (ON)、CONCAT_NULL_YIELDS_NULL (ON) 和 NUMERIC_ROUNDABORT (OFF)。如需有關含索引檢視和計算資料行索引之必要 SET 選項設定的詳細資訊,請參閱<SET (Transact-SQL)>中的「使用 SET 陳述式時的考量」一節。

SQL Server 的 SQL Server Native Client ODBC 驅動程式和 SQL Server Native Client OLE DB 提供者在連接之時,都會自動將 ANSI_DEFAULTS 設為 ON。之後,驅動程式和提供者便將 CURSOR_CLOSE_ON_COMMIT 和 IMPLICIT_TRANSACTIONS 設為 OFF。您可以在 ODBC 資料來源、ODBC 連接屬性中設定 SET CURSOR_CLOSE_ON_COMMIT 和 SET IMPLICIT_TRANSACTIONS 的 OFF 設定,或在應用程式連接到 SQL Server 之前所設定的 OLE DB 連接屬性中設定這項設定。起始於 DB-Library 應用程式的連接之 SET ANSI_DEFAULTS 預設值是 OFF。

當發出 SET ANSI_DEFAULTS 時,會在剖析階段設定 SET QUOTED_IDENTIFIER,執行階段所設定的選項如下:

SET ANSI_NULLS

SET ANSI_WARNINGS

SET ANSI_NULL_DFLT_ON

SET CURSOR_CLOSE_ON_COMMIT

SET ANSI_PADDING

SET IMPLICIT_TRANSACTIONS

權限

需要 public 角色中的成員資格。

範例

下列範例會設定 SET ANSI_DEFAULTS ON 以及利用 DBCC USEROPTIONS 陳述式來顯示受影響的設定。

-- SET ANSI_DEFAULTS ON.
SET ANSI_DEFAULTS ON
GO
-- Display the current settings.
DBCC USEROPTIONS
GO
-- SET ANSI_DEFAULTS OFF.
SET ANSI_DEFAULTS OFF
GO