[SQL SERVER] 如何刪除所有資料表內容

how to truncate all tables

使用者要求協助,要一份某一個測試資料庫內容全部清空

當下想到有兩個做法

1. 產生資料庫script,直接建一個空的給他

2. truncate table

 

看一下資料表...數百個,當然不可能一個一個truncate掉...

直接下語法 (記得好習慣,異動前要備份)

EXEC sp_MSForEachTable 'TRUNCATE TABLE ?'

果然沒這麼順利XD

有foreign key的資料表就會出錯,要先停用,不過搞老半天還是弄不好

最後改用delete的方式....

exec sp_msforeachtable 'alter table ? nocheck CONSTRAINT all' 
EXEC sp_MSForEachTable "DELETE FROM ?"
exec sp_msforeachtable 'alter table ? check constraint all'
EXEC sp_MSforeachtable "DBCC CHECKIDENT ( '?', RESEED, 0)"

最後記得reseed