【发布时间】:2014-03-02 22:32:46
【问题描述】:
我正在寻找一种仅截断一个架构上的所有表的方法。 我正在获取该架构上所有表的列表:
*SELECT name, object_id FROM sys.objects WHERE schema_id = (SELECT SCHEMA_ID('seg'))*
但我正在努力寻找从结果集中截断所有内容的方法。
感谢您的积分!
【问题讨论】:
我正在寻找一种仅截断一个架构上的所有表的方法。 我正在获取该架构上所有表的列表:
*SELECT name, object_id FROM sys.objects WHERE schema_id = (SELECT SCHEMA_ID('seg'))*
但我正在努力寻找从结果集中截断所有内容的方法。
感谢您的积分!
【问题讨论】:
我还发现msforeachtable...如果有人愿意的话:)
EXEC sp_msforeachtable
@command1 ='TRUNCATE TABLE ?'
,@whereand = ' And Object_id In (SELECT object_id FROM sys.objects WHERE
schema_id = 6)'
【讨论】:
参考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
【讨论】: