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 |