Как решить "процедура имеет неразрешенную ссылку на объект 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 также находился под контролем исходного кода.