【问题标题】:unable to deploy sql clr stored procedure (unable to verify metadata)无法部署 sql clr 存储过程(无法验证元数据)
【发布时间】:2010-12-08 22:04:32
【问题描述】:

我正在尝试在 SQL Server 2008 上为 SQL CLR (.Net 3.5) 程序集运行 CREATE ASSEMBLY 命令。它返回一个神秘的错误消息:

An error occurred while gathering metadata from assembly 'My.Awesome.Assembly' with HRESULT 0x80004005.

为什么要这样做,如何在不将其部署为 UNSAFE 的情况下修复它?


我已经完成的步骤:

  1. 遵守http://msdn.microsoft.com/en-us/library/ms403273.aspx 中的所有规则
  2. 未使用静态字段
  3. 已经创建了 2 个其他 SQL CLR 程序集,可以很好地部署

【问题讨论】:

  • 您是否在 ILDASM 或 Refelctor 中看到了您的程序集内容!可能会有所帮助。
  • 您能否提供有关程序集中代码的更多信息?另外,请参阅这篇文章 - msdn.microsoft.com/en-us/library/ms189566.aspx

标签: c# sql sql-server stored-procedures sqlclr


【解决方案1】:

这就是为我解决问题的方法;供任何人将来参考,SQL CLR 的东西非常,非常挑剔。

我有一个这样的构造函数:

public MyObject(IEnumerable<T>  items)
{
    _innerItems = items.ToDictionary(i => i.Key);
}

我改成这样了:

public MyObject(IEnumerable<T>  items)
{
    _innerItems = new Dictionary<int, T>();
    foreach (var item in items)
    {
        _innerItems.Add(item.Key, item);
    }
}

然后它就可以部署了。然后我开始用头撞我的桌子。两种方法,功能等效;一个有效,一个有一个神秘的部署错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    相关资源
    最近更新 更多