решение неразрешенных ссылок на объекты в проекте базы данных SSDT - PullRequest
0 голосов
/ 16 октября 2019

Я хочу создать dacpac из базы данных сервера sql. Я использовал ssdt для импорта объектов базы данных в проект. Сборка прошла успешно без ошибок, но содержит много предупреждений (более 100), связанных с нераскрытыми ссылками.

Точка неразрешенной ссылки обусловлена ​​следующими причинами:

  • Объекты из других баз данныхна том же сервере. (Предупреждение SQL71562)

-Объекты из других баз данных из других экземпляров сервера SQL (Предупреждение SQL71562)

-Объекты, ссылающиеся на ту же базу данных, где 3-частьиспользовалось соглашение об именах [DatabaseName]. [SchemaName]. [ObjectName] (предупреждение SQL71562)

- содержит неразрешенную ссылку на объект. Либо объект не существует, либо ссылка неоднозначна, поскольку она может ссылаться на любой из следующих объектов. (Предупреждение SQL71562)

-Определение объекта [xxx]. [# Xyz] отличается только регистром от определения объекта [xxx]. [# Xyz] (Предупреждение SQL: SQL71558)

Предупреждение SQL71562: вычисляемый столбец: [#abc]. [Def] содержит неразрешенную ссылку на объект. Либо объект не существует, либо ссылка неоднозначна, поскольку он может ссылаться на любой из следующих объектов:

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

Я довольно новичок в SSDT и буду очень признателен за любую помощь.

Заранее спасибо. :)

1 Ответ

0 голосов
/ 17 октября 2019

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

Для имен из трех частей выполните поиск / замену во всех файлах * .sql, чтобызаменить [имя базы данных]. [dbo]. с [dbo]. и различных комбинаций элементов в скобках / без скобок должно быть достаточно.

Для различий в случае, если их не так много, исправьте их. В противном случае вы можете установить глобальное игнорирование для этого конкретного номера предупреждения.

Внешние ссылки на базу данных будут сложнее - для этого потребуется либо ссылка на внешнюю базу данных (с dacpac), либо указатель на другой проект, который компилируется. Я считаю, что dacpac легче начать, но это то, с чем вам нужно играть. У меня есть кое-что о SSDT в моем блоге @ https://schottsql.com/all-ssdt-articles, которое может быть там полезным. (обратите внимание - статьи старые, но концепции не сильно изменились)

В остальном вам, вероятно, придется решать их в каждом конкретном случае. Некоторые из них могут быть связаны с тем, что объект, от которого они зависят, использует соглашение «та же база данных, имя из 3 частей» и будет разрешен при его изменении. Некоторые могут быть связаны с внешними ссылками. Те собираются взять некоторую работу, чтобы решить. Если проект собирается успешно, вы можете попытаться сгенерировать скрипт или опубликовать / сравнить.

...