首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server SET 命令完全指南:會話行為控制、效能調校與相容性切換的核心開關

     編輯:關於SqlServer

前言

SET 命令控制目前會話的行為選項,影響查詢語意、效能、錯誤處理與相容性。掌握關鍵 SET 選項是 T-SQL 開發者的必修課。

核心 SET 選項分類總覽

分類選項預設值影響範圍與說明
ANSI 標準相容ANSI_NULLSONON 時 = NULL 為 FALSE,需用 IS NULL;建立索引檢視/計算欄索引/篩選索引必須 ON
ANSI_PADDINGON控制 char/varchar/binary/varbinary 尾端空白/零填補;建立索引必須 ON
ANSI_WARNINGSON截斷、除零、算術溢位是否報錯;建立索引必須 ON
ANSI_NULL_DFLT_ON / OFFON未指定 NULL/NOT NULL 時預設可為 NULL
QUOTED_IDENTIFIERON雙引號識別碼、單引號字串;建立索引檢視/計算欄索引/篩選索引/XML 索引必須 ON
CONCAT_NULL_YIELDS_NULLONNULL + 'str' 結果為 NULL;未來版本將永遠 ON
數值運算ARITHABORTON查詢最佳化器相依;除零/溢位中止批次;建立索引必須 ON
ARITHIGNOREOFF忽略溢位/除零錯誤(不推薦)
NUMERIC_ROUNDABORTOFF精度遺失是否報錯;建立索引必須 OFF
FIRE_TRIGGERSON是否觸發觸發器(僅限 sa / db_owner)
查詢執行NOCOUNTOFFON 時不回傳「受影響資料列數」訊息,大幅減少網路往返,ADO/.NET 必開
ROWCOUNT0 (無限制)限制後續陳述式影響/回傳最大列數
TEXTSIZE2147483647text/ntext/image 最大回傳位元組數
FORCEPLANOFF強制依 FROM 表順序聯結(極少用)
STATISTICS IO / TIME / PROFILE / XMLOFF效能分析輸出開關
游標與交易CURSOR_CLOSE_ON_COMMITOFFON 時 COMMIT/ROLLBACK 自動關閉游標
IMPLICIT_TRANSACTIONSOFFON 時自動開啟交易(ANSI 模式)
XACT_ABORTOFFON 時執行錯誤自動回滾整個交易(強烈建議 ON)
REMOTE_PROC_TRANSACTIONSON遠端預存程序是否列入本地交易
日期與語言DATEFIRST7 (美式/週日)每週第一天 (1=週一..7=週日)
DATEFORMATmdy日期解析順序 (mdy/dmy/ymd 等)
LANGUAGEus_english系統訊息、日期名稱語言

必開/必關鐵律(生產環境建議基準)

  • ✅ 必開: ANSI_NULLS ON、QUOTED_IDENTIFIER ON、ANSI_PADDING ON、ANSI_WARNINGS ON、ARITHABORT ON、CONCAT_NULL_YIELDS_NULL ON、NOCOUNT ON、XACT_ABORT ON、NUMERIC_ROUNDABORT OFF
  • ❌ 必關: IMPLICIT_TRANSACTIONS OFF、ARITHIGNORE OFF、FORCEPLAN OFF

關鍵選項深度解析

NOCOUNT ON —— 效能倍增器

每個 SELECT/INSERT/UPDATE/DELETE 預設回傳「(N row(s) affected)」。高頻呼叫預存程序時,關閉此訊息可減少 5-10% 網路開銷與用戶端處理。

XACT_ABORT ON —— 交易安全網

執行階段錯誤(如主鍵衝突、轉換失敗、逾時)自動回滾整個交易,避免部分提交導致資料不一致。配合 TRY...CATCH 使用最佳。

ARITHABORT ON —— 最佳化器關鍵

查詢最佳化器假設此選項 ON 產生計畫。若連線層級 OFF,可能產生次佳計畫導致效能劇降。連線字串建議明確指定。

圖表參考

SET 選項 1 SET 選項 2 SET 選項 3 SET 選項 4 SET 選項 5 SET 選項 6

結語

SET 選項不只是開關,更是查詢語意契約。建立連線時明確設定基準組合、預存程序開頭重申關鍵選項、避免隱性相依,是穩定高效 T-SQL 的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved