2008-10-15 52 views
2

嘿,我一直在這個問題上一段時間,通常的谷歌搜索沒有幫助:(SQL DTS數據庫副本失敗

我在SQL 2000我想它複製生產數據庫這是一個訓練數據庫的頂部來刷新它,我希望這是一個計劃每週發生一次,以保持訓練數據庫的最新版本

我有一個創建DTS作業。那DTS工作我有一個「複製SQL Server對象」任務,該任務設置爲:

  • Cre吃了所有複製的對象
    • 放置目標對象第一
  • 複製數據
    • 替換現有的數據
  • 複製索引,觸發器,主鍵和外鍵
  • 複製所有用戶表,視圖,函數和存儲過程。

當我運行這個DTS包(在生產前對課程的測試),它得到99%完成,引發以下錯誤:

Step Error Source: Microsoft SQL-DMO (ODBC SQLState: 42S02) 
Step Error Description:[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'dbo.vwEstAssetStationAddress'. 
Step Error code: 800400D0 
Step Error Help File:SQLDMO80.hlp 
Step Error Help Context ID:1131 

我在網上搜索沒有提供很多幫助。有這些錯誤的報道受到打擊,但沒有一個符合我的情況。我發現的一個建議是sysdepends表已經損壞,使得DTS作業以錯誤的順序運行它的腳本。 Howeever,我跑了下面的腳本來更正表,它仍然拋出了同樣的錯誤:

USE master 
GO 
ALTER DATABASE [DATABASE NAME] 
SET SINGLE_USER 
GO 

USE [DATABASE NAME] 
GO 

DBCC CHECKTABLE('sysdepends',REPAIR_REBUILD) 
GO 

USE master 
GO 
ALTER DATABASE [DATABASE NAME] 
SET MULTI_USER 
GO 

我也看到,不同對象所有者可能會導致這個錯誤。但我已經確認在這種情況下所有對象都屬於dbo用戶。

有什麼建議嗎?

回答

0

不知何故dbo.vwEstAssetStationAddress表格未被DTS包發現。不幸的是,該消息沒有說明它是否在源或目的地上找不到它。

準確的步驟是什麼,按照您的DTS包中的順序排列?我假設上面的任務項目列表不是按順序排列的。我知道這不是一個答案,但看起來我們需要更多的信息來幫助你進一步。

0

感謝您的反應hectorsosajr。

aparrently導致錯誤的對象(dbo.vwEstAssetStationAddress)是引用2個基礎表的視圖。我測試了查看視圖,以及在源數據庫和目標數據庫上運行定義它的SELECT語句,並且它工作正常。

DTS中的數據庫對象複製任務不允許您指定它傳輸事物的順序。據我瞭解,它使用sysdepends表來確定必需的事件順序。

0

聽起來像它試圖創建存儲過程/視圖基於尚不存在的視圖。

爲什麼不只用不同的名稱備份和恢復數據庫? (如果不是生產,我會說分離,複製和重新附加)。你可以在T-SQL的控制下完成所有這些。

看看this link可以幫助你找到你的依賴問題。

0

我試圖避免通過備份/恢復來做到這一點。有一些數據庫用戶是SQL Server帳戶(不是Active Directory)。這成爲一個痛苦,但如果你需要從一臺服務器到另一臺服務器,你必須刪除這些用戶並重新創建它們。

+0

嘗試將我添加到我的答案中的鏈接 - 它可以幫助您隔離您的依賴問題。 – 2008-10-15 03:04:28

0

我已經運行另一個測試來嘗試隔離這個。我完全從目標數據庫中刪除了提到的視圖,然後再次運行DTS。它以相同的錯誤失敗。但是,通常是無效的對象名稱的視圖已成功重新創建。看起來錯誤來自於試圖引用該視圖的某些內容,但是當它遇到該錯誤時並不實際上停止該腳本。

凱德 - 我會檢查出這個鏈接。我也會嘗試建立引用視圖和突破的東西。

2

我覺得自己很蠢,但我張貼我只是找到了後人的答案(等你有幫助的同伴可以停止強調代表我。

即使我有選擇的所有用戶表,視圖,存儲過程和用戶定義的函數來複制,我沒有選擇「包括所有的依賴對象」,我假定如果你選擇了兩個對象來複制,而另一個依賴於另一個,SQL總是會按照正確的順序進行。不是,選擇這個小小的複選框讓所有的區別變得非常重要

再次感謝那些幫助建議的人

+0

很高興你找到了解決方案!感謝您發佈它。 – 2008-10-15 04:42:26