通过在 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功能相关推荐

  1. sql server clr 集成系列之二 简单的sql 函数

    第一, 新建类库,引用命名空间,using Microsoft.SqlServer.Server; 第二, 编写一个公共类,含有一个公共的静态函数,并且具有特性:[Microsoft.SqlServe ...

  2. SQL Server CLR 启用、部署

    sqlserver启用CLR exec sp_configure 'clr enabled',1 --1,启用clr 0,禁用clr RECONFIGURE SQL Server CLR 部署到某个数 ...

  3. 无废话-SQL Server 2005新功能(1) - TSQL

    无废话-SQL Server 2005新功能(1) - TSQL SQL Server 2005相对于SQL Server 2000改进很大,有些还是非常实用的. 举几个例子来简单说明 这些例子我引用 ...

  4. SQL Server 2016 新功能之综述

    冬去春来,发现之前最后一篇写在2012年,又过去了5年了,时间如飞啊.那时候SQL 2012 发布让人兴奋了一把,哪知道时间如刀,刀刀催人老啊,今天SQL 2016都发布了很久了,很快SQL On l ...

  5. SQL Server中的功能和存储过程比较

    介绍 (Introduction) In a previous article, Functions vs stored procedures in SQL Server, we compared F ...

  6. SQL Server 2012新功能

    SQL Server 2012 对微软来说是一个重要产品.微软把自己定位为可用性和大数据领域的领头羊. 1. AlwaysOn -这个功能将数据库的镜像提到了一个新的高度.用户可以针对一组数据库做灾难 ...

  7. Sql Server 2016新功能之Row-Level Security(值得关注)

    Sql Server 2016 有一个新功能叫 Row-Level Security ,大概意思是行版本的安全策略(原来我是个英语渣_(:з」∠)_) 直接上例子.这个功能相当通过对表添加一个函数作为 ...

  8. C#毕业设计——基于C#+vs.net+SQL Server的多功能聊天软件设计与实现(毕业论文+程序源码)——多功能聊天软件

    基于C#+vs.net+SQL Server的多功能聊天软件设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+vs.net+SQL Server的多功能聊天软件设计与实现,文章末尾附有 ...

  9. SQL Server CLR全功略之一---CLR介绍和配置

    Microsoft SQL Server 现在具备与 Microsoft Windows .NET Framework 的公共语言运行时 (CLR) 组件集成的功能.CLR 为托管代码提供服务,例如跨 ...

最新文章

  1. php7-fpm webtatic,如何在 CentOS 7 中使用 Nginx 和 PHP7-FPM 安装 Nextcloud
  2. 小甲鱼-013元组tuple:上了枷锁的列表
  3. Spring和SpringMVC的父子容器关系
  4. python grpc 并发_用Python进行gRPC接口测试(二)
  5. 为什么接口需要加密传输
  6. linux mysql temp 设置_linux上mysql的简单入门
  7. Linux常用命令(八)LVM逻辑卷管理
  8. \Grokking Algorithms\简介与作者采访
  9. java swing 多个线程,Swing与多线程
  10. android 编程 输入矩阵,Android中Matrix的pre post set方法理解
  11. 一种HBase上Region级别的二级索引存储
  12. MySQL——页和索引
  13. 一文看懂机器人技术的发展史
  14. Pikachu靶场暴力破解通关
  15. Spring框架学习路线
  16. 【强化学习与机器人控制论文 2】基于强化学习的五指灵巧手操作
  17. 交换两个变量的值的swap函数
  18. 【重磅】全球AI芯片排行榜发布 解读入围的七家中国公司
  19. 《疯狂Java讲义》读书笔记4
  20. 金融专业计算机需了解到什么,金融工程专业对计算机的能力要求到底是什么?...

热门文章

  1. 基于ECI+FaaS构建游戏战斗结算服最佳实践
  2. Apache Flink Meetup,1.13 新版本发布 x 互娱场景实践分享的开发者盛筵!
  3. 玩吧高速增长的数据上云实践
  4. 运维大杀器来了,未来云上服务器或将实现无人值守
  5. 阿里云边缘计算与云边端协同网络的融合与挑战
  6. 温商机器人企业_7家温商企业上榜“中国企业500强”
  7. 游戏音乐是游戏内涵的补充
  8. 剑网三谜题终于揭开,药宗四系开合得当,有输出有治疗
  9. ASP.NET Core必备笔试题(含答案)
  10. 解决win2003远程桌面只能最多连接2个用户的问题