Ссылка на системные базы данных дублируется в проекте базы данных SSDT

#sql #sql-server #sql-server-data-tools

#sql #sql-сервер #sql-сервер-данные-инструменты

Вопрос:

В огромном решении для баз данных SSDT с множеством проектов и ссылок я добавляю ссылку из моего проекта в системные базы данных (master, msdb), она работает хорошо, и сборка прошла успешно.

И через некоторое время я начинаю получать ошибки о неправильной ссылке. Я перехожу в раздел ссылок и вижу это:https://pasteboard.co/JqzDSDh.png

Я попытался удалить вторую ссылку, и ошибки исчезли, но затем эта проблема возвращается, и я снова вижу две идентичные ссылки.

Спасибо!

Комментарии:

1. Пожалуйста, отредактируйте свой вопрос и добавьте встроенное изображение, а не добавляйте ссылку.

Ответ №1:

Скорее всего, что-то не так с вашим project.sqlproj файлом. Попробуйте выполнить поиск по master.dacpac ключевому слову там и убедитесь, что там нет нескольких записей. Убедитесь, что путь dacpac не полностью жестко запрограммирован, но использует $(DacPacRootPath) переменную там.

Это пример того, как должна выглядеть ссылка (убедитесь, что в пути указана правильная версия SQL. Мой здесь 140).

     <ArtifactReference Include="$(DacPacRootPath)ExtensionsMicrosoftSQLDBExtensionsSqlServer140SqlSchemasmaster.dacpac">
      <HintPath>$(DacPacRootPath)ExtensionsMicrosoftSQLDBExtensionsSqlServer140SqlSchemasmaster.dacpac</HintPath>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
    </ArtifactReference>
  

Если это не помогло, попробуйте запустить «Чистое решение», затем удалите все *.jfm файлы и *.dbmdl -ов, bin и obj -ОВ папки и заново создайте проект.

Комментарии:

1. Спасибо! Нужно ли мне где-либо устанавливать значение для $(DacPacRootPath)? Я считаю, что изменение XML-файла — это единственный способ получить этот путь с переменной внутри, верно?

2. Это встроенная переменная, вам не нужно ее где-либо устанавливать