Как решить "процедура имеет неразрешенную ссылку на объект dbo.sysssislog"

У меня есть проект базы данных Visual Studio 2010, и я импортировал существующую схему. В этой базе данных есть хранимые процедуры, которые ссылаются на системную таблицу служб Integration Services dbo.sysssislog и генерируют ряд предупреждений в моем проекте.

Я попытался добавить master.dbschema и msdb.dbschema в качестве ссылок на базы данных, а также попытался переименовать имена баз данных ссылок в tempdb (вместо master или вместо msdb), но проблема сохраняется.

Я открыл файл msdb.dbschema и подтвердил, что в файле существует таблица sysssislog.

Вот предупреждение:

SQL04151: Procedure: [dbo].[storedProcedureName] has an unresolved reference to object [dbo].[sysssislog].

2 ответа

Решение

dbo.sysssislog является пользовательской таблицей (помеченной как системная таблица), автоматически создаваемой службами интеграции SQL Server (SSIS) при создании пакета с ведением журнала событий типа SQL Server. Помимо этой таблицы, SSIS также создает некоторые хранимые процедуры (которые могут быть ALTERред) для содействия процессу регистрации.

Это неразрешенная ссылка в вашем проекте, возможно, потому что вы импортировали схему базы данных, что привело к импорту упомянутых хранимых процедур, но не к импорту dbo.sysssislog таблица, так как она помечена как системная таблица.

Итак, теперь у вас есть набор хранимых процедур, ссылающихся на таблицу, которую вы не импортировали, что выдает предупреждение.

Что вы можете сделать, чтобы избавиться от предупреждения (й), это DROP и повторноCREATE вручную (что является единственным способом "убрать" отметку системной таблицы) и импортировать ее в ваш проект.

Вот альтернативный и более чистый подход:

Создайте новый пустой SSDT-проект, назовите его "sysssislog" и добавьте в него скрипт для таблицы sysssislog. Создайте проект для создания файла dacpac "sysssislog.dacpac".

В вашем проекте SSDT добавьте ссылку на базу данных в файл dacpac и выберите "Та же база данных" для расположения базы данных в диалоговом окне "Добавить ссылку на базу данных".

Если ваш проект находится под контролем исходного кода, вы можете добавить в проект dacpac, а затем добавить ссылку, чтобы файл dacpac также находился под контролем исходного кода.

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