Неразрешенные ссылки на тот же проект базы данных

Я создал проект базы данных SQL Server в Visual Studio 2013 и импортировал DACPAC, взятый из производственной базы данных. Когда я пытался построить проект, я получаю сотни ошибок SQL71501 и SQL71561 (оба из которых являются "неразрешенной ссылкой на объект"). Проблема в том, что во многих представлениях и хранимых процедурах используются три имени частей: [база данных].[схема.][объект.]

похоже, что Visual Studio 2013 выдает эту ошибку всякий раз, когда встречается имя из трех частей, включающее базу данных, представленную проектом базы данных. например, если проект базы данных представляет базу данных "MyDatabase" и сценарий SQL в этом проекте включает что-то вроде SELECT t.Column1 FROM MyDatabase.dbo.MyTable t затем VS 2013 бросает SQL71501 или SQL71561, когда я строю проект.

есть ли способ подавить неразрешенные ошибки ссылок, которые просто применяются к текущей базе данных? Я все еще хочу, чтобы Visual Studio выдавала ошибки для неразрешенных ссылок на внешние база данных.

правка, исправление: изначально указал код ошибки был SQL71501. Однако Visual Studio выдает ошибки SQL71501 и SQL71561 для неразрешенных ссылок на одну и ту же базу данных.

2 ответов


ну на самом деле есть два способа решения. Мое личное мнение заключается в том, что в SSDT есть ошибка, касающаяся 3-х частей имен объектов в текущей базе данных.

  1. создайте моментальный снимок проекта (dacpac) и ссылайтесь на него как на ссылку на базу данных. Не забудьте очистить поле переменной базы данных в диалоговом окне "Добавить ссылку на базу данных".
    он работает, однако этот подход не рекомендуется Microsoft и может вызвать другие проблемы: https://connect.microsoft.com/SQLServer/feedbackdetail/view/1047094/post-deployment-script-is-not-generated-in-the-publish-script

  2. в вашем коде замените все вхождения MyDatabase.dbo.MyTable с [$(DatabaseName)].dbo.таблица MyTable
    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/1863d960-d32d-4920-9a30-13dc86c6f857/sql71562-unresolved-reference-to-object-followd-by-database-name-in-the-same-project?forum=ssdt&prof=required


В Visual Studio:

1) Откройте Обозреватель объектов SQL, свяжите сервер базы данных, щелкните правой кнопкой мыши на неразрешенной справочной базе данных и"извлечь приложение уровня данных"

enter image description here

2) вставьте путь к файлу. Обычно я использую \Documents\SQL Server Management Studio\DAC Packages\ и нажимаю OK

3) ожидание извлечения

4) щелкните правой кнопкой мыши по ссылкам на проект и добавьте базу данных Ссылка

enter image description here

5) затем замените ссылки в своих функциях, SP,.. с префиксом [$(YourDB)]