惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

SecWiki News
SecWiki News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
博客园 - 叶小钗
S
SegmentFault 最新的问题
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
L
Lohrmann on Cybersecurity
量子位
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tor Project blog
J
Java Code Geeks
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - 三生石上(FineUI控件)
Attack and Defense Labs
Attack and Defense Labs
AI
AI
The Cloudflare Blog
T
Tailwind CSS Blog
S
Schneier on Security
爱范儿
爱范儿
PCI Perspectives
PCI Perspectives
Stack Overflow Blog
Stack Overflow Blog
S
Secure Thoughts
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
The Exploit Database - CXSecurity.com
博客园 - 【当耐特】
V2EX - 技术
V2EX - 技术
S
Securelist
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
Help Net Security
Help Net Security
C
Cisco Blogs
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
K
Kaspersky official blog
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
S
Security Affairs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Simon Willison's Weblog
Simon Willison's Weblog

博客园 - 世之云枭

网站技术分享 网页内容抓取 推广:湖南省德谦新材料有限公司 Http://www.paint123.cn CentOS MySQL安装和编译【转帖】 缓存容器类的实现(C#) ReadFreeCache 设计一个高效的网络服务器用户管理类 修改自增字段 C++、Java与C#的命名规范总结 (转) VTL-vm模板的变量用法 - 世之云枭 - 博客园 http://www.cnblogs.com/onlytiancai/archive/2009/04/11/1433456.html 数据库中与c#中的数据类型对照 - 世之云枭 - 博客园 SessionID的正确说明 临时文件 细节决定成败 NVelocity 主从表 自动生成Insert数据的SQL脚本 分页存储过程 常用的获取最大值
自动生成清空数据库的SQL语句
世之云枭 · 2008-07-10 · via 博客园 - 世之云枭

有时候需要把数据库中表记录都删除掉,为了方便我们有必要制作一个清空数据库的脚本,
这里主要是考虑存在外键约束,和标识列问题。
存在外键关系时候就要查询出,先要删除哪一张表,后要删除哪一张表,
当存在标识列的时候,就要DBCC Checkident 来重新设置标识值

Declare @Sql nvarchar(Max)
;With T1
As
(
    Select    Convert(int,0) as LevelNo,fkeyid,rkeyid
    From sys.sysforeignkeys a
    Where Not Exists(Select 1 From sys.sysforeignkeys Where rkeyid=a.fkeyid)
    Union All
    Select b.LevelNo+1,a.fkeyid,a.rkeyid
    From sys.sysforeignkeys a,T1 b
    Where a.fkeyid=b.rkeyid
)
,T2
As
(
    Select LevelNo,id=fkeyid From T1
    Union All
    Select LevelNo+1,rkeyid From T1
)
,T3
As
(
    Select a.name,LevelNo=Max(Isnull(b.LevelNo,0)),c.is_identity
    From sys.sysobjects a
    Left Outer Join T2 b On a.id=b.id
    Left Outer Join sys.identity_columns c On c.object_id=a.id
    Where  a.xtype='U' And a.name<>'sysdiagrams'
    Group By  a.name,c.is_identity
   
)
Select @Sql=Isnull(@Sql,'Use'+Quotename(Db_name()))+char(13)+char(10)+
        Case    When LevelNo=0 Then 'Truncate Table '+Quotename(name)
                When is_identity=1 Then 'Delete From '+Quotename(name)+' DBCC Checkident ('''+Quotename(name)+''',Reseed,0)'
                Else 'Delete From '+Quotename(name) End
From T3
Order By LevelNo
Print @Sql


生成示例
e.g:

/*
Use[Test]
Truncate Table [os]
Truncate Table [T2]
Truncate Table [t4]
Truncate Table [t5]
Truncate Table [test]
Delete From [T3]
Delete From [T1]
*/