代码之家  ›  专栏  ›  技术社区  ›  notandy

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

  •  0
  • notandy  · 技术社区  · 15 年前

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

    我最后使用的语句是:

    EXEC sp_MSForEachDB 'Use [?]; IF  EXISTS (SELECT * FROM sys.tables WHERE name = "Logs" and type="U")TRUNCATE TABLE Logs'
    
    2 回复  |  直到 15 年前
        1
  •  7
  •   Joel Coehoorn    15 年前

    这有点黑客行为,因为存储过程是未记录的,但请尝试以下操作:

    EXEC sp_MSForEachDB 'Use ?; TRUNCATE TABLE Logs'
    
        2
  •  -1
  •   u07ch    15 年前

    2008年,如果它当时不在生产中使用,最容易做的事情是

    在动态SQL中编写这样做的脚本

    Alter Database <mydb> set recovery simple
    go
    
    Checkpoint
    go
    
    Alter Database <mydb> set recovery full
    go