我需要備份SQL Server數據庫中的大量數據,並導入另一個環境進行更新和測試。因爲我對數據不感興趣,所以我只想在其他服務器上重新創建模式。有一個名爲「生成腳本」的選項,但會在目標服務器上運行錯誤。用於清除數據庫表的SQL腳本
好奇的是,如果有人試圖編寫一個SQL腳本來運行db中的所有表並清除行,從而我可以創建架構備份爲.bak文件並將其還原到另一個服務器中。
我需要備份SQL Server數據庫中的大量數據,並導入另一個環境進行更新和測試。因爲我對數據不感興趣,所以我只想在其他服務器上重新創建模式。有一個名爲「生成腳本」的選項,但會在目標服務器上運行錯誤。用於清除數據庫表的SQL腳本
好奇的是,如果有人試圖編寫一個SQL腳本來運行db中的所有表並清除行,從而我可以創建架構備份爲.bak文件並將其還原到另一個服務器中。
要小心,但是,這個做的。它會清空數據庫中的所有表。
-- disable referential integrity
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
-- print table name
EXEC sp_MSForEachTable 'truncate table ?'
-- enable referential integrity again
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
Red Gate生成一個名爲Sql Compare的產品,您可以使用該產品將架構從一個Sql Server數據庫同步到另一個。這可能比自己編寫一些腳本容易得多,而且它允許您在兩個數據庫稍後不同步時輕鬆傳輸更改。這不是免費的產品,但是您可以在14天的試用期內免費使用它。
+1:使用RedGate,您還可以將現有數據庫「反向工程」爲一組腳本文件,然後您可以使用該模式使用RedGate構建另一個數據庫實例。這爲您提供了實際版本控制數據庫模式的好處。像RedGate這樣的另一個產品是dbGhost(http://www.innovartis.co.uk/products/products.aspx)。 – van 2010-03-24 21:00:16
您需要:
@Don:運行腳本似乎並未禁用約束。截斷表時出現依賴關係錯誤。 – pencilslate 2010-03-24 22:11:16
您收到的確切錯誤是什麼? – 2010-03-25 02:10:20
不能截斷表'dbo.tbl_Questions',因爲它正在被FOREIGN KEY約束引用。 – MikeKusold 2011-07-28 14:35:58