我正在设计一个带有SQL数据库的标准ASP.Net站点。我有一个数据库模式,在测试期间,我正在更改其他任务中的数据类型,并且内部包含的数据确实不那么重要。
我不断收到错误,因为旧数据与新规则不符。这并不重要,我很乐意清除所有内容,但是目前,我必须将数据库导出/发布到.sql文件,然后从头开始导入 - 这非常耗时。
是否有一个我错过的快捷按钮/功能,允许您将自动编号/ ID重置为1并删除所有内容,或者只是加快我目前的操作?
答案 0 :(得分:3)
您可以选择一些选项,“最快”实际上取决于您的数据库。
首先回答关于播种等问题的问题 - TRUNCATE TABLE将删除表格中的所有信息(非常快,因为它没有记录),并将重置您的标识栏。
例如:
TRUNCATE TABLE dbo.table
http://msdn.microsoft.com/en-us/library/aa260621(SQL.80).aspx
这里的重要限制是您不能在另一个表引用的表上使用它。在这种情况下,您可以使用标准删除,然后使用DBCC CHECKIDENT
例如:
DELETE FROM dbo.table
GO
DBCC CHECKIDENT(dbo.table, reseed, 0)
http://msdn.microsoft.com/en-us/library/ms176057.aspx
请记住删除以确保以正确的顺序删除信息(即考虑外键)。
我经常使用的另一种方法是在我想重置数据库时编写完整的拆卸/重建脚本。基本前提是在脚本开头拆除或删除所有数据库对象,然后重新创建它们。这不一定适用于所有场景,但基本任务对我来说效果很好。为了避免错误,我通常会在IF语句中添加我的drop语句,例如:
IF EXISTS
(
SELECT *
FROM information_schema.tables
WHERE table_name = 'table' AND table_schema = 'dbo'
)
BEGIN
DROP TABLE dbo.table
END
答案 1 :(得分:1)
这是删除表格中所有数据的快捷方法:
TRUNCATE TABLE YourTableName
您可以编写一个截断所有表格的脚本。
另一种方法是只删除表并重新创建它。
如果您确实要删除所有数据,那么您可以分离数据库并创建一个全新的数据库;它有点极端,但可能比先丢弃所有东西更快。
答案 2 :(得分:1)
为什么不编写一些T-SQL代码来删除(或截断,甚至更快)所有表?清除表时要小心考虑完整性规则:在清理包含主键的表之前,一直清理包含外键的表。
答案 3 :(得分:1)
如果您只需要清除数据,那么只需编写一个脚本来截断每个表中的所有数据。 truncate命令也会重置任何IDENTITY字段。
TRUNCATE TABLE myTable
对于您拥有的每张桌子。然后每次都运行该脚本。
答案 4 :(得分:0)
正如其他人所建议的那样,我发现维护一个从头开始构建数据库的脚本更可取,并且可以在重建之前拆除数据库。像开发应用程序的其余部分一样开发此脚本。我发现通过脚本比通过GUI构建数据库更容易理解数据库,特别是在存在复杂关系,触发器等的情况下。
如果您有其他开发人员,并且比复制工作数据库并将其交给其他开发人员,可能更快且更不容易出错,这也很有用。
在发布时,您可以冻结该脚本,然后为下一个版本创建增量脚本,该脚本只包含从初始模式到新模式的更改。这也可以在重新创建之前拆除在增量中创建的新对象,这样就可以轻松地重新运行它而无需擦除整个数据库。
答案 5 :(得分:0)
如果您使用Visual Studio 2010,那么
打开解决方案的App_Data文件夹,然后双击MDF文件。 右键单击您的表格,在菜单中选择"显示表格数据"。 选择所有行并删除所有行。