Использование CLR UDT в таблице дает «неразрешенную ссылку на тип Sql» при развертывании

Я создал CLR UDT для использования с SQL Server 2008 и теперь пытаюсь использовать его из проекта базы данных.

  • И проект CLR UDT, и проект базы данных находятся в одном решении в Visual Studio.
  • Для обоих установлено значение Развернуть в настройках развертывания решения.
  • Оба они настроены в соответствующих параметрах проекта для развертывания в одной и той же базе данных.
  • Я добавил ссылку и подтвердил результирующую зависимость от проекта базы данных к проекту CLR UDT.

Тем не менее, когда я пытаюсь «развернуть решение», он создает (примечание: нигде не развертывает) проект SQL CLR, затем начинает выполнять «проверку модели проекта» проекта базы данных и выдает Error SQL03006: Column [schema].[table].[column] has an unresolved reference to Sql Type [typeschema].[typename]. в столбце базы данных, где Я использую тип CLR.

Я попытался зайти в «Инструменты» -> «Параметры» -> «Инструменты базы данных» -> «Сравнение схем» -> «Microsoft SQL Server 2008» и в разделе «Типы объектов» настроить его на игнорирование User-Defined Types (CLR), но это не имело никакого видимого эффекта.

Если я разверну проект CLR UDT в базе данных, войду в эту базу данных и DECLARE переменную этого типа через SQL Server Management Studio, которая работает (как и ожидалось). Таким образом, это довольно явно имеет какое-то отношение к идее Visual Studio о достоверности модели, а не к реальной проблеме с тем, что может быть развернутым результатом, если только попытаться (и сделать что-то в правильном порядке).

Google был явно бесполезен. Что мне не хватает?


person user    schedule 06.05.2013    source источник


Ответы (1)


Я нашел ответ, и он был очень простым, когда я понял, что происходит, но не таким очевидным до этого.

Что было необходимо, так это добавить команду CREATE TYPE в сценарий создания элемента в проекте базы данных, чтобы CLR UDT стал известен как таковой для SQL Server. Visual Studio делает это автоматически при развертывании сборки, но, по-видимому, не учитывает это при проверке модели проекта базы данных.

С CREATE TYPE все работает, как и ожидалось, и игнорирование ошибок не требуется.

person user    schedule 06.05.2013