我们有一个SQL Server 2012数据库,其中包含我们用于开发网站的测试数据.我们将很快需要清空数据库并导入实际数据,但是我们在Web开发期间多次更改了数据库设计,因此我们无法使用我们在开始时创建的空副本!
有没有办法复制数据库,没有数据,但包含其他所有内容(包括视图,SP函数,安全对象等),并将所有索引重置为设计种子值?换句话说,我们希望保持数据库的原样,但删除所有数据,将所有表索引重置为其原始设计种子值,然后导入数据.
任何帮助感激不尽
小智 39
Tasks > Generate Scripts.Script entire databases and all database objects然后点击下一步.您将看到在指定文件夹中生成的.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文章.
您可以通过在Management Studio中右键单击数据库对象,然后转到"任务","生成脚本",选择要编写脚本的对象(例如"表","视图"等)来生成数据库对象的脚本,然后就可以了.