4

我有一个 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].
4

2 回答 2

4

dbo.sysssislog是一个用户表(标记为系统表),由 SQL Server Integration Services (SSIS) 在您创建具有 SQL Server 类型的事件日志记录的包时自动创建。除了这个表,SSIS 还创建了一些存储过程(可以ALTER编辑)来帮助记录过程。

这是您项目中未解决的引用,可能是因为您导入了数据库模式,这导致导入了提到的存储过程,但没有导入dbo.sysssislog表,因为它被标记为系统表。

所以现在,您拥有的是一堆引用您尚未导入的表的存储过程,从而导致警告。

您可以做些什么来消除警告,手动DROP重新创建CREATE表(这是“删除”系统表标记的唯一方法),并将其导入您的项目。

于 2012-04-13T11:11:15.513 回答
3

这是另一种更清洁的方法:

创建一个新的空 SSDT 项目,将其命名为“sysssislog”并向其中添加 sysssislog 表的脚本。构建项目以生成 dacpac 文件“sysssislog.dacpac”。

在您的 SSDT 项目中,为 dacpac 文件添加一个数据库引用,并在“添加数据库引用”对话框中为数据库位置选择“相同数据库”。

如果您的项目受源代码管理,您可以将 dacpac 添加到项目中,然后添加引用,因此 dacpac 文件也受源代码管理。

于 2014-04-09T10:13:03.553 回答