Transact-SQL 系統變數

iSQlServer發表於2009-07-14

@@CONNECTIONS

返回自上次啟動 Microsoft? SQL Server? 以來連線或試圖連線的次數。

語法

@@CONNECTIONS


返回型別

integer


註釋

連線與使用者不同。例如,應用程式可以開啟多個與 SQL Server 的連線,而不需要使用者監視這些連線。


若要顯示一個包含幾個 SQL Server 統計資訊的報表,包括試圖連線統計資訊,請執行 sp_monitor


示例

下面的示例顯示了到當前日期和時間為止試圖登入的次數。

SELECT GETDATE() AS 'Today's Date and Time', 
  @@CONNECTIONS AS 'Login Attempts'

下面是結果集:

Today's Date and Time              Login Attempts
---------------------------     ---------------
1998-04-09 14:28:46.940         18

?

@@CPU_BUSY

返回自上次啟動 Microsoft? SQL Server? 以來 CPU 的工作時間,單位為毫秒(基於系統計時器的解析度)。

語法

@@CPU_BUSY

返回型別

integer

註釋

若要顯示包含幾個 SQL Server 統計資訊的報表,包括 CPU 活動統計資訊,請執行 sp_monitor

示例

下面的示例顯示了到當前日期和時間為止 SQL Server CPU 的活動。

SELECT @@CPU_BUSY AS 'CPU ms', GETDATE() AS 'As of'

下面是結果集:

CPU ms               As of
-----------------   ---------------------------
20             1998-04-18 14:43:08.180
?
?

@@CURSOR_ROWS

返回連線上最後開啟的遊標中當前存在的合格行的數量。為提高效能,Microsoft? SQL Server? 可以非同步填充大鍵集和靜態遊標。可呼叫 @@CURSOR_ROWS,以確定當它被呼叫時,符合遊標的行的數目被進行了檢索。

返回值描述
-m遊標被非同步填充。返回值 (-m) 是鍵集中當前的行數。
-1遊標為動態。因為動態遊標可反映所有更改,所以符合遊標的行數不斷變化。因而永遠不能確定地說所有符合條件的行均已檢索到。
0沒有被開啟的遊標,沒有符合最後開啟的遊標的行,或最後開啟的遊標已被關閉或被釋放。
n遊標已完全填充。返回值 (n) 是在遊標中的總行數。

語法

@@CURSOR_ROWS

返回型別

integer

註釋

若最後開啟的遊標是非同步開啟的,則 @@CURSOR_ROWS 返回的值是負數。若 sp_configure cursor threshold 的值大於0,則鍵集驅動程式或靜態遊標被非同步開啟,且遊標結果集中的行數大於遊標閾值。

示例

下面的示例宣告瞭一個遊標,並且用 SELECT 顯示 @@CURSOR_ROWS 的值。在遊標開啟前,設定值為 0,值 -1 則表示遊標鍵集被非同步填充。

SELECT @@CURSOR_ROWS
DECLARE authors_cursor CURSOR FOR
SELECT au_lname FROM authors
OPEN authors_cursor
FETCH NEXT FROM authors_cursor
SELECT @@CURSOR_ROWS
CLOSE authors_cursor
DEALLOCATE authors_cursor

-----------
0      

(1 row(s) affected)

au_lname                      
----------------------------------------
White                        

(1 row(s) affected)

       
-----------
-1      

(1 row(s) affected)
?
?

@@DATEFIRST

返回 SET DATEFIRST 引數的當前值,SET DATEFIRST 引數指明所規定的每週第一天:1 對應星期一,2 對應星期二,依次類推,用 7 對應星期日。

語法

@@DATEFIRST

返回型別

tinyint

註釋

美國英語中預設 7 對應星期日。

示例

下面的示例將每週第一天設為 5 (星期五),並假定當日是星期六。SELECT 語句返回 DATEFIRST 值和當日是此周的第幾天。

SET DATEFIRST 5
SELECT @@DATEFIRST AS '1st Day', DATEPART(dw, GETDATE()) AS 'Today'

下面是結果集。從星期五算起,今天(星期六)是第二天。

1st Day           Today
---------------- --------------
5           2
?
?
?

@@DBTS

為當前資料庫返回當前 timestamp 資料型別的值。這一 timestamp 值保證在資料庫中是唯一的。

語法

@@DBTS

返回型別

varbinary

註釋

@@DBTS 返回當前資料庫最後所使用的時間戳值。當帶有 timestamp 列的一行被插入或更新時,會產生一個新的時間戳值。

示例

下面的示例從 pubs 資料庫返回當前的 timestamp 值。

USE pubs
SELECT @@DBTS
?
?
?

@@ERROR

返回最後執行的 Transact-SQL 語句的錯誤程式碼。

語法

@@ERROR

返回型別

integer

註釋

當 Microsoft? SQL Server? 完成 Transact-SQL 語句的執行時,如果語句執行成功,則 @@ERROR 設定為 0。若出現一個錯誤,則返回一條錯誤資訊。@@ERROR 返回此錯誤資訊程式碼,直到另一條 Transact-SQL 語句被執行。您可以在 sysmessages 系統表中檢視與 @@ERROR 錯誤程式碼相關的文字資訊。

由於 @@ERROR 在每一條語句執行後被清除並且重置,應在語句驗證後立即檢查它,或將其儲存到一個區域性變數中以備事後檢視。

示例 A.用 @@ERROR 檢測一個特定錯誤

下面的示例用 @@ERROR 在一個 UPDATE 語句中檢測限制檢查衝突(錯誤 #547)。

USE pubs
GO
UPDATE authors SET au_id = '172 32 1176'
WHERE au_id = "172-32-1176"

IF @@ERROR = 547
  print "A check constraint violation occurred"
B.用 @@ERROR 有條件地退出一個過程

在此示例中,IF...ELSE 語句在儲存過程中的 INSERT 語句後檢測 @@ERROR。@@ERROR 變數的值將決定傳給呼叫程式的返回值,以指示此過程的成功與失敗。

USE pubs
GO

-- Create the procedure.
CREATE PROCEDURE add_author
@au_id varchar(11),@au_lname varchar(40),
@au_fname varchar(20),@phone char(12),
@address varchar(40) = NULL,@city varchar(20) = NULL,
@state char(2) = NULL,@zip char(5) = NULL,
@contract bit = NULL
AS

-- Execute the INSERT statement.
INSERT INTO authors
(au_id, au_lname, au_fname, phone, address,
city, state, zip, contract) values
(@au_id,@au_lname,@au_fname,@phone,@address,
@city,@state,@zip,@contract)

-- Test the error value.
IF @@ERROR <> 0
BEGIN
  -- Return 99 to the calling program to indicate failure.
  PRINT "An error occurred loading the new author information"
  RETURN(99)
END
ELSE
BEGIN
  -- Return 0 to the calling program to indicate success.
  PRINT "The new author information has been loaded"
  RETURN(0)
END
GO
C.用 @@ERROR 檢測幾條語句的成功

下面的示例取決於 INSERT 和 DELETE 語句的成功操作。區域性變數在兩條語句後均被設定為 @@ERROR 的值,並且用於此操作的共享錯誤處理例程中。

USE pubs
GO
DECLARE @del_error int, @ins_error int
-- Start a transaction.
BEGIN TRAN

-- Execute the DELETE statement.
DELETE authors
WHERE au_id = '409-56-7088'

-- Set a variable to the error value for
-- the DELETE statement.
SELECT @del_error = @@ERROR

-- Execute the INSERT statement.
INSERT authors
  VALUES('409-56-7008', 'Bennet', 'Abraham', '415 658-9932',
  '6223 Bateman St.', 'Berkeley', 'CA', '94705', 1)
-- Set a variable to the error value for
-- the INSERT statement.
SELECT @ins_error = @@ERROR

-- Test the error values.
IF @del_error = 0 AND @ins_error = 0
BEGIN
  -- Success. Commit the transaction.
  PRINT "The author information has been replaced"  
  COMMIT TRAN
END
ELSE
BEGIN
  -- An error occurred. Indicate which operation(s) failed
  -- and roll back the transaction.
  IF @del_error <> 0
    PRINT "An error occurred during execution of the DELETE
    statement."

  IF @ins_error <> 0
    PRINT "An error occurred during execution of the INSERT
    statement."

  ROLLBACK TRAN
END
GO
D. 與 @@ROWCOUNT 一同使用 @@ERROR

下面的示例用 @@ERROR 和 @@ROWCOUNT 驗證一條 UPDATE 語句的操作。為任何可能出現的錯誤而檢驗 @@ERROR 的值,而用 @@ROWCOUNT 保證更新已成功應用於表中的某行。

USE pubs
GO
CREATE PROCEDURE change_publisher
@title_id tid,
@new_pub_id char(4)
AS

-- Declare variables used in error checking.
DECLARE @error_var int, @rowcount_var int

-- Execute the UPDATE statement.
UPDATE titles SET pub_id = @new_pub_id
WHERE title_id = @title_id

-- Save the @@ERROR and @@ROWCOUNT values in local
-- variables before they are cleared.
SELECT @error_var = @@ERROR, @rowcount_var = @@ROWCOUNT

-- Check for errors. If an invalid @new_pub_id was specified
-- the UPDATE statement returns a foreign-key violation error #547.
IF @error_var <> 0
BEGIN
  IF @error_var = 547
  BEGIN
    PRINT "ERROR: Invalid ID specified for new publisher"
    RETURN(1)
  END
  ELSE
  BEGIN
    PRINT "ERROR: Unhandled error occurred"
    RETURN(2)
  END
END

-- Check the rowcount. @rowcount_var is set to 0
-- if an invalid @title_id was specified.
IF @rowcount_var = 0
BEGIN
  PRINT "Warning: The title_id specified is not valid"
  RETURN(1)
END
ELSE
BEGIN
  PRINT "The book has been updated with the new publisher"
  RETURN(0)
END
GO

@@FETCH_STATUS

返回被 FETCH 語句執行的最後遊標的狀態,而不是任何當前被連線開啟的遊標的狀態。

返回值描述
0FETCH 語句成功。
-1FETCH 語句失敗或此行不在結果集中。
-2被提取的行不存在。

語法

@@FETCH_STATUS

返回型別

integer

註釋

由於 @@FETCH_STATUS 對於在一個連線上的所有遊標是全域性性的,要小心使用 @@FETCH_STATUS 。在執行一條 FETCH 語句後,必須在對另一遊標執行另一 FETCH 語句前測試 @@FETCH_STATUS 。在任何提取操作出現在此連線上前,@@FETCH_STATUS 的值沒有定義。

例如,使用者從一個遊標執行一條 FETCH 語句,然後呼叫一個儲存過程,此儲存過程開啟並處理另一個遊標的結果。當控制從被呼叫的儲存過程返回後,@@FETCH_STATUS 反映的是在儲存過程中執行的最後的 FETCH 語句的結果,而不是在儲存過程被呼叫之前的 FETCH 語句的結果。

示例

下面的示例用 @@FETCH_STATUS 控制在一個 WHILE 迴圈中的遊標活動。

DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName FROM Northwind.dbo.Employees
OPEN Employee_Cursor
FETCH NEXT FROM Employee_Cursor
WHILE @@FETCH_STATUS = 0
BEGIN
  FETCH NEXT FROM Employee_Cursor
END
CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor

@@IDENTITY

返回最後插入的標識值。

語法

@@IDENTITY

返回型別

numeric

註釋

在一條 INSERT、SELECT INTO 或大容量複製語句完成後,@@IDENTITY 中包含此語句產生的最後的標識值。若此語句沒有影響任何有標識列的表,則 @@IDENTITY 返回 NULL。若插入了多個行,則會產生多個標識值,@@IDENTITY 返回最後產生的標識值。如果此語句激發一個或多個執行產生標識值的插入操作的觸發器,則語句執行後立即呼叫 @@IDENTITY 將返回由觸發器產生的最後的標識值。若 INSERT 或 SELECT INTO 語句失敗或大容量複製失敗,或事務被回滾,則 @@IDENTITY 值不會還原為以前的設定。

在返回插入到表的 @@IDENTITY 列的最後一個值方面,@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 函式類似。

@@IDENTITY 和 SCOPE_IDENTITY 將返回在當前會話的所有表中生成的最後一個標識值。但是,SCOPE_IDENTITY 只在當前作用域內返回值,而 @@IDENTITY 不限於特定的作用域。

IDENT_CURRENT 不受作用域和會話的限制,而受限於指定的表。IDENT_CURRENT 返回任何會話和任何作用域中為特定表生成的標識值。有關更多資訊,請參見 IDENT_CURRENT

示例

下面的示例向帶有標識列的表中插入一行,並用 @@IDENTITY 顯示在新行中使用的標識值。

INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'

@@IDLE

返回 Microsoft? SQL Server? 自上次啟動後閒置的時間,單位為毫秒(基於系統計時器的解析度)。

語法

@@IDLE

返回型別

integer

註釋

若要顯示包含幾個 SQL Server 統計資訊的報表,可執行 sp_monitor

示例

下面的示例顯示 SQL Server 自啟動到當前時間閒置的毫秒數。

SELECT @@IDLE AS 'Idle ms', GETDATE() AS 'As of'

下面是結果集:

Idle Ms              As of
-----------------   ---------------------------
277593           1998-04-18 16:41:07.160

@@IO_BUSY

返回 Microsoft? SQL Server? 自上次啟動後用於執行輸入和輸出操作的時間,單位為毫秒(基於系統計時器的解析度)。

語法

@@IO_BUSY

返回型別

integer

註釋

若要顯示包含幾個 SQL Server 統計資訊的報表,可執行 sp_monitor

示例

下面的示例顯示 SQL Server 自啟動到目前已用於執行輸入/輸出操作的毫秒數。

SELECT @@IO_BUSY AS 'IO ms', GETDATE() AS 'As of'

下面是結果集:

IO ms                As of
------------------   -----------------------------
31             1998-04-18 16:49:49.650

@@LANGID

返回當前所使用語言的本地語言識別符號(ID)。

語法

@@LANGID

返回型別

smallint

註釋

若要檢視語言設定資訊(包括語言 ID 號),可不帶引數執行 sp_helplanguage

示例

下面的示例將當前會話的語言設定為義大利語 (Italian),然後用 @@LANGID 返回義大利語的 ID。

SET LANGUAGE 'Italian'
SELECT @@LANGID AS 'Language ID'

下面是結果集:

Language ID
--------------------
6

@@LANGUAGE

返回當前使用的語言名。

語法

@@LANGUAGE

返回型別

nvarchar

註釋

若要檢視語言設定資訊(包括合法的官方語言名),可不帶引數執行 sp_helplanguage

示例

下面的示例返回當前會話的語言。

SELECT @@LANGUAGE AS 'Language Name'

下面是結果集:

Language Name
-----------------------------
us_english

@@LOCK_TIMEOUT

返回當前會話的當前鎖超時設定,單位為毫秒。

語法

@@LOCK_TIMEOUT

返回型別

integer

註釋

SET LOCK_TIMEOUT 允許應用程式設定語句等待阻塞資源的最長時間。當一條語句已等待超過 LOCK_TIMEOUT所設定的時間,則被鎖住的語句將自動取消,並給應用程式返回一條錯誤資訊。

在一個連線的開始,@@LOCK_TIMEOUT 返回一個 –1值。

示例

下面的示例顯示當一個 LOCK_TIMEOUT 值未被設定時的結果集。

SELECT @@LOCK_TIMEOUT

下面是結果集:

----------------
-1

下面的示例設定 LOCK_TIMEOUT 為 1800 毫秒,然後呼叫 @@LOCK_TIMEOUT。

SET LOCK_TIMEOUT 1800
SELECT @@LOCK_TIMEOUT

下面是結果集:

------------------------------
1800

@@MAX_CONNECTIONS

返回 Microsoft? SQL Server? 上允許的同時使用者連線的最大數。返回的數不必為當前配置的數值。

語法

@@MAX_CONNECTIONS

返回型別

integer

註釋

實際允許的使用者連線數也依賴於所安裝 SQL Server 的版本以及應用程式和硬體的限制。

若要將 SQL Server 重新配置為更少的連線,應使用 sp_configure

示例

下面的示例假定 SQL Server 尚未被重新配置更少的使用者連線。

SELECT @@MAX_CONNECTIONS

下面是結果集:

------------------
32767

@@MAX_PRECISION

返回 decimal numeric 資料型別所用的精度級別,即該伺服器中當前設定的精度。

語法

@@MAX_PRECISION

返回型別

tinyint

註釋

預設情況下,最大精度返回 38。

示例
SELECT @@MAX_PRECISION

@@NESTLEVEL

返回當前儲存過程執行的巢狀層次(初始值為 0)。

語法

@@NESTLEVEL

返回型別

integer

註釋

每當一個儲存過程呼叫另一個儲存過程時,巢狀層次即進行遞增。超過最大層數 32 時,事務即被終止。

示例

下面的示例建立兩個過程:其中一個過程呼叫另一個過程,每個過程都顯示自身的 @@NESTLEVEL 設定值。

CREATE PROCEDURE innerproc as 
select @@NESTLEVEL AS 'Inner Level'
GO

CREATE PROCEDURE outerproc as
select @@NESTLEVEL AS 'Outer Level'
EXEC innerproc
GO

EXECUTE outerproc
GO

下面是結果集:

Outer Level 
-----------------
1          

Inner Level
-----------------
2          

@@OPTIONS

返回當前 SET 選項的資訊。

語法

@@OPTIONS

返回型別

integer

註釋

可以用"sp_configure 使用者選項"配置選項統一修改 SET 選項。每個使用者有一個 @@OPTIONS 函式代表其配置環境。從第一次登入開始,系統管理員即為所有的使用者分配一個預設的配置設定。

可以用 SET 語句更改語言和查詢處理選項。

示例

下面的示例設定 NOCOUNT ON 選項,然後檢測 @@OPTIONS 的值。NOCOUNT ON 選項可防止將會話中每一條語句所影響的行數訊息發回給請求的客戶機。@@OPTIONS 的值被設定為 512 (0x0200),代表 NOCOUNT 選項。下面的示例檢測客戶端是否啟用了 NOCOUNT 選項。例如,它有助於跟蹤客戶端的效能差異。

SET NOCOUNT ON
IF @@OPTIONS & 512 > 0
  RAISERROR ('Current user has SET NOCOUNT turned on.',1,1)

@@PACK_RECEIVED

返回 Microsoft? SQL Server? 自上次啟動後從網路上讀取的輸入資料包數目。

語法

@@PACK_RECEIVED

返回型別

integer

註釋

若要顯示包含幾個 SQL Server 統計資訊的報表,其中包括髮送和接收資料包的資訊,可執行 sp_monitor

示例
SELECT @@PACK_RECEIVED

@@PACK_SENT

返回 Microsoft? SQL Server? 自上次啟動後寫到網路上的輸出資料包數目。

語法

@@PACK_SENT

返回型別

integer

註釋

若要顯示包含幾個 SQL Server 統計資訊的報表,其中包括髮送和接收資料包的資訊,可執行 sp_monitor

示例
SELECT @@PACK_SENT

@@PACKET_ERRORS

返回自 SQL Server 上次啟動後,在 Microsoft? SQL Server? 連線上發生的網路資料包錯誤數。

語法

@@PACKET_ERRORS

返回型別

integer

註釋

若要顯示包含幾個 SQL Server 統計資訊的報表,包括資料包錯誤,可執行 sp_monitor

示例
SELECT @@PACKET_ERRORS

@@PROCID

返回當前過程的儲存過程識別符號 (ID) 。

語法

@@PROCID

返回型別

integer

示例

下面的示例建立了一個過程,在此過程內用 SELECT 顯示 @@PROCID 設定。

CREATE PROCEDURE testprocedure AS
SELECT @@PROCID AS 'ProcID'
GO
EXEC testprocedure
GO

@@REMSERVER

當遠端 Microsoft? SQL Server? 資料庫伺服器在登入記錄中出現時,返回它的名稱。

語法

@@REMSERVER

返回型別

nvarchar(256)

註釋

@@REMSERVER 使儲存過程可以檢視它在其上執行的資料庫伺服器名。

示例

下面的示例建立一個過程,名為 check_server,它返回遠端伺服器名。

CREATE PROCEDURE check_server
AS
SELECT @@REMSERVER

儲存過程建立在本地伺服器 SEATTLE1 上。使用者登入到遠端伺服器 LONDON2 上,然後執行 check_server

exec SEATTLE1...check_server

下面是結果集:

---------------
LONDON2

@@ROWCOUNT

返回受上一語句影響的行數。

語法

@@ROWCOUNT

返回型別

integer

註釋

任何不返回行的語句將這一變數設定為 0 ,如 IF 語句。

示例

下面的示例執行 UPDATE 語句並用 @@ROWCOUNT 來檢測是否有發生更改的行。

UPDATE authors SET au_lname = 'Jones'
WHERE au_id = '999-888-7777'
IF @@ROWCOUNT = 0
  print 'Warning: No rows were updated'

@@SERVERNAME

返回執行 Microsoft? SQL Server? 的本地伺服器名稱。

語法

@@SERVERNAME

返回型別

nvarchar

註釋

SQL Server 安裝程式在安裝時將伺服器名設定為計算機名。可通過使用 sp_addserver 然後重新啟動 SQL Server 來更改 @@SERVERNAME。不過,通常不需要這種方法。

當安裝有多個 SQL Server 例項時,如果本地伺服器名自安裝後未發生更改,則 @@SERVERNAME 返回以下本地伺服器名資訊。

例項伺服器資訊
預設例項'伺服器名'
命名例項'伺服器名\例項名'
虛擬伺服器 - 預設例項'虛擬伺服器名'
虛擬伺服器 - 命名例項'虛擬伺服器名\例項名'

儘管 @@SERVERNAME 函式和 SERVERPROPERTY 函式的 SERVERNAME 屬性可能返回相似格式的字串,但資訊會有所不同。SERVERNAME 屬性會自動報告計算機網路名的更改。

相比之下,@@SERVERNAME 不報告此更改。@@SERVERNAME 報告使用 sp_addserversp_dropserver 儲存過程對本地伺服器名所做的更改。

示例
SELECT @@SERVERNAME

@@SERVICENAME

返回 Microsoft? SQL Server? 正在其下執行的登錄檔鍵名。若當前例項為預設例項,則 @@SERVICENAME 返回 MSSQLServer;若當前例項是命名例項,則該函式返回例項名。

語法

@@SERVICENAME

返回型別

nvarchar

註釋

SQL Server 作為名為 MSSQLServer 的服務在 Microsoft Windows NT? 上執行。它不在 Windows? 95/98 上作為服務執行,因為該作業系統不支援服務。

示例
SELECT @@SERVICENAME

下面是結果集:

------------------------------ 
MSSQLServer

@@SPID

返回當前使用者程式的伺服器程式識別符號 (ID)。

語法

@@SPID

返回型別

smallint

註釋

@@SPID 可以在 sp_who 輸出結果中標識當前使用者程式。

示例

下面的示例返回當前使用者程式的程式 ID、登入名和使用者名稱。

SELECT @@SPID AS 'ID', SYSTEM_USER AS 'Login Name', USER AS 'User Name'

下面是結果集:

ID     Login Name       User Name  
----- -------------   -----------
11   sa           dbo    

@@TEXTSIZE

返回 SET 語句 TEXTSIZE 選項的當前值,它指定 SELECT 語句返回的 textimage 資料的最大長度,以位元組為單位。

語法

@@TEXTSIZE

返回型別

integer

註釋

預設大小是 4096 位元組。

示例

下面的示例用 SELECT 語句顯示用 SET TEXTSIZE 語句改變前後的 @@TEXTSIZE 值。

SELECT @@TEXTSIZE
SET TEXTSIZE 2048
SELECT @@TEXTSIZE

下面是結果集:

------------------------
64512

------------------------
2048

@@TIMETICKS

返回一刻度的微秒數。

語法

@@TIMETICKS

返回型別

integer

註釋

每一刻度的時間量依賴於計算機。作業系統的一刻度是 31.25 毫秒,或是三十分之一秒。

示例
SELECT @@TIMETICKS

@@TOTAL_ERRORS

返回 Microsoft? SQL Server? 自上次啟動後,所遇到的磁碟讀/寫錯誤數。

語法

@@TOTAL_ERRORS

返回型別

integer

註釋

若要顯示包含幾個 SQL Server 統計資訊的報表,包括錯誤總數資訊,可執行 sp_monitor

示例

下面的示例顯示了 SQL Server 到當前日期和時間為止所遇到的錯誤數。

SELECT @@TOTAL_ERRORS AS 'Errors', GETDATE() AS 'As of'

下面是結果集:

Errors         As of                          
-------     -------------------------------
0         1998-04-21 22:07:30.013    

@@TOTAL_READ

返回 Microsoft? SQL Server? 自上次啟動後讀取磁碟(不是讀取快取記憶體)的次數。

語法

@@TOTAL_READ

返回型別

integer

註釋

若要顯示包含幾個 SQL Server 統計資訊的報表,包括讀寫活動資訊,可執行 sp_monitor

示例

下面的示例顯示了到當前日期和時間為止的總的磁碟讀寫次數。

SELECT @@TOTAL_READ AS 'Reads', @@TOTAL_WRITE AS 'Writes', GETDATE() AS 'As of'

下面是結果集:

Reads       Writes        As of
---------   -----------   ------------------------------
978       124       1998-04-21 22:14:22.37

@@TOTAL_WRITE

返回 Microsoft? SQL Server? 自上次啟動後寫入磁碟的次數。

語法

@@TOTAL_WRITE

返回型別

integer

註釋

若要顯示包含幾個 SQL Server 統計資訊的報表,包括讀寫活動資訊,可執行 sp_monitor

示例

下面的示例顯示了到當前日期和時間為止總的磁碟讀寫次數。

SELECT @@TOTAL_READ AS 'Reads', @@TOTAL_WRITE AS 'Writes', GETDATE() AS 'As of'

下面是結果集:

Reads       Writes        As of
---------   -----------   ------------------------------
978       124       1998-04-21 22:14:22.37    

@@TRANCOUNT

返回當前連線的活動事務數。

語法

@@TRANCOUNT

返回型別

integer

註釋

BEGIN TRANSACTION 語句使 @@TRANCOUNT 遞增 1。ROLLBACK TRANSACTION 將 @@TRANCOUNT 遞減為 0,但 ROLLBACK TRANSACTION savepoint_name 語句並不影響 @@TRANCOUNT 值。COMMIT TRANSACTION 或 COMMIT WORK 將 @@TRANCOUNT 遞減 1。

示例

下面的示例用 @@TRANCOUNT 測試應該提交的開啟事務。

BEGIN TRANSACTION
UPDATE authors SET au_lname = upper(au_lname)
WHERE au_lname = 'White'
IF @@ROWCOUNT = 2
  COMMIT TRAN

IF @@TRANCOUNT > 0
BEGIN
  PRINT 'A transaction needs to be rolled back'
  ROLLBACK TRAN
END

@@VERSION

返回 Microsoft? SQL Server? 當前安裝的日期、版本和處理器型別。

語法

@@VERSION

返回型別

nvarchar

註釋

@@VERSION 返回的資訊與 xp_msver 儲存過程返回的產品名、版本、平臺和檔案資料相似,但 xp_msver 儲存過程提供更詳細的資訊。

示例

下面的示例返回當前安裝的日期、版本和處理器型別。

SELECT @@VERSION

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-609098/,如需轉載,請註明出處,否則將追究法律責任。

相關文章