我正在寻找一种方法来截断一个模式上的所有表只。 我越来越对模式中的所有表的列表:截断表只与模式
*选择名称,OBJECT_ID FROM sys.objects中WHERE schema_id =(SELECT SCHEMA_ID( '赛格'))*
,但我挣扎找到一种方法来从结果集中截取所有内容。
感谢您的任何观点!
我正在寻找一种方法来截断一个模式上的所有表只。 我越来越对模式中的所有表的列表:截断表只与模式
*选择名称,OBJECT_ID FROM sys.objects中WHERE schema_id =(SELECT SCHEMA_ID( '赛格'))*
,但我挣扎找到一种方法来从结果集中截取所有内容。
感谢您的任何观点!
参考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
我还发现使用msforeachtable ......如果有人宁愿:)
EXEC sp_msforeachtable @命令1 ='TRUNCATE TABLE? ,@ whereand ='和Object_id In(SELECT object_id FROM sys.objects WHERE schema_id = 6)'
Thanks Naveen! 我也一直在测试 EXEC sp_msforeachtable @ command1 ='TRUNCATE TABLE?' ,@ whereand ='和Object_id In(SELECT object_id FROM sys.objects WHERE schema_id = 6)' –