【发布时间】:2016-03-23 06:14:47
【问题描述】:
我正在开发一种解决方案,该解决方案将与第三方应用程序的 SDK 交互,并最终创建一个数据集以将数据迁移到我们的 SQL Server 2014 实例上的目标数据库中。此接口是通过 SQL Server CLR 存储过程实现的。在 C# 端创建 CLR 程序集时使用了以下参考:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using (3rd party SDK);
using System.Dynamic;
代码正确构建。但是,当我尝试使用 CREATE ASSEMBLY 语句创建程序集时,出现以下错误:
Assembly 'MyAssembly' 引用了程序集 'system.drawing, version=4.0.0.0,culture=neutral, publickeytoken=b03f5f7f11d50a3a.',它在当前数据库中不存在。 SQL Server 试图从引用程序集所在的同一位置定位并自动加载引用程序集,但该操作失败(原因:2(系统找不到指定的文件。))。请将引用的程序集加载到当前数据库中,然后重试您的请求。
更进一步,如果我尝试根据明显缺失的引用 system.drawing 创建一个不安全的程序集(请记住,我确实在目标数据库中将 trustworthy 设置为 true),我会收到以下错误:
为程序集“System.Drawing”创建程序集失败,因为程序集“System.Drawing”验证失败。检查引用的程序集是否是最新的并且受信任(对于 external_access 或不安全)以在数据库中执行。如果有任何 CLR 验证程序错误消息将跟随此消息
[ : System.Drawing.Image::Finalize][mdToken=0x600000d][offset 0x00000000] 代码大小为零。 (等,等相同的错误在system.drawing中的不同方法上重复)
我已经拥有在解决方案和目标 SQL Server 数据库之间匹配到 v4.0 的 .NET 框架。老实说,我在这里不知所措,这似乎比应该做的要难得多。我什至没有直接引用 System.Drawing,但出于某种奇怪的原因我需要它。
【问题讨论】:
标签: c# .net visual-studio-2013 sql-server-2014 sqlclr