删除数据库所有table的資料之二

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 06:42 点击:
使用微軟未公開的存儲過程來執行
 
 
[sql] view plaincopy
/* 
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 ([?]) '   


摘自 MasterLonely的专栏
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • sql常见面试题
    • SQL SERVER 2005性能之跟踪
    • SQL编程(一)
    • LINUX上RMAN自动备份脚本
    • sql server面试题
    • 如何将多个SQL查询统计结果一次显示出来
    • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
    • SQL小技巧系列 --- 行转列合并
    • sql server 列转行
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1