无法部署sql clr存储过程(无法验证元数据)

时间:2010-12-07 17:31:59

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

我正在尝试在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. 不使用静态字段
  4. 创建了2个其他SQL CLR程序集,它们可以很好地部署

1 个答案:

答案 0 :(得分:0)

这就是为我解决问题的原因;为了将来参考任何人,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);
    }
}

然后它就可以部署了。然后我继续把头撞在桌子上。两种方法,功能相同;一个工作,一个有一个神秘的部署错误消息。