SQL SERVER CLR Trigger功能
通过在 Microsoft SQL Server 中托管 CLR(称为 CLR 集成),开发人员可以在托管代码中编写存储过程、触发器、用户定义函数、用户定义类型和用户定义聚合函数, 改变了以前只能通过T-SQL语言来实现这些功能的局面。因为托管代码在执行之前会编译为本机代码,所以,在有些方案中可以大大提高性能。
1. 编写C#代码,编译成.NET 3.5的dll
public class Program
{[SqlTrigger(Name = @"UsersAudit", Target = "[dbo].[users]", Event = "FOR INSERT")]public static void UsersAudit(){SqlContext.Pipe.Send("UsersAudit start");// Get the trigger context.string userName;string realName;SqlCommand command;SqlTriggerContext triggContext = SqlContext.TriggerContext;SqlDataReader reader;switch (triggContext.TriggerAction){case TriggerAction.Insert:// Retrieve the connection that the trigger is using.using (SqlConnection connection= new SqlConnection(@"context connection=true")){connection.Open();// Get the inserted row.command = new SqlCommand(@"SELECT * FROM INSERTED;",connection);// Get the user name and real name of the inserted user.reader = command.ExecuteReader();reader.Read();userName = (string)reader[0];realName = (string)reader[1];reader.Close();// Insert the user name and real name into the auditing table.command = new SqlCommand(@"INSERT [dbo].[UserNameAudit] (userName, realName) "+ @"VALUES (@userName, @realName);", connection);command.Parameters.Add(new SqlParameter("@userName", userName));command.Parameters.Add(new SqlParameter("@realName", realName));command.ExecuteNonQuery();}break;}SqlContext.Pipe.Send("UsersAudit end");}[Microsoft.SqlServer.Server.SqlProcedure]public static void HelloWorld(out string text){SqlContext.Pipe.Send("Hello world!" + Environment.NewLine);text = "Hello world!";}
}
2. SMSS中选择“可编程性” -> "程序集"->“右键”-》“新建程序集”,将编译的dll注册
3.打开SMSS查询窗口,执行一下的sql语句将触发器和存储过程注册。注意程序集名称和命名空间名称的格式。
CREATE PROCEDURE hello
@i nchar(25) OUTPUT
AS
EXTERNAL NAME SqlTriggerContextTest.Program.HelloWorld
GO
-- if the HelloWorldProc class is inside a namespace (called MyNS),
-- the last line in the create procedure statement would be
-- EXTERNAL NAME helloworld.[MyNS.HelloWorldProc].HelloWorld CREATE TRIGGER UsersAudit
ON [dbo].[users]
AFTER INSERT, UPDATE
AS
EXTERNAL NAME SqlTriggerContextTest.Program.UsersAudit
GO
4. 可以执行sql语句查看效果
运行 select * from sys.assemblies 可以查看注册的程序集
如果dll中需要使用TCP功能,那么程序集必须签名。
参考:https://www.cnblogs.com/alexcodinglife/articles/5563148.html
转载于:https://www.cnblogs.com/Martianhh/p/10826857.html
SQL SERVER CLR Trigger功能相关推荐
- sql server clr 集成系列之二 简单的sql 函数
第一, 新建类库,引用命名空间,using Microsoft.SqlServer.Server; 第二, 编写一个公共类,含有一个公共的静态函数,并且具有特性:[Microsoft.SqlServe ...
- SQL Server CLR 启用、部署
sqlserver启用CLR exec sp_configure 'clr enabled',1 --1,启用clr 0,禁用clr RECONFIGURE SQL Server CLR 部署到某个数 ...
- 无废话-SQL Server 2005新功能(1) - TSQL
无废话-SQL Server 2005新功能(1) - TSQL SQL Server 2005相对于SQL Server 2000改进很大,有些还是非常实用的. 举几个例子来简单说明 这些例子我引用 ...
- SQL Server 2016 新功能之综述
冬去春来,发现之前最后一篇写在2012年,又过去了5年了,时间如飞啊.那时候SQL 2012 发布让人兴奋了一把,哪知道时间如刀,刀刀催人老啊,今天SQL 2016都发布了很久了,很快SQL On l ...
- SQL Server中的功能和存储过程比较
介绍 (Introduction) In a previous article, Functions vs stored procedures in SQL Server, we compared F ...
- SQL Server 2012新功能
SQL Server 2012 对微软来说是一个重要产品.微软把自己定位为可用性和大数据领域的领头羊. 1. AlwaysOn -这个功能将数据库的镜像提到了一个新的高度.用户可以针对一组数据库做灾难 ...
- Sql Server 2016新功能之Row-Level Security(值得关注)
Sql Server 2016 有一个新功能叫 Row-Level Security ,大概意思是行版本的安全策略(原来我是个英语渣_(:з」∠)_) 直接上例子.这个功能相当通过对表添加一个函数作为 ...
- C#毕业设计——基于C#+vs.net+SQL Server的多功能聊天软件设计与实现(毕业论文+程序源码)——多功能聊天软件
基于C#+vs.net+SQL Server的多功能聊天软件设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+vs.net+SQL Server的多功能聊天软件设计与实现,文章末尾附有 ...
- SQL Server CLR全功略之一---CLR介绍和配置
Microsoft SQL Server 现在具备与 Microsoft Windows .NET Framework 的公共语言运行时 (CLR) 组件集成的功能.CLR 为托管代码提供服务,例如跨 ...
最新文章
- php7-fpm webtatic,如何在 CentOS 7 中使用 Nginx 和 PHP7-FPM 安装 Nextcloud
- 小甲鱼-013元组tuple:上了枷锁的列表
- Spring和SpringMVC的父子容器关系
- python grpc 并发_用Python进行gRPC接口测试(二)
- 为什么接口需要加密传输
- linux mysql temp 设置_linux上mysql的简单入门
- Linux常用命令(八)LVM逻辑卷管理
- \Grokking Algorithms\简介与作者采访
- java swing 多个线程,Swing与多线程
- android 编程 输入矩阵,Android中Matrix的pre post set方法理解
- 一种HBase上Region级别的二级索引存储
- MySQL——页和索引
- 一文看懂机器人技术的发展史
- Pikachu靶场暴力破解通关
- Spring框架学习路线
- 【强化学习与机器人控制论文 2】基于强化学习的五指灵巧手操作
- 交换两个变量的值的swap函数
- 【重磅】全球AI芯片排行榜发布 解读入围的七家中国公司
- 《疯狂Java讲义》读书笔记4
- 金融专业计算机需了解到什么,金融工程专业对计算机的能力要求到底是什么?...
热门文章
- 基于ECI+FaaS构建游戏战斗结算服最佳实践
- Apache Flink Meetup,1.13 新版本发布 x 互娱场景实践分享的开发者盛筵!
- 玩吧高速增长的数据上云实践
- 运维大杀器来了,未来云上服务器或将实现无人值守
- 阿里云边缘计算与云边端协同网络的融合与挑战
- 温商机器人企业_7家温商企业上榜“中国企业500强”
- 游戏音乐是游戏内涵的补充
- 剑网三谜题终于揭开,药宗四系开合得当,有输出有治疗
- ASP.NET Core必备笔试题(含答案)
- 解决win2003远程桌面只能最多连接2个用户的问题