SQL Server常用的全局变量

常用SQL Server全局变量

全局变量名称

描述

1.@@CONNECTIONS

返回SQL server自上次以来尝试的连接数

2.@@CPU_BUSY

返回SQL server自上次启动后的工作时间

3.@@CURSOR_ROWS

返回连接上打开的上一个游标中的当前限定行的数目,确定当它被调用时检索了游标符合条件的行数

4.@@DATEFIRST

针对对话返回SET DATEFIRST的当前值,SET DATEFIRST表示制定每周的第一天

5.@@DBTS

返回当前数据库的当前timestamp数据类型的值,这一时间戳值在数据库中必须是唯一的

6.@@ERROR

返回执行上一个transact-SQL语句的错误号,如果前一个transact-SQL语句执行没错误,返回0

7.@@FETCH_STATUS

返回针对当前打开的任何游标发出的上一条游标FETCH语句的状态

8.@@IDENTITY

返回上次插入的标记值

9.@@IDLE 

返回SQL Server自上次启动后的空闲时间,结果以CPU时间增量或“时钟周期”表示,并且是所有CPU的累积

10.@@IO_BUSY

返回自从SQL Server最近一次启动以来,Microsoft SQL Server 已经用于执行输入和输出操作的时间。其结果是CPU时间增

量(时钟周期),并且是所有CPU的积累值。

11.@@LANGID

返回当前使用的语言的本地语言标识符(ID)

12.@@LANGUAGE

返回当前所有语言的名称

13.@@LOCK_TIMEOUT

返回当前会话的当前锁定超时设置(毫秒)

14.@@MAX_CONNECTIONS

返回SQL Server实例允许同时进行的最大用户连接数,返回的数值不一定是当前配置的数值

15.@@MAX_PRECISION

按照服务器当前设置,返回decimal和numeric数据类型所用的精度级别

16.@@NESTLEVEL

返回本地服务器上执行的当前存储过程的嵌套级别(初始值为0)

17.@@OPTIONS

返回有关当前SET选项的信息

18.@@PACK_RECEIVED

返回SQL Server自上次启动后从网络读取的输入数据包数

19.@@PACK_SENT

返回SQL Server自上次启动后写入网络读取的输入数据包数

20.@@PACKET_ERRORS

返回自上次启动SQL Server后,在SQL Server连接上的网络数据报错误数

21.@@PROCID

返回Transact-SQL当前模块的对象标识符(ID),Transact-SQL模块可以是存储过程,用户定义函数或触发器

22.@@REMSERVER

返回远程SQL Server数据库服务器在登录记录中显示的名称

23.@@ROWCOUNT

返回受上一行影响的行数

24.@@SERVERNAME

返回运行SQL Server的本地服务器的名称

25.@@SERVICENAME

返回SQL Server正在其下运行的注册表项的名称,若当前实例为默认实例,则@@SERVICENAME返回MSSQLSERVER

26.@@SPID

返回当前用户进程的会话ID

27.@@TEXTSIZE

返回SET语句中的TEXTSIZE选项的当前值

28.@@TIMETICKS

返回每个时钟周期的微秒数

29.@@TOTAL_ERRORS

返回SQL Server子上启动后所遇到的磁盘写入错误数

30.@@TOTAL_READ

返回SQL Server子上启动后读取磁盘(不是读取高速缓存)的次数

31.@@TOTAL_WRITE

返回SQL Server子上启动以来磁盘所执行的写入次数

32.@@TRANCOUNT

返回的钱连接的活动事务数

33.@@VERSION

返回当前SQL Server安装的版本,处理体系结构,生成日期和操作系统

 

 

 

1.@@CONNECTIONS  --返回SQL server自上次以来尝试的连接数
Examples
This example shows the number of login attempts as of the current date and time.

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

Here is the result set:

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


2.@@CPU_BUSY  --返回SQL server自上次启动后的工作时间
Examples
This example shows SQL Server CPU activity as of the current date and time.

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

Here is the result set:

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

3.@@CURSOR_ROWS--返回连接上打开的上一个游标中的当前限定行的数目,确定当它被调用时检索了游标符合条件的行数
Return value   Description 
-m            The cursor is populated asynchronously. The value returned (-m) is the number of rows currently in the keyset. 
-1            The cursor is dynamic. Because dynamic cursors reflect all changes, the number of rows that qualify for the    

               cursor         is constantly changing. It can never be definitely stated that all qualified rows have been    

                retrieved. 
0             No cursors have been opened, no rows qualified for the last opened cursor, or the last-opened cursor is closed 

              or deallocated. 
n             The cursor is fully populated. The value returned (n) is the total number of rows in the cursor. 

Examples
This example declares a cursor and uses SELECT to display the value of @@CURSOR_ROWS. The setting has a value of 0 before 

the cursor is opened, and a value of -1 to indicate that the cursor keyset is populated asynchronously.

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)

4.@@DATEFIRST--针对对话返回SET DATEFIRST的当前值,SET DATEFIRST表示制定每周的第一天
Examples
This example sets the first day of the week to 5 (Friday), and assumes the current day to be Saturday. The SELECT statement 

returns the DATEFIRST value and the number of the current day of the week.

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

Here is the result set. Counting from Friday, today (Saturday) is day 2.

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

5.@@DBTS--返回当前数据库的当前timestamp数据类型的值,这一时间戳值在数据库中必须是唯一的
Examples
This example returns the current timestamp from the pubs database.

USE pubs
SELECT @@DBTS

6.@@ERROR--返回执行上一个transact-SQL语句的错误号,如果前一个transact-SQL语句执行没错误,返回0
Examples
A. Use @@ERROR to detect a specific error
This example uses @@ERROR to check for a check constraint violation (error #547) in an UPDATE statement.

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. Use @@ERROR to conditionally exit a procedure 
The IF...ELSE statements in this example test @@ERROR after an INSERT statement in a stored procedure. The value of the 

@@ERROR variable determines the return code sent to the calling program, indicating success or failure of the procedure.

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. Use @@ERROR to check the success of several statements
This example depends on the successful operation of the INSERT and DELETE statements. Local variables are set to the value 

of @@ERROR after both statements and are used in a shared error-handling routine for the operation.

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. Use @@ERROR with @@ROWCOUNT
This example uses @@ERROR with @@ROWCOUNT to validate the operation of an UPDATE statement. The value of @@ERROR is checked 

for any indication of an error, and @@ROWCOUNT is used to ensure that the update was successfully applied to a row in the 

table.

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

7.@@FETCH_STATUS--返回针对当前打开的任何游标发出的上一条游标FETCH语句的状态
Return value       Description 
0                  FETCH statement was successful. 
-1                 FETCH statement failed or the row was beyond the result set. 
-2                 Row fetched is missing. 

Examples
This example uses @@FETCH_STATUS to control cursor activities in a WHILE loop.

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

8.@@IDENTITY --返回上次插入的标记值

Examples
This example inserts a row into a table with an identity column and uses @@IDENTITY to display the identity value used in 

the new row.

INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'
9.@@IDLE  --返回SQL Server自上次启动后的空闲时间,结果以CPU时间增量或“时钟周期”表示,并且是所有CPU的累积

Examples
This example shows the number of milliseconds SQL Server was idle between the start time and the current time.

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

Here is the result set:

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


10.@@IO_BUSY  --返回自从SQL Server最近一次启动以来,Microsoft SQL Server 已经用于执行输入和输出操作的时间。其结果是CPU时间增

量(时钟周期),并且是所有CPU的积累值。

Examples
This example shows the number of milliseconds SQL Server has spent performing input/output operations between start time and 

the current time.

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

Here is the result set:

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


11.@@LANGID  --返回当前使用的语言的本地语言标识符(ID)

Examples
This example sets the language for the current session to Italian, and then uses @@LANGID to return the ID for Italian.

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

Here is the result set:

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


12.@@LANGUAGE --返回当前所有语言的名称

Examples
This example returns the language for the current session.

SELECT @@LANGUAGE AS 'Language Name'

Here is the result set:

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


13.@@LOCK_TIMEOUT  --返回当前会话的当前锁定超时设置(毫秒)

Examples
This example shows the result set when a LOCK_TIMEOUT value is not set.

SELECT @@LOCK_TIMEOUT

Here is the result set:

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

This example sets LOCK_TIMEOUT to 1800 milliseconds, and then calls @@LOCK_TIMEOUT.

SET LOCK_TIMEOUT 1800
SELECT @@LOCK_TIMEOUT

Here is the result set:

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

14.@@MAX_CONNECTIONS --返回SQL Server实例允许同时进行的最大用户连接数,返回的数值不一定是当前配置的数值

Examples
This example assumes that SQL Server has not been reconfigured for fewer user connections.

SELECT @@MAX_CONNECTIONS

Here is the result set:

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


15.@@MAX_PRECISION  --按照服务器当前设置,返回decimal和numeric数据类型所用的精度级别

Examples
SELECT @@MAX_PRECISION

16.@@NESTLEVEL --返回本地服务器上执行的当前存储过程的嵌套级别(初始值为0)

Examples
This example creates two procedures: one that calls the other, and one that displays the @@NESTLEVEL setting of each.

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
Here is the result set:

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

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

17.@@OPTIONS --返回有关当前SET选项的信息

Examples
This example sets NOCOUNT ON and then tests the value of @@OPTIONS. The NOCOUNT ON option prevents the message about the 

number of rows affected from being sent back to the requesting client for every statement in a session. The value of 

@@OPTIONS is set to 512 (0x0200), which represents the NOCOUNT option. This example tests whether the NOCOUNT option is 

enabled on the client. For example, it can help track performance differences on a client.

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

18.@@PACK_RECEIVED --返回SQL Server自上次启动后从网络读取的输入数据包数

Examples
SELECT @@PACK_RECEIVED

19.@@PACK_SENT --返回SQL Server自上次启动后写入网络读取的输入数据包数

Examples
SELECT @@PACK_SENT


20.@@PACKET_ERRORS  --返回自上次启动SQL Server后,在SQL Server连接上的网络数据报错误数

Examples
SELECT @@PACKET_ERRORS


21.@@PROCID --返回Transact-SQL当前模块的对象标识符(ID),Transact-SQL模块可以是存储过程,用户定义函数或触发器

Examples
This example creates a procedure that uses SELECT to display the @@PROCID setting from inside the procedure.

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


22.@@REMSERVER  --返回远程SQL Server数据库服务器在登录记录中显示的名称

Examples
This example creates a procedure, check_server, that returns the name of the remote server.

CREATE PROCEDURE check_server
AS
SELECT @@REMSERVER

The stored procedure is created on SEATTLE1, the local server. The user logs on to a remote server, LONDON2, and runs 

check_server.

exec SEATTLE1...check_server

Here is the result set:

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

23.@@ROWCOUNT  --返回受上一行影响的行数

Examples
This example executes UPDATE and uses @@ROWCOUNT to detect if any rows were changed.

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

24.@@SERVERNAME --返回运行SQL Server的本地服务器的名称

Instance                                 Server information 
Default instance                         'servername' 
Named instance                           'servername\instancename' 
Virtual server - default instance         'virtualservername' 
Virtual server - named instance          'virtualservername\instancename' 

Examples
SELECT @@SERVERNAME

25.@@SERVICENAME  --返回SQL Server正在其下运行的注册表项的名称,若当前实例为默认实例,则@@SERVICENAME返回MSSQLSERVER

Examples
SELECT @@SERVICENAME

Here is the result set:

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


26.@@SPID  --返回当前用户进程的会话ID

Examples
This example returns the process ID, login name, and user name for the current user process.

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

Here is the result set:

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

27.@@TEXTSIZE  --返回SET语句中的TEXTSIZE选项的当前值

Examples
This example uses SELECT to display the @@TEXTSIZE value before and after it is changed with the SET TEXTSIZE statement.

SELECT @@TEXTSIZE
SET TEXTSIZE 2048
SELECT @@TEXTSIZE

Here is the result set:

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

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


28.@@TIMETICKS --返回每个时钟周期的微秒数

Examples
SELECT @@TIMETICKS

29.@@TOTAL_ERRORS --返回SQL Server子上启动后所遇到的磁盘写入错误数

Examples
This example shows the number of errors encountered by SQL Server as of the current date and time.

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

Here is the result set:

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


30.@@TOTAL_READ  --返回SQL Server子上启动后读取磁盘(不是读取高速缓存)的次数

Examples
This example shows the total number of disk read and writes as of the current date and time.

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

Here is the result set:

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


31.@@TOTAL_WRITE --返回SQL Server子上启动以来磁盘所执行的写入次数

Examples
This example shows the total number of disk reads and writes as of the current date and time.

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

Here is the result set:

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


32.@@TRANCOUNT  --返回的钱连接的活动事务数

Examples
This example uses @@TRANCOUNT to test for open transactions that should be committed.

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


33.@@VERSION  --返回当前SQL Server安装的版本,处理体系结构,生成日期和操作系统

Examples
This example returns the date, version, and processor type for the current installation.

SELECT @@VERSION


 

 

 

你可能感兴趣的:(SQL,sql,server,insert,variables,microsoft,login,date)