невозможно развернуть хранимую процедуру sql clr (невозможно проверить метаданные) - PullRequest
1 голос
/ 07 декабря 2010

Я пытаюсь выполнить команду CREATE ASSEMBLY для сборки SQL CLR (.Net 3.5) на SQL Server 2008. Она возвращает загадочное сообщение об ошибке:

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

Почему это происходит, и как я могу исправить это, не развернув его как небезопасный?


шагов, которые я сделал:

  1. Соблюдает все правила в http://msdn.microsoft.com/en-us/library/ms403273.aspx
  2. Не используется статических полей
  3. Создано 2 другие сборки SQL CLR, которые развертываются просто отлично

1 Ответ

0 голосов
/ 08 декабря 2010

Это то, что решило проблему для меня;для будущей ссылки на кого-то, 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);
    }
}

И тогда он смог развернуться.Затем я принялся колотить головой по столу.Два метода, функционально эквивалентные;один работает, а другой имеет загадочное сообщение об ошибке развертывания.

...