【问题标题】:I cannot use WCF in SQL CLR 2012我不能在 SQL CLR 2012 中使用 WCF
【发布时间】:2014-08-14 09:59:03
【问题描述】:

在将我的程序集添加到 SQL Server 2012 时,依赖关系在 system.servicemodel 中绘制,而在 microsoft.visualbasic.activities.compiler 中绘制,并带来以下错误:

CREATE ASSEMBLY for assembly '<assembly name>' failed because assembly 'microsoft.visualbasic.activities.compiler' is malformed or not a pure .NET assembly. 
Unverifiable PE Header/native stub.

似乎无法将 WCF DLL 添加到 SQL Server 2012。

有解决方法吗?这在 SQL Server 2014 中是否已修复?

【问题讨论】:

  • 您能否向我们这些喜欢体面架构的人解释一下,为什么您会想到在数据库后端运行 WCF?
  • 同意@TomTom 的观点,这似乎是一个非常糟糕的主意。带有脚本任务的 SSIS 是一种向 WCF 服务发送数据/从 WCF 服务发送数据的简单方法。
  • 我实际上并不想使用 WCF,但 system.servicemodel 中有一些依赖项。我想避免将这些依赖项排除在外,因为这是一个相当大的项目,但我们可能会这样做。在架构上它也会更干净。

标签: sql sql-server wcf clr sqlclr


【解决方案1】:

不,出于安全原因,SQL-Server 仅允许相当有限的 C# 子集。
例如,添加对 System.Web 的引用就足够了,它不起作用。

也许您可以从单声道源代码中提取您需要的 System.ServiceModel 部分并让它以这种方式工作。幸运的是,如果您只需要一两个函数调用,那么您可以通过一些更改使其工作。

附带说明:如果您可以在 CLR 存储过程中添加 WCF,则可以使 SQL-Express 使用 HTTP-Endpoints。但是 SQL-Server Express 的定义限制之一是 Express 版本不允许这样做。如果可以的话,你可以绕过这个限制,而微软当然不希望这样。

另请参阅此帖子:
WCF Client Inside SQL CLR

【讨论】:

  • 您想知道这是否已在 SQL Server 2014 中修复?
  • 修复了什么?他们允许一种完全无聊的方法,没有任何尊重数据库的人会尝试?而不是。
  • @Oszkar:正如我所说:不,这不是错误,因此没有修复。
猜你喜欢
  • 2023-03-10
  • 2015-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
相关资源
最近更新 更多