SET 選項
下表提供按字母順序排列的清單,內含 MicrosoftSQL Server 中所支援的 SET 選項和對應的資料庫與伺服器選項。
SET 選項 |
資料庫選項 |
伺服器選項 |
預設值 |
---|---|---|---|
無 |
無 |
不適用 |
|
ANSI_NULL_DEFAULT |
由 user options 指派預設值 |
OFF |
|
ANSI_NULLS |
由 user options 指派預設值 |
OFF |
|
ANSI_PADDING |
由 user options 指派預設值 |
ON |
|
ANSI_WARNINGS |
由 user options 指派預設值 |
OFF |
|
ARITHABORT |
由 user options 指派預設值 |
OFF |
|
無 |
由 user options 指派預設值 |
OFF |
|
CONCAT_NULL_YIELDS_NULL |
無 |
OFF |
|
無 |
無 |
OFF |
|
CURSOR_CLOSE ON_COMMIT |
由 user options 指派預設值 |
OFF |
|
無 |
無 |
7 |
|
無 |
無 |
mdy |
|
無 |
無 |
NORMAL |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
|
OFF |
|
無 |
由 user options 指派預設值 |
OFF |
|
無 |
無 |
us_english |
|
無 |
無 |
沒有限制 |
|
無 |
由 user options 指派預設值 |
OFF |
|
無 |
無 |
OFF |
|
NUMERIC_ROUNDABORT |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
query governor cost limit |
OFF |
|
quoted identifier |
由 user options 指派預設值 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
OFF |
|
無 |
無 |
N/A |
|
無 |
無 |
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 標準所需的選項。