我有一个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].
答案 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文件也受源代码控制。