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

YAO*_*WSC 21 sql-server-2012

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

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

任何帮助感激不尽

小智 39

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

您将看到在指定文件夹中生成的.sql文件.您可以在其他服务器中打开该文件并点击执行,然后它将生成完全相同的数据库.


Bar*_*z X 13

我知道这个问题已经存在了一段时间,但我相信你错过了最有价值的答案.通过DBCC CLONEDATABASE可以实现准备空数克隆数据库的最快速,最简单的方法.然后根据在线书籍:

  • 创建一个新的目标数据库,该数据库使用与源相同的文件布局,但具有模型数据库中的默认文件大小.
  • 创建源数据库的内部快照.
  • 将系统元数据从源数据库复制到目标数据库.
  • 将所有对象的所有模式从源数据库复制到目标数据库.
  • 复制从源数据库到目标数据库的所有索引的统计信息.

句法:

DBCC CLONEDATABASE   
(  
     [Source_DB_Name]
    ,[Target_DB_Name]
)
WITH NO_STATISTICS, NO_QUERYSTORE, VERIFY_CLONEDB, BACKUP_CLONEDB
Run Code Online (Sandbox Code Playgroud)

备注:

  • 源数据库必须是用户数据库.
    不允许克隆系统数据库(master,model,msdb,tempdb,distribution database等).
  • 源数据库必须在线或可读.

  • 必须不存在使用与克隆数据库相同名称的数据库.

  • 该命令不在用户事务中.

  • 需要SA服务器角色

是一篇关于如何使用它的MS文章.

  • 该死,这是一个很好的答案。非常适合我。唯一的警告是新的克隆数据库处于只读模式......但我只是将属性更改为 False 并且它活跃起来! (2认同)

Men*_*tor 9

您可以通过在Management Studio中右键单击数据库对象,然后转到"任务","生成脚本",选择要编写脚本的对象(例如"表","视图"等)来生成数据库对象的脚本,然后就可以了.