2014-02-06 54 views
1

我正在寻找一种方法来截断一个模式上的所有表只。 我越来越对模式中的所有表的列表:截断表只与模式

*选择名称,OBJECT_ID FROM sys.objects中WHERE schema_id =(SELECT SCHEMA_ID( '赛格'))*

,但我挣扎找到一种方法来从结果集中截取所有内容。

感谢您的任何观点!

回答

0

参考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 
+0

Thanks Naveen! 我也一直在测试 EXEC sp_msforeachtable @ command1 ='TRUNCATE TABLE?' ,@ whereand ='和Object_id In(SELECT object_id FROM sys.objects WHERE schema_id = 6)' –

1

我还发现使用msforeachtable ......如果有人宁愿:)

EXEC sp_msforeachtable @命令1 ='TRUNCATE TABLE? ,@ whereand ='和Object_id In(SELECT object_id FROM sys.objects WHERE schema_id = 6)'