我们有一个SQL Server 2012数据库,其中包含我们用于开发网站的测试数据。我们将很快需要清空数据库并导入实际数据,但是我们在Web开发期间多次更改了数据库设计,因此我们无法使用我们在开始时创建的空副本!
有没有办法复制数据库,没有数据,但有其他一切(包括视图,SP函数,安全对象等),并将所有索引重置为设计种子值?换句话说,我们希望保持数据库的原样,但删除所有数据,将所有表索引重置为其原始设计种子值,然后导入数据。
感激不尽的任何帮助
答案 0 :(得分:36)
Tasks > Generate Scripts
。Script entire databases and all database objects
,然后点击下一步。您将在指定的文件夹中看到生成的.sql文件。您可以在其他服务器中打开该文件并点击执行,然后它将生成一个完全相同的数据库。
答案 1 :(得分:9)
您可以通过在Management Studio中右键单击数据库对象,然后转到“任务”,“生成脚本”,选择要编写脚本的对象(例如“表”,“视图”等)来生成数据库对象的脚本,然后就可以使用它了。
答案 2 :(得分:7)
我知道这个问题已经存在了一段时间,但是我相信您错过了最有价值的答案。通过DBCC CLONEDATABASE可以以最快,最简单的方式准备数据库的空克隆。然后根据在线书籍:
- 创建一个新的目标数据库,该数据库使用与源文件相同的文件布局,但具有来自模型数据库的默认文件大小。
- 创建源数据库的内部快照。
- 将系统元数据从源复制到目标数据库。
- 将所有对象的所有架构从源复制到目标数据库。
- 将所有索引的统计信息从源复制到目标数据库。
语法:
DBCC CLONEDATABASE
(
[Source_DB_Name]
,[Target_DB_Name]
)
WITH NO_STATISTICS, NO_QUERYSTORE, VERIFY_CLONEDB, BACKUP_CLONEDB
备注:
- 源数据库必须是用户数据库。克隆系统数据库(主数据库,模型数据库,msdb数据库,tempdb数据库,分发数据库等)
不允许。源数据库必须在线或可读。
使用与克隆数据库相同名称的数据库必须不存在。
该命令不在用户事务中。
- 需要SA服务器角色
Here是有关如何使用它的不错的MS文章。
答案 3 :(得分:1)
还有一种方法,需要更长的时间,但有其好处。当像其他人建议的那样使用“Generate Scripts”选项时,我们将整个数据库和表脚本放在“.sql”文本文件中。
另一种方法是将现有数据库恢复为新数据库。然后,您可以使用自定义脚本删除表中的所有数据以循环表。现在您有一个没有任何数据的数据库副本。对此进行备份以获取熟悉的“.bak”文件。
答案 4 :(得分:0)
是的!有几种方法可以做到这一点。您可以尝试复制数据库,删除FK,截断表并重新创建FK(如果可以搜索FK,则可以使用SP自动执行删除/重新创建FK截断过程。)
您只需右键单击MS并尝试生成整个数据库创建脚本(检查它是否完成了100%的工作)
和最可靠的方法:使用VS创建一个新的空数据库,并使用模式比较工具生成diff脚本。