使用系统函数
系统函数使您可以访问 SQL Server 系统表中的信息,而不必直接访问系统表。
某些 Transact-SQL 系统函数的名称以两个 at 符号 (@@) 开头。虽然在 SQL Server 的早期版本中,@@function 被作为全局变量,但它们并不是变量,而且其功能与变量的功能不同。@@function 是系统函数,并且其语法的使用遵循函数的规则。
用于数据库、主机、对象、登录名和用户的下列每对系统函数在给定标识符 (ID) 时返回名称,在给定名称时返回 ID:
DB_ID 和 DB_NAME
HOST_ID 和 HOST_NAME
OBJECT_ID 和 OBJECT_NAME
SUSER_ID 和 SUSER_NAME(或 SUSER_SID 和 SUSER_SNAME)
USER_ID 和 USER_NAME
例如,若要获得数据库 ID 号,请使用 DB_ID 函数,而不用执行 sysobjects 表的 SELECT 语句。
下面的示例说明如何检索使用 SQL Server 身份验证登录的当前用户的用户名:
SELECT SUSER_NAME();
下列函数与此类似,但它们不是成对出现的,而且带有的输入参数不止一个:
COL_LENGTH
返回列长度,而不是该列中存储的任何单个字符串的长度。使用 DATALENGTH 函数可以确定特定值中的字符总数。
下面的示例返回 Employees 表中 LastName 列的列长度和数据长度:
SELECT COL_LENGTH('Employees', 'LastName') AS Col_Length, DATALENGTH(LastName) AS DataLength FROM Employees WHERE EmployeeID > 6;
COL_NAME
返回列名称。
INDEX_COL
返回索引列名称。
我们建议您使用系统函数、信息架构视图或系统存储过程来获得系统信息,而不要直接查询系统表,因为不同版本 SQL Server 的系统表可能会有极大的不同。