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

SQL Server 全域變數完整參考手冊

     編輯:關於SqlServer

什麼是全域變數?

SQL Server 提供超過 30 個系統全域變數(以 @@ 開頭),這些變數由系統自動維護,反映伺服器狀態、連線資訊、錯誤代碼等運行時資訊。開發者無法宣告或修改它們,只能讀取。善用這些變數能大幅簡化錯誤處理、效能監控與動態 SQL 撰寫。

高頻核心變數速查表

變數說明典型應用場景
@@IDENTITY返回最後插入資料列的識別欄位值INSERT 後立即取得自增主鍵值
@@ERROR最後一條 T-SQL 語句的錯誤代碼(無錯誤為 0)舊版錯誤處理、TRY...CATCH 外的錯誤檢測
@@ROWCOUNT上一條語句影響的資料列數判斷 UPDATE/DELETE 是否真正修改資料、分頁查詢總筆數
@@DBTS目前資料庫的時間戳值(保證唯一)樂觀鎖實作、資料版本控制
@@TRANCOUNT目前連線中作用中交易數巢狀交易檢查、交易平衡驗證

伺服器與連線資訊類

  • @@SERVERNAME:本地 SQL Server 實例名稱
  • @@REMSERVER:遠端伺服器名稱(登錄記錄中)
  • @@CONNECTIONS:啟動以來連線/嘗試連線總數
  • @@SPID:目前處理序 ID(可用於鎖定分析)
  • @@VERSION:版本、處理器架構、建置日期完整資訊

效能與資源監控類

  • @@CPU_BUSY、@@IDLE、@@IO_BUSY:CPU 忙碌/閒置/IO 時間(毫秒)
  • @@PACK_RECEIVED、@@PACK_SENT、@@PACKET_ERRORS:網路封包統計
  • @@TOTAL_READ、@@TOTAL_WRITE、@@TOTAL_ERRORS:磁碟 IO 統計

語言與環境設定類

  • @@LANGID / @@LANGUAGE:目前語言 ID 與名稱
  • @@DATEFIRST:每週第一天設定(1=週一...7=週日)
  • @@LOCK_TIMEOUT:目前工作階段鎖等待逾時(毫秒,-1 表無限等待)
  • @@TEXTSIZE:text/image 資料型別最大回傳長度

進階開發相關變數

  • @@NESTLEVEL:目前預存程序巢狀層級(初始 0)
  • @@PROCID:目前執行預存程序的物件 ID
  • @@CURSOR_ROWS:最後開啟游標的合格資料列數
  • @@FETCH_STATUS:最後 FETCH 狀態(0=成功,-1=失敗,-2=資料列遺漏)
  • @@OPTIONS:目前 SET 選項位元遮罩
  • @@MAX_CONNECTIONS、@@MAX_PRECISION:最大連線數、decimal/numeric 最大精確度

實戰範例:動態取得版本資訊與連線數

-- 快速檢視伺服器版本與目前連線數
SELECT 
    @@VERSION AS ServerVersion,
    @@CONNECTIONS AS TotalConnectionsSinceStartup,
    @@SPID AS CurrentSPID;

最佳實務提醒

  1. 勿混淆 @@IDENTITY、SCOPE_IDENTITY()、IDENT_CURRENT():觸發器插入會導致 @@IDENTITY 返回觸發器產生的識別值,建議優先使用 SCOPE_IDENTITY()
  2. @@ERROR 在下一條語句執行後即重置,必須立即捕獲或搭配 TRY...CATCH
  3. 效能計數器類變數(@@CPU_BUSY 等)為累積值,適合做差分分析而非絕對值參考
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved