sql CLR 程序集部署步骤比较多且复杂 这里自己记录一下
项目主要参考引用下面这些博客
1 项目在nberglund 的开源项目上修改而来 https://github.com/nberglund/RabbitMQ-SqlServer
2 二进制dll 转换工具 https://github.com/SqlQuantumLeap/BinaryFormatter
3 关于sql server 安全程序及讨论及解决方案
部署的基本环境
- 数据库服务器版本 MSSql Server 2014+
- MQ .net 客户端版本 RabbitMq.Client 4.0(.net framework 4)
低于2014 版本的sql server 只能支持到 .net framework 3.5 在我的项目中没有去做支持,nberglund 的开源项目中有对应的 程序集
解决方案的结构
- RabbitMQSqlClr4:最终要部署到clr 中的程序集 处理消息的发送
- RabbitMQSqlClr.Consumer:是一个控制台mq 消费端 接收消息后处理消息的。
- 算上 依赖的关联 RabbitMQ.Client Microsoft.Diagnostics.Tracing.EventSource 实际注册到 CLR 中的程序及一共有3个dll
在安装脚本中已经通过BinaryFormatter工具将编译后的dll 转换成了二进制放在了脚本中了。
部署成功后在sql server 中看见这3个程序集
按数字顺序执行部署脚本 部署时会有涉及sql clr 安全性的问题 这个请参考引用博客中的讨论 这里的处理是关闭安全选项 部署不安全的程序集
部署完 程序集后 我们需要配置 脚本中创建的一些配置表 填入 服务器登陆信息等等配置
tb_RabbitEndpoint 表配置当前数据库连接例如:server=127.0.0.1,25835; database=RabbitMQTest; uid=sa; pwd=pw
tb_RabbitSetting 表配置Mq 服务器相关信息 :
最后 全部配置完成后 可以 调用 pr_SomeProcessingStuff 存储过程 发送mq 消息
如果修改mq和数据库连接配置后 感觉 没有生效的话 可以重启一下 sql server 数据库实例