`

Transact-SQL 系统变量 @@

阅读更多

@@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 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。

返回值    描述
0     FETCH 语句成功。
-1     FETCH 语句失败或此行不在结果集中。
-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_addserver 或 sp_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 语句返回的 text 或 image 数据的最大长度,以字节为单位。

语法

@@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

分享到:
评论

相关推荐

    Transact-sql 最常用全局变量

    Transact-sql 最常用全局变量 绝对精华 本人私藏许久 如有下载 不胜荣幸

    Transact-SQL 编程

    --T-SQL语句用于管理SQL Server数据库引擎实例,创建和管理数据库对象, --以及查询、插入、修改和删除数据。 --Ø 变量 --1、局部变量(Local Variable) --局部变量是用户可以自定义的变量,它的作用范围是仅在...

    Transact-SQL语句基础

    利用Transact-SQL语句声明一个长度为16的nchar型变量bookname,并赋初值为”SQL Server 数据库编程”。 运算符的应用,使用teaching数据库 查询生日在’1989-01-01’之后的学生信息; 3)系统函数的应用 编程计算...

    Transact-SQL编程

    Transact-SQL编程 4.1 变量与函数 4.2 其它语言元素 4.3 流程控制语句 4.4 游标

    sql语句命令-sql语句命令sql语句命令

    sql语句命令sql语句命令sql语句命令sql语句命令sql语句命令sql语句命令

    SQL-Server的程序设计.pdf

    1 第 10 章 Transact-SQL 程序设计 教学目标 终极目标: 会利用变量、函数、流程控制语句编写 Transact-SQL 程序实现对数据库系统的 操作。 促成目标:1. 能正确理解和使用变量 2. 能正确理解和使用函数 3. 能正确...

    第8章 T-SQL语言

    SQL Server 2005在支持标准SQL语言的同时,对其进行了扩充,引入了T-SQL,即Transact-SQL,T-SQL是使用SQL Server 2005的核心,通过它,可以定义变量、使用流控制语句、自定义函数、自定义存储过程等,极大地扩展了...

    参考手册:命令 Adaptive Server

    和 Transact-SQL® 语言的四本指南: • 构件块 介绍了 Transact-SQL 的各个组成部分:数据类型、内置 函数、全局变量、表达式、标识符、保留字和 SQLSTATE 错 误。要想成功使用 Transact-SQL,您首先必须了解这些...

    3、Transact-SQL编程基础1

    2. 声明局部变量 1. 算术运算符 4. 比较运算符 5. 逻辑运算符

    Sybase参考手册完整中文版之_命令

    Enterprise 和 Transact-SQL® 语言的四本指南: • 《构件块》介绍了 Transact-SQL 的各个部件:数据类型、内置函 数、全局变量、表达式、标识符、保留字和 SQLSTATE 错误。 要想成功使用 Transact-SQL,您首先必须...

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    它提供了使用Transact-SQL(T-SQL)的专家级指导,T-SQL是用于SQL Server的最常见的也是功能最强大的编程语言。该书由Itzik Ben-Gan权威执笔,重点关注语言特性以及它们如何被SQL Server引擎解释和处理。  通过本书...

    VB实现SQL Server 2000存储过程调用

    存储过程是存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的方法,支持用户提供的变量,具有强大的编程功能。在BAT文件中,可以包含一组经常执行的命令,这组命令通过BAT文件的执行而被执行...

    sybase数据库命令指南

    构件块 介绍了 Transact-SQL 的各个“部件”:数据类型、内置 函数、全局变量、表达式、标识符、保留字和 SQLSTATE 错误。 为了学会使用 Transact-SQL,您需要首先理解这些构件块的功 能,以及它们对 Transact-SQL ...

    SQL Sever查询语句大全集锦

    简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 代码:...

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别.doc

    SP_EXECUTESQL 是在 SQL 2005中引入的新的系统存储过程,也是用来处理动态SQL 语句的。它比EXEC 更加灵活,首先也执行一下第一次的拼接SQL语句: DECLARE @TableName NVARCHAR(50),@Sql NVARCHAR(MAX),@Score INT; ...

    SQL2005入门到精通(9)

    第9章 Transact-SQL语言基础 159 9.1 T-SQL语法规则 159 9.2 运算符及优先级 159 9.2.1 算术运算符 159 9.2.2 赋值运算符 162 9.2.3 位运算符 163 9.2.4 比较运算符 166 9.2.5 逻辑运算符 167...

    (笔记)第7章 SQL Server 2012高级应用

    文章目录第七章 SQL Server 2012高级应用(T-SQL)7.1 Transact-SQL程序设计7.1.1 变量7.1.2 运算符7.1.3 批处理7.1.4 流程控制语句7.1.5 常用命令7.1.6 常用函数7.2 存储过程7.2.1 存储过程的概念、优点及分类7.2.2...

    SQLServer2000高级编程技术(part02)-想学存储过程 SQL编程 务必要看

    2.2.8 帮助子系统和SQL Server Books Online 2.3 存储过程的基本操作 2.3.1 通过Query Analyzer执行存储过程 2.3.2 通过Enterprise Manager管理存储过程 2.3.3 在Enterprise Manager中编辑存储过程 2.3.4 在Query ...

    SQLServer2000高级编程技术-已添加书签,想学存储过程、SQL编程务必要看,分析非常透彻

    2.2.8 帮助子系统和SQL Server Books Online 2.3 存储过程的基本操作 2.3.1 通过Query Analyzer执行存储过程 2.3.2 通过Enterprise Manager管理存储过程 2.3.3 在Enterprise Manager中编辑存储过程 2.3.4 在Query ...

    精通SQL--结构化查询语言详解

    2.2.3 transact-sql的一些重要命令 26 2.3 oracle数据库 29 2.3.1 oracle数据库软件组成 29 2.3.2 oracle数据库体系结构 29 2.3.3 oracle数据库系统结构 30 2.3.4 使用sql*plus执行sql语句 31 2.4 pl/sql简介 ...

Global site tag (gtag.js) - Google Analytics