【发布时间】:2012-05-08 16:26:40
【问题描述】:
我创建了使用 CLR 触发器连接到 WCF 服务器并通知它有关数据库更改的系统。 它在 SQL Server 2008 R2 上运行正常。 现在我正在尝试在 SQL Server 2012 上迁移。 要使用 WCF,我需要加载 SMDiagnostics.dll 程序集以及其他程序集。 我检查了 db 中是否启用了 clr,并将 trustworthy 设置为“on”,我禁用了 WCF 调试,我检查了 SQL 服务器是否在本地系统帐户下运行,因此权限没有问题。 现在我的问题是当我运行以下命令时
IF NOT EXISTS (SELECT * FROM sys.assemblies asms WHERE asms.name = N'SMdiagnostics')
create assembly [SMdiagnostics]
from 'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMdiagnostics.dll'
with permission_set = unsafe
go
我收到以下错误
警告:Microsoft .NET Framework 程序集 'smdiagnostics, 版本=3.0.0.0,文化=中性,publickeytoken=b77a5c561934e089, 处理器架构=msil。您正在注册未经过全面测试 在 SQL Server 托管环境中,不受支持。在里面 将来,如果您升级或维修此程序集或 .NET Framework, 您的 CLR 集成例程可能会停止工作。请参考 SQL Server 在线书籍了解更多详情。消息 6586,第 16 层,状态 1,第 2 行 无法安装程序集“SMdiagnostics”,因为现有 政策会阻止它被使用。
SMdiagnostics.dll 存在于指定路径。 据我了解它在 SQL Server 2012 或 GAC 中的某种政策,但是我找不到任何关于 SMdiagnostics 的政策。 任何想法如何解决它? 谢谢。
【问题讨论】:
-
MSDN 论坛上的人们指出,我试图将程序集从 .net 版本 3.0 加载到支持框架 4.0 或更高版本的 SQL Server 2012 中。这解决了一些问题,但我仍然无法从 CLR 触发器加载一些我需要使用 WCF 的程序集。 blogs.msdn.com/b/dohollan/archive/2012/04/20/…
标签: wcf triggers clr .net-assembly sql-server-2012