本文用于收集在运维中SQL Server经常使用的系统内置函数,持续整理中
一,常用Metadata函数
1,查看数据库的ID和Name
2,查看对象的ID和Name,对象的Schema,对象的定义
3,查看Schema的ID和Name,通过对象ID获取对象的架构名(Schema)
4,查看Column的Name
二,常用Security Function
1,当前数据库User的Name(Database User)
2,查看数据库User的Name 和ID(Database User)
3,查看服务器User的Name和ID(Server User,即Login)
Login(登录)是服务器主体(Server Principal),有Name和ID属性,每一个Login都有一个安全标识(SID)。
4,SID和ID的区别
当创建一个SQL Server Login时,从sys.server_principals 系统视图中,能够看到该Login被指定一个ID和SID,在SQL Server实例中,ID和SID都是唯一的,不同之处是,ID标识Login,将Login作为一个Securable,SID标识Login的Security Context。一般来说,ID可以重用,但是SID一般是不会重用的。当将同一个Login重复创建时,其ID可能发生变化,但是其SID不变。
不仅Login有ID和SID,Database User也有。当一个database users创建时,从sys.database_principals中,能够看到该User被指定一个ID和SID。在数据库级别,ID是唯一的。如果User是从SQL Server Login创建的,那么User和Login的SID相同。 详情,请参考《SIDs and IDs》
三,常用全局变量
1,SQL Server的Name,ServiceName和版本
2,返回当前module的ID,module包括:SP,UDF,Trigger
3,返回当前Session的ID,当前的RequestID
4,在当前Session中,返回上一条Query影响的数据行数量
5,当前Connection中,返回已开启,但未结束的事务数量,查看当前事务的ID,和事务的状态(1,0,-1)
XACT_STATE() 函数返回事务的状态,1表示有Active Transaction,0表示没有Active Transaction,-1表示有Active Transaction,但是有错误发生导致该事务未被提交。
6,查看当前机器(Host)的名字(Machine Name和ID)
四,使用GZIP algorithm压缩数据和解压缩数据
在插入数据时,压缩数据,压缩之后的数据类型是varbinary(max)
在查询数据时,解压缩数据,将数据从varbinary(max)强转为原始类型
五,调试函数
在TSQL中,使用try 和 catch编写异常处理代码,在catch子句中,使用debug函数,能够获取异常信息
在进行调试时,可以以下示例脚本代码,将异常信息记录在数据表中,以便进行代码的故障排除
六,DBCC 命令
1,查看数据库的隔离级别
参考文档:
Security Functions (Transact-SQL)
Metadata Functions (Transact-SQL)
Configuration Functions (Transact-SQL)
System Functions (Transact-SQL)