是否有一种优雅的方法可以擦除数据库中的所有数据(从每个表中删除每一行),而不会破坏架构并且不必删除/读取约束?
我可以从每个表中删除数据,但这似乎很乏味。我已经看到了大量使用存储过程的完整 SQL 实现的解决方案,但显然我无法使用该功能。我可能不会向产品的最终用户提供此功能,但可能会启用它以用于内部测试目的。正如我所说,我可以手动执行此操作,因此请出于好奇
是否有一种优雅的方法可以擦除数据库中的所有数据(从每个表中删除每一行),而不会破坏架构并且不必删除/读取约束?
我可以从每个表中删除数据,但这似乎很乏味。我已经看到了大量使用存储过程的完整 SQL 实现的解决方案,但显然我无法使用该功能。我可能不会向产品的最终用户提供此功能,但可能会启用它以用于内部测试目的。正如我所说,我可以手动执行此操作,因此请出于好奇
不,因为您希望数据库结构保持完整,包括所有关系。因此,首先删除所有主数据,然后删除从数据。
您的脚本应包含按特定顺序截断的查询。
否则,您可以做的是生成一个完整的数据库模式并随时供您使用。每当您需要清空数据库时,删除数据库,重新创建它:)
关于如何为 SQL-CE db..use SQLCE-ToolBox生成模式
还有更多关于 SQLCE db 操作的详细信息,我喜欢这个博客,以及世界各地的大多数 sqlce 用户 :)
感谢Manish Mishra提供的一些出色的社区帮助,最好的解决方案是删除数据库文件并使用模式重建数据库。我通过 {this blog]( http://erikej.blogspot.co.uk/ )找到了一个名为ExportSqlCe的 SQL Server Management Studio 插件。如果其他人需要此功能,他们将需要Microsoft SQL Sever Management Studio 2008才能连接到 SQL CE 3.5 数据库。
连接到数据库后,您可以按照以下说明使用此插件创建数据库模式
如果有最终用户,那么您可以交替使用导出选项(在 SQL Server 的 Express 版本中,它会自动避免表中的任何数据)
因此,使用导出选项,您可以轻松创建数据库的副本,包括所有内容但表中没有数据
我想到了这一点:如果我不理解您的问题,请纠正我:您必须迭代每个表,然后清空表,这样截断表才能完成工作。
您可以从 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
这是你需要的吗?
派对有点晚了,但我在寻找“优雅”的东西时发现了这个,
select 'DELETE FROM ' + name+';' from sys.objects where type = 'U';
会生成一个可以变成字符串的东西。对我来说,我使用 LINQPad,只需复制和粘贴。不错的小技巧!谢谢http://www.sqlservercentral.com/Forums/Topic1396480-392-1.aspx