gpt4 book ai didi

wcf - MSSQL 2012 为 WCF 创建 CLR 触发器失败

转载 作者:行者123 更新时间:2023-12-04 02:50:43 29 4
gpt4 key购买 nike

我创建了使用 CLR 触发器连接到 WCF 服务器并通知它有关数据库更改的系统。
它在 SQL Server 2008 R2 上运行正常。
现在我正在尝试在 SQL Server 2012 上进行迁移。
要使用 WCF,我需要加载 SMDiagnostics.dll 程序集以及其他程序集。
我检查了在 db 中启用了 clr ,并将 trustworthy 设置为“on”,禁用了 WCF 调试,检查了 SQL Server 在本地系统帐户下运行,因此权限没有问题。
现在我的问题是当我运行以下命令时

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

我收到以下错误

Warning: The Microsoft .NET Framework assembly 'smdiagnostics, version=3.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil.' you are registering is not fully tested in the SQL Server hosted environment and is not supported. In the future, if you upgrade or service this assembly or the .NET Framework, your CLR integration routine may stop working. Please refer SQL Server Books Online for more details. Msg 6586, Level 16, State 1, Line 2 Assembly 'SMdiagnostics' could not be installed because existing policy would keep it from being used.



SMdiagnostics.dll 存在于指定路径。
据我了解它在 SQL Server 2012 或 GAC 中的某种策略,但是我找不到关于 SMdiagnostics 的任何策略。
任何想法如何解决它?
谢谢。

最佳答案

我们一个月前就同一问题向 Microsoft 提交了一个问题。我的猜测是您无法加载 System.IdentityModel.dll,它是 System.ServiceModel 程序集的依赖项。微软已经向我们表明,虽然这在 SQL 2005 和 SQL 2008 中有效,但它是 SQL 2012 中的一个已知错误,他们不会在 SQL 2014 之前修复它。

除了 2012 年还很新之外,这一事实尚未广为人知,这对我来说有点意外。但这意味着您不能使用我所说的 Microsoft 在 SQL CLR (WCF) 中的最佳实践进程间通信技术,请注意 .NET 远程处理也会被淘汰,因为它也使用 ServiceModel 程序集。

我希望对他们说我们应该使用什么进行更详细的说明,我正在研究是否有一种方法可以编写基于 WSE 的 SQL CLR,但对前景并不十分兴奋。

我对此感到非常不满,并希望其他提高声音的人指出这是一个真正的问题,应该被视为 Not Acceptable 。

关于wcf - MSSQL 2012 为 WCF 创建 CLR 触发器失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10502543/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com