SQLServer清空数据库中所有表的数据

  今早同事跟进客户反馈的问题时,提了个要求,要求清空数据库中所有表的数据。

  记得之前用游标遍历所有的表名 + exec 动态语句 truncate table 表名 实现过这个功能。

  网上搜了下,有更简单的方法:  

  CREATE PROCEDURE sp_DeleteAllData
  AS

    --禁用约束和触发器
    EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
    EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'

    --删除所有数据
    EXEC sp_MSForEachTable 'DELETE FROM ?'

    --还原约束和触发器
    EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
    EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'

    --显示每个表中的记录
    EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?'
  GO  

  exec sp_DeleteAllData

  用SQL Server 2000数据库测试了下,确实可以实现。

  参考:http://blog.csdn.net/yinxiaoqi/article/details/5809944

原文地址:https://www.cnblogs.com/mozzie/p/4527281.html