如何解决“过程有一个未解析的对象dbo.sysssislog的引用”

时间:2012-04-12 22:51:26

标签: .net visual-studio-2010 sql-server-2008 database-project visual-studio-dbpro

我有一个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 个答案:

答案 0 :(得分:4)

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

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

现在,你所拥有的是一堆引用你没有导入的表的存储过程,导致警告。

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

答案 1 :(得分:1)

以下是另一种更清洁的方法:

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

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

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