【问题标题】:Truncate tables only with on schema仅使用 on 模式截断表
【发布时间】:2014-03-02 22:32:46
【问题描述】:

我正在寻找一种仅截断一个架构上的所有表的方法。 我正在获取该架构上所有表的列表:

*SELECT name, object_id FROM sys.objects WHERE schema_id = (SELECT SCHEMA_ID('seg'))*

但我正在努力寻找从结果集中截断所有内容的方法。

感谢您的积分!

【问题讨论】:

    标签: database tsql truncate


    【解决方案1】:

    我还发现msforeachtable...如果有人愿意的话:)

    EXEC sp_msforeachtable
           @command1 ='TRUNCATE TABLE ?'
          ,@whereand = ' And Object_id In (SELECT object_id FROM sys.objects WHERE 
                                           schema_id = 6)'
    

    【讨论】:

      【解决方案2】:

      参考Link 或者试试这个脚本

      DECLARE @SQL NVARCHAR(MAX) = ''
      
      SELECT @SQL = (
          SELECT 'TRUNCATE TABLE [' + s.name + '].[' + o.name + ']' + CHAR(13)
          FROM sys.objects o WITH (NOWAIT)
          JOIN sys.schemas s WITH (NOWAIT) ON o.[schema_id] = s.[schema_id]
          WHERE o.[type] = 'U'
              AND s.name = 'dbo'
          FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)')
      
      PRINT @SQL
      
      --EXEC sys.sp_executesql @SQL
      

      【讨论】:

      • 感谢纳文!我也一直在测试 EXEC sp_msforeachtable @command1 ='TRUNCATE TABLE ?' ,@whereand = ' 和 Object_id In (SELECT object_id FROM sys.objects WHERE schema_id = 6)'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多