配置函数
这些标量函数返回当前配置选项设置的信息。
@@DATEFIRST | @@OPTIONS |
@@DBTS | @@REMSERVER |
@@LANGID | @@SERVERNAME |
@@LANGUAGE | @@SERVICENAME |
@@LOCK_TIMEOUT | @@SPID |
@@MAX_CONNECTIONS | @@TEXTSIZE |
@@MAX_PRECISION | @@VERSION |
@@NESTLEVEL |
|
所有配置函数都不具有确定性。每次用一组特定输入值调用它们时,返回的结果不总是相同的。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。
返回 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
为当前数据库返回当前 timestamp 数据类型的值。这一 timestamp 值保证在数据库中是唯一的。
语法
@@DBTS
返回类型
varbinary
注释
@@DBTS 返回当前数据库最后所使用的时间戳值。当带有 timestamp 列的一行被插入或更新时,会产生一个新的时间戳值。
示例
下面的示例从 pubs 数据库返回当前的 timestamp 值。
USE pubs
SELECT @@DBTS
请参见
返回当前所使用语言的本地语言标识符(ID)。
语法
@@LANGID
返回类型
smallint
注释
若要查看语言设置信息(包括语言 ID 号),可不带参数运行 sp_helplanguage。
示例
下面的示例将当前会话的语言设置为意大利语 (Italian),然后用 @@LANGID 返回意大利语的 ID。
SET LANGUAGE 'Italian'
SELECT @@LANGID AS 'Language ID'
下面是结果集:
Language ID
--------------------
6
返回当前使用的语言名。
语法
@@LANGUAGE
返回类型
nvarchar
注释
若要查看语言设置信息(包括合法的官方语言名),可不带参数运行 sp_helplanguage。
示例
下面的示例返回当前会话的语言。
SELECT @@LANGUAGE AS 'Language Name'
下面是结果集:
Language Name
-----------------------------
us_english
返回当前会话的当前锁超时设置,单位为毫秒。
语法
@@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
返回 Microsoft® SQL Server™ 上允许的同时用户连接的最大数。返回的数不必为当前配置的数值。
语法
@@MAX_CONNECTIONS
返回类型
integer
注释
实际允许的用户连接数也依赖于所安装 SQL Server 的版本以及应用程序和硬件的限制。
若要将 SQL Server 重新配置为更少的连接,应使用 sp_configure。
示例
下面的示例假定 SQL Server 尚未被重新配置更少的用户连接。
SELECT @@MAX_CONNECTIONS
下面是结果集:
------------------
32767
返回 decimal 和 numeric 数据类型所用的精度级别,即该服务器中当前设置的精度。
语法
@@MAX_PRECISION
返回类型
tinyint
注释
默认情况下,最大精度返回 38。
示例
SELECT @@MAX_PRECISION
返回当前存储过程执行的嵌套层次(初始值为 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
返回当前 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)
当远程 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
返回运行 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
返回 Microsoft® SQL Server™ 正在其下运行的注册表键名。若当前实例为默认实例,则 @@SERVICENAME 返回 MSSQLServer;若当前实例是命名实例,则该函数返回实例名。
语法
@@SERVICENAME
返回类型
nvarchar
注释
SQL Server 作为名为 MSSQLServer 的服务在 Microsoft Windows NT® 上运行。它不在 Windows® 95/98 上作为服务运行,因为该操作系统不支持服务。
示例
SELECT @@SERVICENAME
下面是结果集:
------------------------------
MSSQLServer
返回当前用户进程的服务器进程标识符 (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
返回 SET 语句 TEXTSIZE 选项的当前值,它指定 SELECT 语句返回的 text 或 image 数据的最大长度,以字节为单位。
语法
@@TEXTSIZE
返回类型
integer
注释
默认大小是 4096 字节。
示例
下面的示例用 SELECT 语句显示用 SET TEXTSIZE 语句改变前后的 @@TEXTSIZE 值。
SELECT @@TEXTSIZE
SET TEXTSIZE 2048
SELECT @@TEXTSIZE
下面是结果集:
------------------------
64512
------------------------
2048
返回 Microsoft® SQL Server™ 当前安装的日期、版本和处理器类型。
语法
@@VERSION
返回类型
nvarchar
注释
@@VERSION 返回的信息与 xp_msver 存储过程返回的产品名、版本、平台和文件数据相似,但 xp_msver 存储过程提供更详细的信息。
示例
下面的示例返回当前安装的日期、版本和处理器类型。
SELECT @@VERSION