删除所有表中的所有数据

时间:2013-03-06 09:57:26

标签: c# .net sql-server-ce sql-server-ce-3.5

是否有一种优雅的方法来擦除数据库中的所有数据(从每个表中删除每一行)而不破坏体系结构并且必须删除/读取约束?

我可以删除每个表中的数据,但这看起来很乏味。我已经看到了很多关于使用存储过程的SQL实现的完整解决方案,但显然我无法使用该功能。我可能不会将此功能提供给产品的最终用户,但可能会启用它以进行内部测试。正如我所说,我可以手动执行此操作,因此将这一点放在好奇心

5 个答案:

答案 0 :(得分:1)

没有。因为您希望db结构保持完整,包括所有关系。 因此,首先删除所有主数据,然后删除从数据。

您的脚本应包含特定顺序的截断查询。

否则,您可以执行的操作是生成整个数据库模式并随时使用。无论你需要清空数据库,删除数据库,重新创建它:)

关于如何为SQL-CE db..use SQLCE-ToolBox

生成模式

还有关于SQLCE数据库操作的更多详细信息,我喜欢this博客,以及世界各地的大多数sqlce用户:)

答案 1 :(得分:1)

感谢来自Manish Mishra的一些出色的社区帮助,最好的解决方案是删除数据库文件并使用模式重建数据库。我通过{this blog](ExportSqlCe)找到了一个名为http://erikej.blogspot.co.uk/的SQL Server Management Studio插件。如果其他人需要此功能,则需要Microsoft SQL Sever Management Studio 2008才能连接到SQL CE 3.5数据库。

连接到数据库后,您可以使用此插件创建数据库架构instructions

答案 2 :(得分:0)

如果有最终用户,则可以选择使用导出选项(在Express版本中) SQL Server它自动避免表中的任何数据)

因此,使用导出选项,您可以轻松创建包含所有数据库的数据库副本 事情但表中没有数据

答案 3 :(得分:0)

我想到了这一点:如果我不明白你的问题,请纠正我: 你必须遍历每个表,然后清空表,这样一个截断表才能完成工作。

您可以从中获得帮助 http://how-to-code-net.blogspot.ro/2012/07/how-to-delete-all-tables-from-database.html  所以

DECLARE @TableName varchar(500)
DECLARE cur CURSOR
      FOR SELECT [name] FROM sys.tables WHERE type in ('u') 

      OPEN cur

      FETCH NEXT FROM cur INTO @TableName
      WHILE @@fetch_status = 0
      BEGIN
            EXEC('truncate TABLE ' + @TableName)
            --select @TableName
            FETCH NEXT FROM cur INTO @TableName
      END
      CLOSE cur
      DEALLOCATE cur 

这是你需要的吗?

答案 4 :(得分:0)

小晚会,但我在寻找“优雅”的东西时找到了这个,

select 'DELETE FROM ' + name+';' from sys.objects where type = 'U';

会产生一些可以变成字符串的东西。对我来说,我使用LINQPad,只需复制和粘贴。好小技巧!谢谢http://www.sqlservercentral.com/Forums/Topic1396480-392-1.aspx