【问题标题】:SQL CLR - Migration from 2008 R2 to 2012.SQL CLR - 从 2008 R2 迁移到 2012。
【发布时间】:2013-07-08 04:04:11
【问题描述】:

我在 SQL 2008 R2 上有一堆 SQL CLR 程序集。这些程序集的目标是 .Net Framework 3.5。鉴于 SQL 2008 支持 2.0 .NET 框架版本,我假设 SQL 从 System GAC 加载了安全程序集,并且预期将不安全程序集安装在 SQL 中。我对这些不安全程序集的引用是 .NET 2.0 版。现在,当我将此数据库恢复到 SQL 2012 时,我的 CLR 代码因“未找到对不安全程序集 4.0 版的引用”而失败。我不明白这个错误。 2.0 版本的不安全系统程序集存在于 DB mdf 文件本身中。 SQL 为什么要寻找 4.0?我想我错过了“SQL 支持 x 版本的 .NET 框架”的含义。

【问题讨论】:

标签: .net sql-server .net-assembly sqlclr


【解决方案1】:

我能够找到我所面临问题的根本原因。 SQL 2012 支持用于 SQLCLR 的 .NET 框架 4.0 版,因此从 4.0 框架加载所有框架程序集。因此,我需要升级所有程序集以使用 4.0 框架程序集。 http://blogs.msdn.com/b/dohollan/archive/2012/04/20/sql-server-2012-sqlclr-net-framework-version.aspx?CommentPosted=true#commentmessage

但即使在那之后,事情也对我不起作用。事实证明,在 4.0 中,.NET 将一些框架程序集(如 System.ServiceModel)从纯 .Net 程序集更改为混合模式程序集。 SQL CLR 无法加载此类程序集。因此,所有依赖于 2012 年前混合模式程序集的用户定义程序集在 2012 年不再工作:( 最受打击的是以前工作的 SQL 和 WCF 集成在 2012 年完全中断,因为 WCF 依赖于 ServiceModel。 更多这里http://blogs.msdn.com/b/psssql/archive/2013/02/23/unable-to-register-net-framework-assembly-not-in-the-supported-list.aspx

我们最终在 WCF 操作上编写了一个简单的 Webservice 包装器,并在 SQLCLR 中编写了一个 Webservice 客户端。

【讨论】:

  • 您能否提供步骤/示例代码如何完成 Webservice 包装器以及 SQLCLR 中的 Webservice 客户端?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 2023-03-26
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多