关于数据库:仅使用on schema截断表

Truncate tables only with on schema

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

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

但是我很难找到从结果集中TRUNCATE all的方法。

谢谢你的任何一点!


我也发现使用msforeachtable ...如果有人愿意:)

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

请参阅链接或尝试此脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
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