单个脚本如何截断每个数据库中的特定表?

时间:2009-05-19 19:43:16

标签: sql-server tsql sql-server-2008

我有一个包含许多数据库的Microsoft SQL Server 2008,其中大多数都有一个Logs表。我希望能够安排一个脚本来运行并截断每个数据库中的Logs表(动态)。我想我必须得到每个用户数据库的名称,然后在包含Logs表的数据库中截断表Logs。

我最终使用的陈述是:

EXEC sp_MSForEachDB 'Use [?]; IF  EXISTS (SELECT * FROM sys.tables WHERE name = "Logs" and type="U")TRUNCATE TABLE Logs'

2 个答案:

答案 0 :(得分:7)

这有点破解,因为存储过程没有记录,但试试这个:

EXEC sp_MSForEachDB 'Use ?; TRUNCATE TABLE Logs'

答案 1 :(得分:-1)

2008年最简单的事情是,如果它当时没有在生产中使用,那么

编写一个在动态sql中执行此操作的脚本

Alter Database <mydb> set recovery simple
go

Checkpoint
go

Alter Database <mydb> set recovery full
go