SQL Server 常用内置函数
本文用于收集在运维中经常使用的系统内置(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 algorithm压缩数据和解压缩数据
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;
四,调试函数
1,获取异常消息
在TSQL中,使用try 和 catch编写异常处理代码,在catch子句中,使用debug函数,能够获取异常信息
--返回发生错误的代码行号(LineNumber)
ERROR_LINE ( )
--返回错误号(ErrorNumber)
ERROR_NUMBER ( )
@@ERROR
--返回错误消息(ErrorMessage)
ERROR_MESSAGE ( )
--返回发生错误的SP Name
ERROR_PROCEDURE ( )
--返回错误的严重度(Error Severity)
ERROR_SEVERITY ( )
--返回错误的状态(Error State)
ERROR_STATE()
在进行调试时,可以以下示例脚本代码,将异常信息记录在数据表中,以便进行代码的故障排除
-- SET XACT_ABORT ON will render the transaction uncommittable when the constraint violation occurs.
SET XACT_ABORT ON; BEGIN TRY
BEGIN TRANSACTION;
-- A FOREIGN KEY constraint exists on this table. This statement will generate a constraint violation error.
DELETE FROM Production.Product
WHERE ProductID = 980;
-- If the delete operation succeeds, commit the transaction. The CATCH block will not execute.
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
-- Test XACT_STATE for 0, 1, or -1.
-- If 1, the transaction is committable.
-- If -1, the transaction is uncommittable and should be rolled back.
-- XACT_STATE = 0 means there is no transaction and a commit or rollback operation would generate an error. -- Test whether the transaction is uncommittable.
IF (XACT_STATE()) = -1
BEGIN
--Logging Exception info, as the transaction is in an uncommittable state. Rolling back transaction.
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
ROLLBACK TRANSACTION;
END;
-- Test whether the transaction is active and valid.
IF (XACT_STATE()) = 1
BEGIN
--'The transaction is committable. Committing transaction.'
COMMIT TRANSACTION;
END;
END CATCH;
GO
2,抛出异常消息
在SQL Server 2012及之后的版本中,使用 Throw 关键字代替RaiseError,用于抛出异常,并将执行控制权转移到Catch 代码块
THROW [error_number, error_message, error_state];
五,DBCC 命令
1,查看数据库的隔离级别
DBCC USEROPTIONS
参考文档:
Metadata Functions (Transact-SQL)
Configuration Functions (Transact-SQL)
System Functions (Transact-SQL)
SQL Server 常用内置函数的更多相关文章
- SQL Server 常用内置函数(built-in)持续整理
本文用于收集在运维中经常使用的系统内置函数,持续整理中 一,常用Metadata函数 1,查看数据库的ID和Name db_id(‘DB Name’),db_name('DB ID') 2,查看对象的 ...
- SQL Server 2012 - 内置函数
文本函数 --系统函数位置: 可编程性→函数→系统函数 -- 查询ASCII码 select ASCII('a') --查询数值对应的ASCII码 select CHAR(97) --Left . R ...
- oracle 与sql server 部分内置函数替换
1,trunc--convert oracle: select trunc(sysdate) from dual 输出:2016/5/24 sql server:select CONVERT(va ...
- MYSQL常用内置函数详解说明
函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...
- SqlServer常用内置函数
--======================================= -- SQL常用内置函数 --======================================= --判 ...
- Python 基础之常用内置函数
1.常用内置函数 (1)abs 绝对值函数 intvar = -9 res = abs(intvar)print(res) (2)round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数 ,则 ...
- Python常用模块中常用内置函数的具体介绍
Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...
- MySQL学习笔记_7_MySQL常用内置函数
MySQL常用内置函数 说明: 1)可以用在SELECT/UPDATE/DELETE中,及where,orderby,having中 2)在函数里将字段名作为参数,变量的值就是字段所对应的每一行的值. ...
- PYTHON语言之常用内置函数
一 写在开头本文列举了一些常用的python内置函数.完整详细的python内置函数列表请参见python文档的Built-in Functions章节. 二 python常用内置函数请注意,有关内置 ...
随机推荐
- 使用Fiddler模拟客户端http响应
在客户端开发中,常常需要对一些特殊情况做处理,比如404.503等,又比如服务返回错误数据等.而测试这些情况会比较麻烦,往往都是找开发人员配合修改代码,这样效率不高. 接触到Fiddler之后,这样的 ...
- [Synology] [群晖] 关闭被占用的文件
1. Control Panel: Control Panel > Terminal & SNMP Enable SSH service 2. SSH into Synology 3. ...
- Javascript基础笔记(部分)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 熟悉LINUX系统
常用的Shell命令 当用户登录到字符界面系统或使用终端模拟窗口时,就是在和称为shell的命令解释程序进行通信.当用户在键盘上输入一条命令时,shell程序将对命令进行解释并完成相应的动作.这种动作 ...
- 2017 SDN第一次作业
(1)我会选择的,因为网络现在越来越重要,各行各业都离不开网络,这个方向可以适合各种岗位,感觉比较容易就业.但选这个课是为了多学一点东西,没想太多,嘎嘎嘎. (2)SDNLAB,是一个SDN的大的中文 ...
- 基于Java反射的map自动装配JavaBean工具类设计
我们平时在用Myabtis时不是常常需要用map来传递参数,大体是如下的步骤: public List<Role> findRoles(Map<String,Object> p ...
- window与Linux之间的文件传输
使用工具:WinSCP WinSCP可以直接通过SSH链接你的linux服务器:然后进行文件的复制操作:并且可以直接编辑文件. 1.下载WinSCP 2.登录WinSCP,输入你的Linux 的IP地 ...
- 百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制11。
1.POI爬取方法说明 1.1AK申请 登录百度账号,在百度地图开发者平台的API控制台申请一个服务端的ak,主要用到的是Place API.检校方式可设置成IP白名单,IP直接设置成了0.0.0.0 ...
- 死磕nginx系列--使用nginx做负载均衡
使用nginx做负载均衡的两大模块: upstream 定义负载节点池. location 模块 进行URL匹配. proxy模块 发送请求给upstream定义的节点池. upstream模块解读 ...
- SDOI 2018 R2 游记
一篇真正的“游记”. DAY -3 下午: 今天老师批准了我去省选划水的请假要求. 批准之后感觉学习非常有动力,顺便忽悠别的同学和我一起去,然而wzx是唯一一个表示可以考虑一下的同学,其他同学直接一口 ...