开发者

unable to deploy sql clr stored procedure (unable to verify metadata)

I am trying to run the CREATE ASSEMBLY command for a SQL CLR (.Net 3.5) assembly on SQL Server 2008. It returns a cryptic error message:

An error occurred while gathering me开发者_JAVA技巧tadata from assembly 'My.Awesome.Assembly' with HRESULT 0x80004005.

Why is it doing this, and how can I fix it without deploying it as UNSAFE?


steps I have done:

  1. Followed all rules in http://msdn.microsoft.com/en-us/library/ms403273.aspx
  2. Used no static fields
  3. Have created 2 other SQL CLR assemblies that deploy just fine


This is what solved the problem for me; for future reference to anyone out there, SQL CLR stuff is very, very picky.

I had a constructor like this:

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

I changed it to this:

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

And it was then able to deploy. I then proceeded to pound my head against my desk. Two methods, functionally equivalent; one works, and one has a cryptic deployment error message.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜