SQL71501: Триггер: [dbo].[TriggerName] имеет неразрешенную ссылку на объект [dbo].[TableName]
У меня есть проект SQL с некоторыми функциями и триггерами.
В Visual Studio 2010 я мог просто указать строку подключения к базе данных и выполнить развертывание. Это сработало отлично.
Но теперь, после миграции на Visual Studio 2013, я получаю много ошибок, подобных этой, в сгенерированном файле sql при попытке создать проект:
SQL71501: Trigger: [dbo].[TriggerName] has an unresolved reference
to object [dbo].[TableName]
Как это должно быть исправлено?
4 ответа
Удалить ссылку на базу данных перед dbo в CREATE TRIGGER
sql, тогда проверка будет успешной, потому что Visual Studio будет правильно ссылаться на таблицу в локальном проекте.
Возникла похожая проблема с "SQL71501: неразрешенная ссылка на объект". Оказывается, файлы.sql не были добавлены в проект так, как этого ожидала Visual Studio. В данном случае исправление заключается в том, чтобы "исключить" файл.sql из проекта, а затем повторно "добавить" файл в проект базы данных как "существующий элемент". Это привело к разрешению ссылок.
Вы должны импортировать базу данных в Visual Studio для таблицы триггеров. Перейдите в Project>Import>Database.... Обратите внимание, если опция [Database...] отключена в меню, попробуйте закрыть решение и снова открыть его. Теперь перед компиляцией проекта импортируйте базу данных, которая содержит таблицу, связанную с вашим триггером. Это должно решить вашу проблему.
В моем случае я работал над триггерами SQL CLR.
В проекте CLR была ссылка на «основной» проект базы данных, который содержал все таблицы, к которым я прикреплял указанные триггеры.
Ранее я добавил таблицу в «основной» проект базы данных, но не перестраивал ее.
Я обычно не создаю его, так как я просто использую его как место с контролируемым исходным кодом для хранения моей схемы.
Поэтому, чтобы исправить ошибку, мне нужно было построить указанный проект базы данных.
Я подозреваю, что Visual Studio кэширует представление последней сборки каждого проекта базы данных, чтобы использовать его для разрешения ссылок на объекты.