SQL Server 常用内置函数(built-in)持续整理

Posted 悦光阴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 常用内置函数(built-in)持续整理相关的知识,希望对你有一定的参考价值。

本文用于收集在运维中经常使用的系统内置(built-in)函数,持续整理中

一,常用的获取元数据的函数

1,查看数据库的ID和Name

db_id(‘DB Name’),db_name(\'DB ID\')

2,查看对象的ID和Name,对象的Schema,对象的定义

OBJECT_ID ( \'schema_name . object_name\',\'object_type\' ) 
OBJECT_NAME ( object_id [, database_id ] ) 
OBJECT_SCHEMA_NAME ( object_id [, database_id ] )
OBJECT_DEFINITION ( object_id ) 

3,查看Schema的ID和Name,通过对象ID获取对象的架构名(Schema)

SCHEMA_NAME ( [ schema_id ] )  
SCHEMA_ID ( [ schema_name ] ) 
OBJECT_SCHEMA_NAME ( object_id [, database_id ] )  

4,查看Column的Name

COL_NAME(table_id,column_id)

二,常用全局变量

1,SQL Server的Name,ServiceName和版本

@@SERVERNAME,@@SERVICENAME,@@VERSION

查看服务器名字,也可以使用函数 serverproperty(\'servername\'),有时 serverproperty(\'servername\') 和 @@servername 返回的值不同,这可能是修改服务器的名称导致,使用如下脚本修复,并重启service,检查服务器的名称:

--将两者协调一致,再重启 SQL Server 服务
if serverproperty(\'servername\')<>@@servername  
begin  
    declare @server sysname  
    set @server= @@servername   
    exec sys.sp_dropserver @server = @server
    set @server  = cast(serverproperty(\'servername\') as sysname)  
    exec sys.sp_addserver @server = @server ,@local = \'LOCAL\'  
end

use master
go
select name ,@@servername,serverproperty(\'servername\')
from sys.servers
where server_id=0    --Local Server ID = 0 
go

 2,返回当前module的ID,module包括:SP,UDF,Trigger

@@PROCID

--获取当前Module Name
declare @ObjectName sysname;
select @ObjectName=object_name(@@ProcID)

3,返回当前Session的ID,当前的RequestID

@@SPID
CURRENT_REQUEST_ID() 

4,在当前Session中,返回上一条Query影响的数据行数量

@@ROWCOUNT 
ROWCOUNT_BIG ( ) 

5,当前Connection中,返回已开启,但未结束的事务数量,查看当前事务的ID,和事务的状态(1,0,-1)

XACT_STATE() 函数返回事务的状态,1表示有Active Transaction,0表示没有Active Transaction,-1表示有Active Transaction,但是有错误发生导致该事务未被提交。

@@TRANCOUNT 
CURRENT_TRANSACTION_ID( ) 
XACT_STATE() 

6,查看当前机器(Host)的名字(Machine Name和ID)

HOST_NAME () ,HOST_ID()

三,使用GZIP算法压缩数据和解压缩数据

COMPRESS ( expression ) 
DECOMPRESS ( expression )

在插入数据时,压缩数据,压缩之后的数据类型是varbinary(max)

INSERT INTO player (name, surname, info )  
VALUES (N\'Ovidiu\', N\'Cracium\', COMPRESS(N\'{"sport":"Tennis","age": 28,"rank":1,"points":15258, turn":17}\')); 

在查询数据时,解压缩数据,将数据从varbinary(max)强转为原始类型

SELECT _id, name, surname, datemodified, CAST(DECOMPRESS(info) AS NVARCHAR(MAX)) AS info  
FROM player; 

 

参考文档:

Metadata Functions (Transact-SQL)

Configuration Functions (Transact-SQL)

System Functions (Transact-SQL)

以上是关于SQL Server 常用内置函数(built-in)持续整理的主要内容,如果未能解决你的问题,请参考以下文章

sql server的一些日期操作函数

SQL-server'WEEKDAY'不是公认的内置函数名称[关闭]

LINQ to SQL 调用 SQL Server 的系统函数

oracle 与sql server 部分内置函数替换

学习 SQL Server :内置函数,触发器

Sql Server内置函数实现MD5加密