SQL Server 2012复制数据库没有数据

时间:2014-02-19 12:49:06

标签: sql-server-2012

我们有一个SQL Server 2012数据库,其中包含我们用于开发网站的测试数据。我们将很快需要清空数据库并导入实际数据,但是我们在Web开发期间多次更改了数据库设计,因此我们无法使用我们在开始时创建的空副本!

有没有办法复制数据库,没有数据,但有其他一切(包括视图,SP函数,安全对象等),并将所有索引重置为设计种子值?换句话说,我们希望保持数据库的原样,但删除所有数据,将所有表索引重置为其原始设计种子值,然后导入数据。

感激不尽的任何帮助

5 个答案:

答案 0 :(得分:36)

  1. 右键单击服务器中的数据库,然后选择Tasks > Generate Scripts
  2. 在“简介”步骤中,单击“下一步”。
  3. 在“选择对象”中,您可以选择整个数据库(包括函数等),也可以指定要生成的对象。在您的情况下,您应该选择Script entire databases and all database objects,然后点击下一步。
  4. 选择您的文件名和目的地,然后点击下一步
  5. 查看,然后点击下一步
  6. 完成!
  7. 您将在指定的文件夹中看到生成的.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脚本。