如何从属于SQL Server 2012数据库中的特定架构的所有表中删除所有行?

时间:2017-06-21 05:36:17

标签: sql-server database tsql

我想删除属于SQL Server 2012数据库中特定架构的所有表中的所有行。

我在尝试从架构中的所有表中删除数据时遇到问题,我在这里做错了什么?

EXEC sp_MSForEachTable 'DISABLE TRIGGER ALL ON ?'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable @command1='Truncate Table ?',@whereand='and Schema_Id=Schema_id(''info'')'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable 'ENABLE TRIGGER ALL ON ?'
GO

我收到了错误

  

消息547,级别16,状态0,行1 ALTER TABLE语句   与FOREIGN KEY约束冲突   " FK__PayElemen__RealY__25476A76&#34 ;.冲突发生在数据库中   " Saina",table" info.iYear",column' Year'。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您需要删除约束。或者,使用DELETE FROM

EXEC sp_MSForEachTable 'DISABLE TRIGGER ALL ON ?'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable @command1='Delete ?',@whereand='and Schema_Id=Schema_id(''info'')'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable 'ENABLE TRIGGER ALL ON ?'
GO