刪除資料庫所有table的資料(二)

2021-06-03 04:33:44 字數 1653 閱讀 4138

使用微軟未公開的儲存過程來執行

/*

1)說明

系統儲存過程sp_msforeachtable和sp_msforeachdb,是微軟提供的兩個不公開的儲存過程,從ms sql 6.5開始。

存放在sql server的master資料庫中。

2)引數說明:

@command1 nvarchar(2000), --第一條執行的sql指令

@replacechar nchar(1) = n'?', --指定的佔位元符號

@command2 nvarchar(2000)= null, --第二條執行的sql指令

@command3 nvarchar(2000)= null, --第三條執行的sql指令

@whereand nvarchar(2000)= null, --可選條件來選擇表

@precommand nvarchar(2000)= null, --執行指令前的操作(類似控制項的觸發前的操作)

@postcommand nvarchar(2000)= null --執行指令後的操作(類似控制項的觸發後的操作)

*/exec sp_msforeachtable "alter table ? nocheck constraint all" --禁所有外來鍵

exec sp_msforeachtable "alter table ? disable trigger all" --禁所有觸發器

--刪除所有表的資料,有外來鍵的除外

exec sp_msforeachtable @command1='truncate table ?'

,@whereand=' and (objectproperty(o.id,''tablehasforeignref'')=0 and objectproperty(o.id,''tablehasforeignkey'')=0) '

--把有外來鍵的資料刪除

exec sp_msforeachtable @command1='delete ?'

,@whereand=' and (objectproperty(o.id,''tablehasforeignref'')=1 or objectproperty(o.id,''tablehasforeignkey'')=1) '

--資料庫所有表的資訊

exec sp_msforeachtable @command1="sp_spaceused '?'"

exec sp_msforeachtable "alter table ? check constraint all" --開啟所有外來鍵

exec sp_msforeachtable "alter table ? enable trigger all" --開啟所有觸發器

--所有 identity表復原為1的

exec sp_msforeachtable @command1='dbcc checkident([?],reseed,0) ' ,@whereand= ' and (objectproperty(o.id,''tablehasidentity'')=1) '

--重建所有索引

exec sp_msforeachtable @command1='dbcc dbreindex ([?]) '

sql server 刪除資料庫中所有表資料

1.清空所有資料表中的記錄 exec sp msforeachtable command1 truncate table 2.刪除所有資料表 exec sp msforeachtable delete n 如果出現 資料表中有各種約束,就不能使用上面的方法來刪除資料了,只能使用以下方式 建立自定義儲...

sql語句 刪除資料庫所有表裡的資料

declare name nvarchar 255 sql nvarchar 4000 declare task cursor cursor local for 游標定義 select name from sysobjects where type u 獲取當前資料庫中的所有表的表名 open ta...

oracle刪除資料庫中的所有表

連線 1 先禁用資料庫中所有的約束 select alter table table name disable constraint constraint name from user constraints where constraint type r 執行所有約束禁用命令。2 清空所有表中的資...