dacpac - проблема с ссылочным путем сборки CLR

Ниже приведен точный сценарий в моем проекте базы данных, где я создаю dacpac для развертывания баз данных на целевом экземпляре SQL:

  • проект базы данных имеет ссылку на сборку CLR.
  • Сервер сборки TFS используется для сборки проекта
  • dacpac создается в процессе сборки TFS

- когда я пытаюсь запустить sqlpackage.exe для развертывания dacpac (сгенерированного в процессе сборки TFS) в моей среде, я получаю сообщение об ошибке -

*** Не предоставлен файл для справки XXXX.XXXX.XXXX.dll; Развертывание может закончиться неудачей. Когда C:\Temp\Dacpac_testing\XXX.XXXXX.XXXX.dacpac был создан, исходный ссылочный файл находился в C:\BUILDS\1\XXXX\XXXX\SRC\XXXXXXXX\ASSEMBLIES\XXXX.XXXX.XXXX.dll

Как создать dacpac для ссылки на путь сборки CLR в среде развертывания (а не тот, который использовался во время создания dacpac)

Любая помощь по этому вопросу будет высоко ценится.

2 ответа

Решение

Извините, я сейчас выбрал только эту тему, но у меня была похожая проблема. Откройте ссылки в проекте Sql Server, перейдите в dll, на который вы ссылаетесь, щелкните правой кнопкой мыши и выберите свойства.

Измените следующие параметры: Сгенерировать сценарий SQL: True Model Aware: True

Выберите соответствующий набор разрешений, как того требует код clr.

Я смог решить эту проблему, включив все файлы в папку bin/output, созданную проектом SSDT на машине, на которой развертывается dacpac. Эта папка включает в себя все библиотеки DLL и DAPAC, на которые есть ссылки. Я также включил файл publish.xml и некоторые примеры файлов SQLPackage cmd в выходные данные сборки, чтобы упростить развертывание.

Я нашел ответ из поста Ричарда Гавела на форуме SQL Server Data Tools. https://social.msdn.microsoft.com/Forums/sqlserver/en-US/aba60b70-396f-4624-890c-015c1f2d68f7/dacpac-dependencies-for-sqlpackageexe?forum=ssdt

Я не знаю, помогает ли это, но у меня возникли проблемы с запуском SqlPackage /Action: сценария между моим скомпилированным DACPAC и извлеченным DACPAC, и я получил похожую ошибку (при добавлении ссылок произошла ошибка). Я решил это, скопировав все DACPACS из каталога \bin\debug моего DACPAC (он содержит ссылки на 15 других проектов баз данных, а также master и msdb). После этого все заработало. Таким образом, кажется, что при поиске ссылок он сначала проверяет каталог (я не знаю, просматривал ли он конкретно текущий каталог или тот, в котором находился корневой DACPAC, потому что это были одни и те же).

Другие вопросы по тегам