4

我有一個Visual Studio 2010數據庫項目,我已經導入了一個現有的模式。在這個數據庫中有存儲過程引用Integration Services系統表dbo.sysssislog,並在我的項目中生成許多警告。如何解決「過程有一個未解決的對象dbo.sysssislog引用」

我已經嘗試添加master.dbschema和msdb.dbschema作爲數據庫引用,我也嘗試將引用的數據庫名稱重命名爲tempdb(而不是master或代替msdb),但問題仍然存在。

我打開了msdb.dbschema文件,並且已確認文件中存在sysssislog表。

這裏是警告:由SQL Server集成服務(SSIS)創建

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

回答

4

dbo.sysssislog是用戶表(標記爲系統表)自動,當你創建一個事件包記錄SQL Server類型。除此表外,SSIS還創建一些存儲過程(可以是ALTER),以幫助記錄過程。

它在你的項目中一個懸而未決的參考,很可能是因爲您導入數據庫架構,這就造成了進口提到的存儲過程,但不進口dbo.sysssislog表,因爲它被標記爲一個系統表。

所以,現在,您擁有的是一堆引用未導入的表的存儲過程,從而產生警告。

你可以做什麼來擺脫警告,是DROPCREATE表手動(這是「刪除」系統表標記的唯一方法),並將其導入到您的項目。

+0

將它創建爲用戶表不會有什麼不同嗎?我只想確保解決方案能夠繼續前進,並且我不必將其作爲服務器上的系統表維護,而是作爲源代碼管理中的用戶表來維護。 – 2012-04-19 13:07:52

+0

不,它不會。我通常會修改表格以添加自定義日誌記錄的新列,並且沒有任何問題。 – gonsalu 2012-04-19 14:39:37

+0

不錯,謝謝,尤其是關於刪除/重新創建的提示很有幫助。 – cdonner 2013-05-07 18:43:58

1

這是一種替代和清潔方法:

創建一個新的空SSDT項目,稱之爲「sysssislog」和sysssislog表添加腳本給它。構建項目以生成dacpac文件「sysssislog.dacpac」。

在您的SSDT項目中,爲dacpac文件添加數據庫引用,並在「添加數據庫引用」對話框中爲數據庫位置選擇「相同數據庫」。

如果您的項目受源代碼管理,可以將dacpac添加到項目中,然後添加引用,以便dacpac文件也受源代碼管理。

+0

我這樣做,似乎工作,但(非常)奇怪的發佈試圖創建表(因此腳本失敗)。我相信這個功能(使用相同的數據庫)可以鎖定數據庫的各個部分,或者在數據庫之間包含共享的源代碼\表(例如審計或日誌記錄) – Trubs 2017-12-05 04:21:55

相關問題