返回自上次啟動 Microsoft? SQL Server? 以來連接或試圖連接的次數(shù)。
@@CONNECTIONS
integer
連接與用戶不同。例如,應(yīng)用程序可以打開多個與 SQL Server 的連接,而不需要用戶監(jiān)視這些連接。
若要顯示一個包含幾個 SQL Server 統(tǒng)計信息的報表,包括試圖連接統(tǒng)計信息,請運(yùn)行 sp_monitor。
下面的示例顯示了到當(dāng)前日期和時間為止試圖登錄的次數(shù)。
SELECT GETDATE() AS 'Today's Date and Time',
@@CONNECTIONS AS 'Login Attempts'
下面是結(jié)果集:
Today's Date and Time Login Attempts
--------------------------- ---------------
1998-04-09 14:28:46.940 18
?
@@CPU_BUSY
返回自上次啟動 Microsoft? SQL Server? 以來 CPU 的工作時間,單位為毫秒(基于系統(tǒng)計時器的分辨率)。
語法
@@CPU_BUSY
返回類型
integer
注釋
若要顯示包含幾個 SQL Server 統(tǒng)計信息的報表,包括 CPU 活動統(tǒng)計信息,請運(yùn)行 sp_monitor。
示例
下面的示例顯示了到當(dāng)前日期和時間為止 SQL Server CPU 的活動。
SELECT @@CPU_BUSY AS 'CPU ms', GETDATE() AS 'As of'
下面是結(jié)果集:
CPU ms As of
----------------- ---------------------------
20 1998-04-18 14:43:08.180
?
?
@@CURSOR_ROWS
返回連接上最后打開的游標(biāo)中當(dāng)前存在的合格行的數(shù)量。為提高性能,Microsoft? SQL Server? 可以異步填充大鍵集和靜態(tài)游標(biāo)。可調(diào)用 @@CURSOR_ROWS,以確定當(dāng)它被調(diào)用時,符合游標(biāo)的行的數(shù)目被進(jìn)行了檢索。
返回值 描述 -m 游標(biāo)被異步填充。返回值 (-m) 是鍵集中當(dāng)前的行數(shù)。 -1 游標(biāo)為動態(tài)。因為動態(tài)游標(biāo)可反映所有更改,所以符合游標(biāo)的行數(shù)不斷變化。因而永遠(yuǎn)不能確定地說所有符合條件的行均已檢索到。 0 沒有被打開的游標(biāo),沒有符合最后打開的游標(biāo)的行,或最后打開的游標(biāo)已被關(guān)閉或被釋放。 n 游標(biāo)已完全填充。返回值 (n) 是在游標(biāo)中的總行數(shù)。
語法
@@CURSOR_ROWS
返回類型
integer
注釋
若最后打開的游標(biāo)是異步打開的,則 @@CURSOR_ROWS 返回的值是負(fù)數(shù)。若 sp_configure cursor threshold 的值大于0,則鍵集驅(qū)動程序或靜態(tài)游標(biāo)被異步打開,且游標(biāo)結(jié)果集中的行數(shù)大于游標(biāo)閾值。
示例
下面的示例聲明了一個游標(biāo),并且用 SELECT 顯示 @@CURSOR_ROWS 的值。在游標(biāo)打開前,設(shè)置值為 0,值 -1 則表示游標(biāo)鍵集被異步填充。
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 參數(shù)的當(dāng)前值,SET DATEFIRST 參數(shù)指明所規(guī)定的每周第一天:1 對應(yīng)星期一,2 對應(yīng)星期二,依次類推,用 7 對應(yīng)星期日。
語法
@@DATEFIRST
返回類型
tinyint
注釋
美國英語中默認(rèn) 7 對應(yīng)星期日。
示例
下面的示例將每周第一天設(shè)為 5 (星期五),并假定當(dāng)日是星期六。SELECT 語句返回 DATEFIRST 值和當(dāng)日是此周的第幾天。
SET DATEFIRST 5
SELECT @@DATEFIRST AS '1st Day', DATEPART(dw, GETDATE()) AS 'Today'
下面是結(jié)果集。從星期五算起,今天(星期六)是第二天。
1st Day Today
---------------- --------------
5 2
?
?
?
@@DBTS
為當(dāng)前數(shù)據(jù)庫返回當(dāng)前 timestamp 數(shù)據(jù)類型的值。這一 timestamp 值保證在數(shù)據(jù)庫中是唯一的。
語法
@@DBTS
返回類型
varbinary
注釋
@@DBTS 返回當(dāng)前數(shù)據(jù)庫最后所使用的時間戳值。當(dāng)帶有 timestamp 列的一行被插入或更新時,會產(chǎn)生一個新的時間戳值。
示例
下面的示例從 pubs 數(shù)據(jù)庫返回當(dāng)前的 timestamp 值。
USE pubs
SELECT @@DBTS
?
?
?
@@ERROR
返回最后執(zhí)行的 Transact-SQL 語句的錯誤代碼。
語法
@@ERROR
返回類型
integer
注釋
當(dāng) Microsoft? SQL Server? 完成 Transact-SQL 語句的執(zhí)行時,如果語句執(zhí)行成功,則 @@ERROR 設(shè)置為 0。若出現(xiàn)一個錯誤,則返回一條錯誤信息。@@ERROR 返回此錯誤信息代碼,直到另一條 Transact-SQL 語句被執(zhí)行。您可以在 sysmessages 系統(tǒng)表中查看與 @@ERROR 錯誤代碼相關(guān)的文本信息。
由于 @@ERROR 在每一條語句執(zhí)行后被清除并且重置,應(yīng)在語句驗證后立即檢查它,或?qū)⑵浔4娴揭粋€局部變量中以備事后查看。
示例
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 變量的值將決定傳給調(diào)用程序的返回值,以指示此過程的成功與失敗。
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 語句的成功操作。局部變量在兩條語句后均被設(shè)置為 @@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 語句的操作。為任何可能出現(xiàn)的錯誤而檢驗 @@ERROR 的值,而用 @@ROWCOUNT 保證更新已成功應(yīng)用于表中的某行。
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 語句執(zhí)行的最后游標(biāo)的狀態(tài),而不是任何當(dāng)前被連接打開的游標(biāo)的狀態(tài)。
返回值 描述 0 FETCH 語句成功。 -1 FETCH 語句失敗或此行不在結(jié)果集中。 -2 被提取的行不存在。
語法
@@FETCH_STATUS
返回類型
integer
注釋
由于 @@FETCH_STATUS 對于在一個連接上的所有游標(biāo)是全局性的,要小心使用 @@FETCH_STATUS 。在執(zhí)行一條 FETCH 語句后,必須在對另一游標(biāo)執(zhí)行另一 FETCH 語句前測試 @@FETCH_STATUS 。在任何提取操作出現(xiàn)在此連接上前,@@FETCH_STATUS 的值沒有定義。
例如,用戶從一個游標(biāo)執(zhí)行一條 FETCH 語句,然后調(diào)用一個存儲過程,此存儲過程打開并處理另一個游標(biāo)的結(jié)果。當(dāng)控制從被調(diào)用的存儲過程返回后,@@FETCH_STATUS 反映的是在存儲過程中執(zhí)行的最后的 FETCH 語句的結(jié)果,而不是在存儲過程被調(diào)用之前的 FETCH 語句的結(jié)果。
示例
下面的示例用 @@FETCH_STATUS 控制在一個 WHILE 循環(huán)中的游標(biāo)活動。
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
返回最后插入的標(biāo)識值。
語法
@@IDENTITY
返回類型
numeric
注釋
在一條 INSERT、SELECT INTO 或大容量復(fù)制語句完成后,@@IDENTITY 中包含此語句產(chǎn)生的最后的標(biāo)識值。若此語句沒有影響任何有標(biāo)識列的表,則 @@IDENTITY 返回 NULL。若插入了多個行,則會產(chǎn)生多個標(biāo)識值,@@IDENTITY 返回最后產(chǎn)生的標(biāo)識值。如果此語句激發(fā)一個或多個執(zhí)行產(chǎn)生標(biāo)識值的插入操作的觸發(fā)器,則語句執(zhí)行后立即調(diào)用 @@IDENTITY 將返回由觸發(fā)器產(chǎn)生的最后的標(biāo)識值。若 INSERT 或 SELECT INTO 語句失敗或大容量復(fù)制失敗,或事務(wù)被回滾,則 @@IDENTITY 值不會還原為以前的設(shè)置。
在返回插入到表的 @@IDENTITY 列的最后一個值方面,@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 函數(shù)類似。
@@IDENTITY 和 SCOPE_IDENTITY 將返回在當(dāng)前會話的所有表中生成的最后一個標(biāo)識值。但是,SCOPE_IDENTITY 只在當(dāng)前作用域內(nèi)返回值,而 @@IDENTITY 不限于特定的作用域。
IDENT_CURRENT 不受作用域和會話的限制,而受限于指定的表。IDENT_CURRENT 返回任何會話和任何作用域中為特定表生成的標(biāo)識值。有關(guān)更多信息,請參見 IDENT_CURRENT。
示例
下面的示例向帶有標(biāo)識列的表中插入一行,并用 @@IDENTITY 顯示在新行中使用的標(biāo)識值。
INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'
@@IDLE
返回 Microsoft? SQL Server? 自上次啟動后閑置的時間,單位為毫秒(基于系統(tǒng)計時器的分辨率)。
語法
@@IDLE
返回類型
integer
注釋
若要顯示包含幾個 SQL Server 統(tǒng)計信息的報表,可運(yùn)行 sp_monitor。
示例
下面的示例顯示 SQL Server 自啟動到當(dāng)前時間閑置的毫秒數(shù)。
SELECT @@IDLE AS 'Idle ms', GETDATE() AS 'As of'
下面是結(jié)果集:
Idle Ms As of
----------------- ---------------------------
277593 1998-04-18 16:41:07.160
@@IO_BUSY
返回 Microsoft? SQL Server? 自上次啟動后用于執(zhí)行輸入和輸出操作的時間,單位為毫秒(基于系統(tǒng)計時器的分辨率)。
語法
@@IO_BUSY
返回類型
integer
注釋
若要顯示包含幾個 SQL Server 統(tǒng)計信息的報表,可運(yùn)行 sp_monitor。
示例
下面的示例顯示 SQL Server 自啟動到目前已用于執(zhí)行輸入/輸出操作的毫秒數(shù)。
SELECT @@IO_BUSY AS 'IO ms', GETDATE() AS 'As of'
下面是結(jié)果集:
IO ms As of
------------------ -----------------------------
31 1998-04-18 16:49:49.650
@@LANGID
返回當(dāng)前所使用語言的本地語言標(biāo)識符(ID)。
語法
@@LANGID
返回類型
smallint
注釋
若要查看語言設(shè)置信息(包括語言 ID 號),可不帶參數(shù)運(yùn)行 sp_helplanguage。
示例
下面的示例將當(dāng)前會話的語言設(shè)置為意大利語 (Italian),然后用 @@LANGID 返回意大利語的 ID。
SET LANGUAGE 'Italian'
SELECT @@LANGID AS 'Language ID'
下面是結(jié)果集:
Language ID
--------------------
6
@@LANGUAGE
返回當(dāng)前使用的語言名。
語法
@@LANGUAGE
返回類型
nvarchar
注釋
若要查看語言設(shè)置信息(包括合法的官方語言名),可不帶參數(shù)運(yùn)行 sp_helplanguage。
示例
下面的示例返回當(dāng)前會話的語言。
SELECT @@LANGUAGE AS 'Language Name'
下面是結(jié)果集:
Language Name
-----------------------------
us_english
@@LOCK_TIMEOUT
返回當(dāng)前會話的當(dāng)前鎖超時設(shè)置,單位為毫秒。
語法
@@LOCK_TIMEOUT
返回類型
integer
注釋
SET LOCK_TIMEOUT 允許應(yīng)用程序設(shè)置語句等待阻塞資源的最長時間。當(dāng)一條語句已等待超過 LOCK_TIMEOUT所設(shè)置的時間,則被鎖住的語句將自動取消,并給應(yīng)用程序返回一條錯誤信息。
在一個連接的開始,@@LOCK_TIMEOUT 返回一個 –1值。
示例
下面的示例顯示當(dāng)一個 LOCK_TIMEOUT 值未被設(shè)置時的結(jié)果集。
SELECT @@LOCK_TIMEOUT
下面是結(jié)果集:
----------------
-1
下面的示例設(shè)置 LOCK_TIMEOUT 為 1800 毫秒,然后調(diào)用 @@LOCK_TIMEOUT。
SET LOCK_TIMEOUT 1800
SELECT @@LOCK_TIMEOUT
下面是結(jié)果集:
------------------------------
1800
@@MAX_CONNECTIONS
返回 Microsoft? SQL Server? 上允許的同時用戶連接的最大數(shù)。返回的數(shù)不必為當(dāng)前配置的數(shù)值。
語法
@@MAX_CONNECTIONS
返回類型
integer
注釋
實際允許的用戶連接數(shù)也依賴于所安裝 SQL Server 的版本以及應(yīng)用程序和硬件的限制。
若要將 SQL Server 重新配置為更少的連接,應(yīng)使用 sp_configure。
示例
下面的示例假定 SQL Server 尚未被重新配置更少的用戶連接。
SELECT @@MAX_CONNECTIONS
下面是結(jié)果集:
------------------
32767
@@MAX_PRECISION
返回 decimal 和 numeric 數(shù)據(jù)類型所用的精度級別,即該服務(wù)器中當(dāng)前設(shè)置的精度。
語法
@@MAX_PRECISION
返回類型
tinyint
注釋
默認(rèn)情況下,最大精度返回 38。
示例
SELECT @@MAX_PRECISION
@@NESTLEVEL
返回當(dāng)前存儲過程執(zhí)行的嵌套層次(初始值為 0)。
語法
@@NESTLEVEL
返回類型
integer
注釋
每當(dāng)一個存儲過程調(diào)用另一個存儲過程時,嵌套層次即進(jìn)行遞增。超過最大層數(shù) 32 時,事務(wù)即被終止。
示例
下面的示例創(chuàng)建兩個過程:其中一個過程調(diào)用另一個過程,每個過程都顯示自身的 @@NESTLEVEL 設(shè)置值。
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
下面是結(jié)果集:
Outer Level
-----------------
1
Inner Level
-----------------
2
@@OPTIONS
返回當(dāng)前 SET 選項的信息。
語法
@@OPTIONS
返回類型
integer
注釋
可以用"sp_configure 用戶選項"配置選項統(tǒng)一修改 SET 選項。每個用戶有一個 @@OPTIONS 函數(shù)代表其配置環(huán)境。從第一次登錄開始,系統(tǒng)管理員即為所有的用戶分配一個默認(rèn)的配置設(shè)置。
可以用 SET 語句更改語言和查詢處理選項。
示例
下面的示例設(shè)置 NOCOUNT ON 選項,然后檢測 @@OPTIONS 的值。NOCOUNT ON 選項可防止將會話中每一條語句所影響的行數(shù)消息發(fā)回給請求的客戶機(jī)。@@OPTIONS 的值被設(shè)置為 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? 自上次啟動后從網(wǎng)絡(luò)上讀取的輸入數(shù)據(jù)包數(shù)目。
語法
@@PACK_RECEIVED
返回類型
integer
注釋
若要顯示包含幾個 SQL Server 統(tǒng)計信息的報表,其中包括發(fā)送和接收數(shù)據(jù)包的信息,可運(yùn)行 sp_monitor。
示例
SELECT @@PACK_RECEIVED
@@PACK_SENT
返回 Microsoft? SQL Server? 自上次啟動后寫到網(wǎng)絡(luò)上的輸出數(shù)據(jù)包數(shù)目。
語法
@@PACK_SENT
返回類型
integer
注釋
若要顯示包含幾個 SQL Server 統(tǒng)計信息的報表,其中包括發(fā)送和接收數(shù)據(jù)包的信息,可運(yùn)行 sp_monitor。
示例
SELECT @@PACK_SENT
@@PACKET_ERRORS
返回自 SQL Server 上次啟動后,在 Microsoft? SQL Server? 連接上發(fā)生的網(wǎng)絡(luò)數(shù)據(jù)包錯誤數(shù)。
語法
@@PACKET_ERRORS
返回類型
integer
注釋
若要顯示包含幾個 SQL Server 統(tǒng)計信息的報表,包括數(shù)據(jù)包錯誤,可運(yùn)行 sp_monitor。
示例
SELECT @@PACKET_ERRORS
@@PROCID
返回當(dāng)前過程的存儲過程標(biāo)識符 (ID) 。
語法
@@PROCID
返回類型
integer
示例
下面的示例創(chuàng)建了一個過程,在此過程內(nèi)用 SELECT 顯示 @@PROCID 設(shè)置。
CREATE PROCEDURE testprocedure AS
SELECT @@PROCID AS 'ProcID'
GO
EXEC testprocedure
GO
@@REMSERVER
當(dāng)遠(yuǎn)程 Microsoft? SQL Server? 數(shù)據(jù)庫服務(wù)器在登錄記錄中出現(xiàn)時,返回它的名稱。
語法
@@REMSERVER
返回類型
nvarchar(256)
注釋
@@REMSERVER 使存儲過程可以查看它在其上運(yùn)行的數(shù)據(jù)庫服務(wù)器名。
示例
下面的示例創(chuàng)建一個過程,名為 check_server,它返回遠(yuǎn)程服務(wù)器名。
CREATE PROCEDURE check_server
AS
SELECT @@REMSERVER
存儲過程創(chuàng)建在本地服務(wù)器 SEATTLE1 上。用戶登錄到遠(yuǎn)程服務(wù)器 LONDON2 上,然后運(yùn)行 check_server。
exec SEATTLE1...check_server
下面是結(jié)果集:
---------------
LONDON2
@@ROWCOUNT
返回受上一語句影響的行數(shù)。
語法
@@ROWCOUNT
返回類型
integer
注釋
任何不返回行的語句將這一變量設(shè)置為 0 ,如 IF 語句。
示例
下面的示例執(zhí)行 UPDATE 語句并用 @@ROWCOUNT 來檢測是否有發(fā)生更改的行。
UPDATE authors SET au_lname = 'Jones'
WHERE au_id = '999-888-7777'
IF @@ROWCOUNT = 0
print 'Warning: No rows were updated'
@@SERVERNAME
返回運(yùn)行 Microsoft? SQL Server? 的本地服務(wù)器名稱。
語法
@@SERVERNAME
返回類型
nvarchar
注釋
SQL Server 安裝程序在安裝時將服務(wù)器名設(shè)置為計算機(jī)名。可通過使用 sp_addserver 然后重新啟動 SQL Server 來更改 @@SERVERNAME。不過,通常不需要這種方法。
當(dāng)安裝有多個 SQL Server 實例時,如果本地服務(wù)器名自安裝后未發(fā)生更改,則 @@SERVERNAME 返回以下本地服務(wù)器名信息。
實例 服務(wù)器信息 默認(rèn)實例 '服務(wù)器名' 命名實例 '服務(wù)器名\實例名' 虛擬服務(wù)器 - 默認(rèn)實例 '虛擬服務(wù)器名' 虛擬服務(wù)器 - 命名實例 '虛擬服務(wù)器名\實例名'
盡管 @@SERVERNAME 函數(shù)和 SERVERPROPERTY 函數(shù)的 SERVERNAME 屬性可能返回相似格式的字符串,但信息會有所不同。SERVERNAME 屬性會自動報告計算機(jī)網(wǎng)絡(luò)名的更改。
相比之下,@@SERVERNAME 不報告此更改。@@SERVERNAME 報告使用 sp_addserver 或 sp_dropserver 存儲過程對本地服務(wù)器名所做的更改。
示例
SELECT @@SERVERNAME
@@SERVICENAME
返回 Microsoft? SQL Server? 正在其下運(yùn)行的注冊表鍵名。若當(dāng)前實例為默認(rèn)實例,則 @@SERVICENAME 返回 MSSQLServer;若當(dāng)前實例是命名實例,則該函數(shù)返回實例名。
語法
@@SERVICENAME
返回類型
nvarchar
注釋
SQL Server 作為名為 MSSQLServer 的服務(wù)在 Microsoft Windows NT? 上運(yùn)行。它不在 Windows? 95/98 上作為服務(wù)運(yùn)行,因為該操作系統(tǒng)不支持服務(wù)。
示例
SELECT @@SERVICENAME
下面是結(jié)果集:
------------------------------
MSSQLServer
@@SPID
返回當(dāng)前用戶進(jìn)程的服務(wù)器進(jìn)程標(biāo)識符 (ID)。
語法
@@SPID
返回類型
smallint
注釋
@@SPID 可以在 sp_who 輸出結(jié)果中標(biāo)識當(dāng)前用戶進(jìn)程。
示例
下面的示例返回當(dāng)前用戶進(jìn)程的進(jìn)程 ID、登錄名和用戶名。
SELECT @@SPID AS 'ID', SYSTEM_USER AS 'Login Name', USER AS 'User Name'
下面是結(jié)果集:
ID Login Name User Name
----- ------------- -----------
11 sa dbo
@@TEXTSIZE
返回 SET 語句 TEXTSIZE 選項的當(dāng)前值,它指定 SELECT 語句返回的 text 或 image 數(shù)據(jù)的最大長度,以字節(jié)為單位。
語法
@@TEXTSIZE
返回類型
integer
注釋
默認(rèn)大小是 4096 字節(jié)。
示例
下面的示例用 SELECT 語句顯示用 SET TEXTSIZE 語句改變前后的 @@TEXTSIZE 值。
SELECT @@TEXTSIZE
SET TEXTSIZE 2048
SELECT @@TEXTSIZE
下面是結(jié)果集:
------------------------
64512
------------------------
2048
@@TIMETICKS
返回一刻度的微秒數(shù)。
語法
@@TIMETICKS
返回類型
integer
注釋
每一刻度的時間量依賴于計算機(jī)。操作系統(tǒng)的一刻度是 31.25 毫秒,或是三十分之一秒。
示例
SELECT @@TIMETICKS
@@TOTAL_ERRORS
返回 Microsoft? SQL Server? 自上次啟動后,所遇到的磁盤讀/寫錯誤數(shù)。
語法
@@TOTAL_ERRORS
返回類型
integer
注釋
若要顯示包含幾個 SQL Server 統(tǒng)計信息的報表,包括錯誤總數(shù)信息,可運(yùn)行 sp_monitor。
示例
下面的示例顯示了 SQL Server 到當(dāng)前日期和時間為止所遇到的錯誤數(shù)。
SELECT @@TOTAL_ERRORS AS 'Errors', GETDATE() AS 'As of'
下面是結(jié)果集:
Errors As of
------- -------------------------------
0 1998-04-21 22:07:30.013
@@TOTAL_READ
返回 Microsoft? SQL Server? 自上次啟動后讀取磁盤(不是讀取高速緩存)的次數(shù)。
語法
@@TOTAL_READ
返回類型
integer
注釋
若要顯示包含幾個 SQL Server 統(tǒng)計信息的報表,包括讀寫活動信息,可運(yùn)行 sp_monitor。
示例
下面的示例顯示了到當(dāng)前日期和時間為止的總的磁盤讀寫次數(shù)。
SELECT @@TOTAL_READ AS 'Reads', @@TOTAL_WRITE AS 'Writes', GETDATE() AS 'As of'
下面是結(jié)果集:
Reads Writes As of
--------- ----------- ------------------------------
978 124 1998-04-21 22:14:22.37
@@TOTAL_WRITE
返回 Microsoft? SQL Server? 自上次啟動后寫入磁盤的次數(shù)。
語法
@@TOTAL_WRITE
返回類型
integer
注釋
若要顯示包含幾個 SQL Server 統(tǒng)計信息的報表,包括讀寫活動信息,可運(yùn)行 sp_monitor。
示例
下面的示例顯示了到當(dāng)前日期和時間為止總的磁盤讀寫次數(shù)。
SELECT @@TOTAL_READ AS 'Reads', @@TOTAL_WRITE AS 'Writes', GETDATE() AS 'As of'
下面是結(jié)果集:
Reads Writes As of
--------- ----------- ------------------------------
978 124 1998-04-21 22:14:22.37
@@TRANCOUNT
返回當(dāng)前連接的活動事務(wù)數(shù)。
語法
@@TRANCOUNT
返回類型
integer
注釋
BEGIN TRANSACTION 語句使 @@TRANCOUNT 遞增 1。ROLLBACK TRANSACTION 將 @@TRANCOUNT 遞減為 0,但 ROLLBACK TRANSACTION savepoint_name 語句并不影響 @@TRANCOUNT 值。COMMIT TRANSACTION 或 COMMIT WORK 將 @@TRANCOUNT 遞減 1。
示例
下面的示例用 @@TRANCOUNT 測試應(yīng)該提交的打開事務(wù)。
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? 當(dāng)前安裝的日期、版本和處理器類型。
語法
@@VERSION
返回類型
nvarchar
注釋
@@VERSION 返回的信息與 xp_msver 存儲過程返回的產(chǎn)品名、版本、平臺和文件數(shù)據(jù)相似,但 xp_msver 存儲過程提供更詳細(xì)的信息。
示例
下面的示例返回當(dāng)前安裝的日期、版本和處理器類型。
SELECT @@VERSION
相關(guān)文章