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

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

     編輯:關於SqlServer

什麼是全域變數?

SQL Server 2000 提供一組以 @@ 為前綴的系統全域變數,由伺服器自動維護,提供系統狀態、環境資訊、效能計數等關鍵資訊。唯讀(少數可透過 SET 指令間接影響),不可由使用者直接賦值。

分類詳細列表

連線與工作階段資訊

變數說明
@@CONNECTIONS啟動以來嘗試連線總數
@@MAX_CONNECTIONS允許最大同時連線數
@@SPID目前工作階段的伺服器處理序 ID
@@REMSERVER遠端伺服器名稱

錯誤與診斷

變數說明
@@ERROR上一條 T-SQL 陳述式錯誤碼(0=成功)
@@FETCH_STATUS上一個 FETCH 陳述式狀態(0=成功,-1=失敗,-2=資料列遺失)
@@ROWCOUNT上一陳述式影響的資料列數
@@TRANCOUNT目前連線中作用中交易數

身分識別與版本

變數說明
@@IDENTITY最後插入資料列的身分識別欄位值(跨表、觸發器皆影響)
@@VERSIONSQL Server 版本、處理器、建置日期資訊
@@SERVERNAME本地伺服器名稱
@@SERVICENAME服務名稱(如 MSSQLSERVER、MSSQL$InstanceName)

效能與資源監控

變數說明
@@CPU_BUSYCPU 忙碌時間(毫秒,啟動以來累計)
@@IDLECPU 閒置時間(毫秒)
@@IO_BUSYCPU 執行 I/O 操作時間(毫秒)
@@PACK_RECEIVED網路接收封包數
@@PACK_SENT網路發送封包數
@@PACKET_ERRORS網路封包錯誤數
@@TOTAL_READ磁碟讀取作業數
@@TOTAL_WRITE磁碟寫入作業數
@@TOTAL_ERRORS磁碟讀寫錯誤總數

環境與設定

變數說明
@@DATEFIRST週首日設定(1=星期一,7=星期日),受 SET DATEFIRST 影響
@@LANGID目前語言 ID
@@LANGUAGE目前語言名稱
@@LOCK_TIMEOUT目前工作階段鎖等待逾時(毫秒,-1=無限等待)
@@MAX_PRECISIONdecimal/numeric 最大精確度(38)
@@NESTLEVEL目前預存程序巢狀層級(初始 0)
@@OPTIONS目前 SET 選項位元遮罩
@@TEXTSIZEtext/image 最大回傳長度(位元組),受 SET TEXTSIZE 影響
@@TIMETICKS每個時鐘滴答的微秒數

資料庫內部

變數說明
@@DBTS目前資料庫時間戳記值(timestamp 型別保證唯一)
@@PROCID目前預存程序物件 ID
@@CURSOR_ROWS開啟游標中未讀取的合格資料列數

實務應用範例

1. 捕捉錯誤並記錄

BEGIN TRY
    -- 高風險操作
    UPDATE Accounts SET Balance = Balance - 100 WHERE ID = 1;
END TRY
BEGIN CATCH
    INSERT INTO ErrorLog (ErrorNumber, ErrorMessage, ErrorTime)
    VALUES (@@ERROR, ERROR_MESSAGE(), GETDATE());
END CATCH;

2. 取得剛插入記錄的 ID(單一資料表、無觸發器場景)

INSERT INTO Orders (CustomerID, OrderDate) VALUES ('ALFKI', GETDATE());
DECLARE @NewOrderID INT = @@IDENTITY;
-- 建議改用 SCOPE_IDENTITY() 避免觸發器干擾

3. 監控伺服器負載

SELECT 
    @@CONNECTIONS AS TotalConnections,
    @@CPU_BUSY / 1000.0 AS CPU_Busy_Sec,
    @@IO_BUSY / 1000.0 AS IO_Busy_Sec,
    @@IDLE / 1000.0 AS Idle_Sec;

重要提醒

  • @@IDENTITY 陷阱: 觸發器插入其他表也會改變其值,請改用 SCOPE_IDENTITY() 或 IDENT_CURRENT('table')
  • @@ROWCOUNT 易失性: 任何陳述式(含 IF、PRINT)都會重置,必須緊接在目標陳述式後捕捉
  • 累計計數器: @@CPU_BUSY 等為啟動以來累計,需定期取樣計算速率才有意義
  • 版本差異: 新版本 (2005+) 新增許多動態管理檢視 (DMV) 取代部分全域變數功能

善用全域變數能在除錯、監控、審計等場景事半功倍,是 DBA 與開發人員的必備工具箱。

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