SQL Server 2012 CLR创建程序集时出错
本文关键字:程序集 出错 创建 CLR Server 2012 SQL | 更新日期: 2023-09-27 18:20:47
当一行插入到特定表中时,我必须从SQL Server发送Google客户端消息(GCM)通知。
我创建了一个Service Broker来管理队列等等。在我的表上,我使用插入操作的触发器向队列添加"工作"。
我希望我的Service Broker调用CLR过程来发送GCM通知,并且我在Visual Studio中创建了它。
我的问题是,当我试图在SQL Server中创建程序集时,我会遇到很多错误,而且似乎还需要许多其他框架dll(例如System.Runtime
…等)
有人能告诉我为什么吗?有什么建议吗?
提前感谢
SQLCLR是一个非常受限的环境。支持的.NET Framework库的MSDN页面列出了保证可以工作的DLL。如果您的项目引用的DLL不在该列表中,则必须尝试手动加载它。但是,这并不能保证有效,或者如果有效,也不能保证在.NET Framework或SQL Server的更新中继续工作。有关在SQL Server的CLR主机中工作的细微差别的更多详细信息,请参阅我写的以下文章(该网站需要免费注册):
通往SQLCLR Level 5的阶梯:开发(在SQL Server中使用.NET)
现在,您似乎正在尝试使用Google Clould(而非客户端)消息:概述。从我在该文档中看到的,与GCM连接服务器通信的最简单、最稳定的方法是使用HTTP协议,手动构建JSON(这应该很容易做到),并使用HttpWebRequest调用GCM服务器。
我建议"手动"构造JSON的原因是,DataContractJsonSerializer存在于System.Runtime.Serialization.dll中,并且它不是受支持的.NET Framework库之一(如前所述)。由于您已经在使用HTTP,您只需要删除.NET JSON序列化,而应该使用StringBuilder
来构造它。不要忘记从项目中删除对System.Runtime.serialization的引用。
我在这些答案中有一些额外的信息:
- 是否从SQL CLR调用web服务
- 如何从SQL Server存储过程调用webservice