快速重建數據庫(sqlserver)------可能很少情況下會用到


今天工作中遇到一種情況:老大要在服務器上重建數據庫,要通過執行之前從數據庫導出的Insert的sql文件來生成,不直接用.bak備份文件還原。

目前的狀況是:

1、本地有一個包含測試數據的數據庫,其中有開發測試過程中創建的很多有用的數據。老大用sqlserver把數據導出到了一個sql文件中。

2、有初始化數據庫的sql文件,包括創建表及插入一些固定的內置數據。

現在就是要用初始化數據庫的sql文件和包含所有測試數據的sql文件來重新創建一個新的數據庫。問題是,測試數據中也包含了內置數據,執行插入測試數據的sql會報很多“不能插入重複鍵”的錯誤(這個其實無關緊要,既然報錯,這句sql就不會執行,所以不會重複插入,只要保證執行結果報的錯就只有“有重複鍵”這一種即可)。


step1:

說明:去掉數據庫所有約束

--Disable all the constraint in database

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"


step2:

刪除數據庫中所有的表中的數據

select 'truncate table ' + Name + ';' from sysobjects where xtype='U' order by name asc;

該條語句執行之後會將數據庫中所有的表都查詢出來,將執行結果複製出來之後執行


step3:

執行insert的sql文件語句


step4:

說明:恢復數據庫所有約束

--Enable all the constraint in database

EXECsp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"


記錄一下,只是想記一下上面的幾條sql命令及用法,日積月累...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章