SET 選項

下表提供按字母順序排列的清單,內含 MicrosoftSQL Server 中所支援的 SET 選項和對應的資料庫與伺服器選項。

SET 選項

資料庫選項

伺服器選項

預設值

SET ANSI_DEFAULTS (Transact-SQL)

不適用

SET ANSI_NULL_DFLT_OFF (Transact-SQL)

SET ANSI_NULL_DFLT_ON (Transact-SQL)

ANSI_NULL_DEFAULT

user options 指派預設值

OFF

SET ANSI_NULLS (Transact-SQL)

ANSI_NULLS

user options 指派預設值

OFF

SET ANSI_PADDING (Transact-SQL)

ANSI_PADDING

user options 指派預設值

ON

SET ANSI_WARNINGS (Transact-SQL)

ANSI_WARNINGS

user options 指派預設值

OFF

SET ARITHABORT (Transact-SQL)

ARITHABORT

user options 指派預設值

OFF

SET ARITHIGNORE (Transact-SQL)

user options 指派預設值

OFF

SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)

CONCAT_NULL_YIELDS_NULL

OFF

SET CONTEXT_INFO (Transact-SQL)

OFF

SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL)

CURSOR_CLOSE ON_COMMIT

user options 指派預設值

OFF

SET DATEFIRST (Transact-SQL)

7

SET DATEFORMAT (Transact-SQL)

mdy

SET DEADLOCK_PRIORITY (Transact-SQL)

NORMAL

SET FIPS_FLAGGER (Transact-SQL)

OFF

SET FMTONLY (Transact-SQL)

OFF

SET FORCEPLAN (Transact-SQL)

OFF

SET IDENTITY_INSERT (Transact-SQL)

 

OFF

SET IMPLICIT_TRANSACTIONS (Transact-SQL)

user options 指派預設值

OFF

SET LANGUAGE (Transact-SQL)

us_english

SET LOCK_TIMEOUT (Transact-SQL)

沒有限制

SET NOCOUNT (Transact-SQL)

user options 指派預設值

OFF

SET NOEXEC (Transact-SQL)

OFF

SET NUMERIC_ROUNDABORT (Transact-SQL)

NUMERIC_ROUNDABORT

OFF

SET OFFSETS (Transact-SQL)

OFF

SET PARSEONLY (Transact-SQL)

OFF

SET QUERY_GOVERNOR_COST_LIMIT (Transact-SQL)

query governor cost limit

OFF

SET QUOTED_IDENTIFIER (Transact-SQL)

quoted identifier

user options 指派預設值

OFF

SET REMOTE_PROC_TRANSACTIONS (Transact-SQL)

OFF

SET ROWCOUNT (Transact-SQL)

OFF

SET SHOWPLAN_ALL (Transact-SQL)

OFF

SET SHOWPLAN_TEXT (Transact-SQL)

OFF

SET SHOWPLAN_XML (Transact-SQL)

OFF

SET STATISTICS IO (Transact-SQL)

OFF

SET STATISTICS PROFILE (Transact-SQL)

OFF

SET STATISTICS TIME (Transact-SQL)

OFF

SET STATISTICS XML (Transact-SQL)

OFF

SET TEXTSIZE (Transact-SQL)

OFF

SET TRANSACTION ISOLATION LEVEL (Transact-SQL)

N/A

SET XACT_ABORT (Transact-SQL)

OFF

剖析時期與執行時期的 SET 選項

SET 選項是否生效,取決於選項究竟屬於剖析時期 (Parse-time) 或執行時期 (Execute-time) 選項。剖析時期選項會在剖析時生效,因為選項是出現在文字中,與流程控制陳述式無關。執行時期選項會在它們被指定的程式碼執行時生效。如果在執行 SET 陳述式之前執行作業失敗,表示未設定選項。如果執行作業在執行過 SET 陳述式後失敗,表示已設定選項。

QUOTED_IDENTIFIER、PARSEONLY、OFFSETS 與 FIPS_FLAGGER 選項均屬於剖析時期選項。其他所有的 SET 選項則為執行時期選項。

在批次或預存程序中所發生的 SET QUOTED_IDENTIFIER 與 SET ANSI_NULLS 陳述式,不會影響批次或預存程序。相反的,用於批次或預存程序內的陳述式之設定,則會在建立批次或預存程序時生效。

SET 選項的期間

這一節會介紹 SET 選項的期間。

  • 使用者在指令碼中設定的 SET 選項,在重設或使用者於伺服器的工作階段終止之前都適用。

  • 在預存程序或觸發程序中設定的 SET 選項,在預存程序或觸發程序內重設,或控制傳回叫用預存程序或觸發程序的程式碼之前都適用。

  • 啟用 MARS 的連接會維護預設 SET 選項值的清單。在該連接下執行某個批次時,會將預設 SET 選項值複製到要求的環境。批次結束後,會將環境複製回工作階段的預設值。使用這種方式,多個在相同連接下同時執行的批次,會在隔離 SET 選項環境下執行。

    [!附註]

    在已啟用 MARS 的連接下,如果有多個批次同時執行,若它們修改批次執行環境,則該連接所產生的預設環境將視完成執行的最後一個批次而定。

  • 除非明確重設,否則所有高層級程式碼的 SET 選項值均適用於預存程序或觸發程序。

  • 使用者在動態 SQL 批次內設定的 SET 選項,只適用於該批次的持續時間。

  • 除非已明確或隱含重設,否則對連接所設定的 SET 選項將在連接到不同資料庫之後才套用。

    [!附註]

    另外需要注意的一點是,當使用者連接到資料庫時,有些選項會自動設定為 ON,因為這是先前使用的 user options 伺服器選項所指定的值,或套用到所有 ODBC 與 OLE DB 連接的值。

捷徑 SET 選項

Transact-SQL 提供 SET ANSI_DEFAULTS 陳述式作為設定以下這些 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

捷徑會重設這些選項的值。任何在使用捷徑之後設定的個別選項,都會覆寫捷徑所設定的對應值。

[!附註]

SET ANSI_DEFAULTS 不會設定所有符合 ISO 標準所需的選項。