Sql server 2012 SQL Server 2012无数据复制数据库
我们有一个SQL Server 2012数据库,其中包含测试数据,用于开发网站。我们将很快需要清空数据库并导入真实数据,但我们在web开发过程中多次更改了数据库设计,因此我们无法使用一开始创建的空副本 是否有一种方法可以复制数据库,不使用任何数据,而是使用所有其他内容(包括视图、SPs功能、安全对象等),并将所有索引重置为设计种子值?换句话说,我们希望数据库保持原样,但删除所有数据,将所有表索引重置为其原始设计种子值,然后导入数据Sql server 2012 SQL Server 2012无数据复制数据库,sql-server-2012,Sql Server 2012,我们有一个SQL Server 2012数据库,其中包含测试数据,用于开发网站。我们将很快需要清空数据库并导入真实数据,但我们在web开发过程中多次更改了数据库设计,因此我们无法使用一开始创建的空副本 是否有一种方法可以复制数据库,不使用任何数据,而是使用所有其他内容(包括视图、SPs功能、安全对象等),并将所有索引重置为设计种子值?换句话说,我们希望数据库保持原样,但删除所有数据,将所有表索引重置为其原始设计种子值,然后导入数据 感谢您提供的任何帮助您可以在Management Studio中
感谢您提供的任何帮助您可以在Management Studio中右键单击数据库对象,然后转到任务,生成脚本,选择要编写脚本的对象,如表、视图等,从而为数据库对象生成脚本。是!有几种方法可以做到这一点。您可以尝试复制数据库、删除FK、截断表并重新创建FK(如果您可以搜索,可以使用SP自动执行删除/重新创建FK截断过程。) 您只需在MS中单击鼠标右键,然后尝试生成整个DB创建脚本(检查它是否100%完成了工作) 最可靠的方法是:使用VS创建一个新的空数据库,并使用模式比较工具生成diff脚本
Tasks>generatescripts
为整个数据库和所有数据库对象编写脚本
,然后点击Next您将看到在指定文件夹中生成的.sql文件。您可以在其他服务器上打开该文件并点击execute,然后它将生成完全相同的数据库。还有一种方法,它需要更长的时间,但也有它的好处。当使用其他人建议的“generatescripts”选项时,我们将整个数据库和表脚本放在一个“.sql”文本文件中
另一种方法是将现有数据库恢复到新的数据库中。然后,您可以使用自定义脚本删除表中的所有数据,以在表中循环。现在您有了一个数据库副本,没有任何数据。备份此文件以获取熟悉的“.bak”文件 您错过了这里最重要的答案: 随MSSQL 2014 SP2(2016-7-11)引入,但后来随SP4(2017-10-05)添加到MSSQL 2012中-准备数据库空克隆的最快、最简单的方法是通过。然后根据网上的书:
- 创建一个新的目标数据库,该数据库使用与源相同的文件布局,但使用模型数据库中的默认文件大小
- 创建源数据库的内部快照
- 将系统元数据从源数据库复制到目标数据库
- 将所有对象的所有架构从源数据库复制到目标数据库
- 将所有索引的统计信息从源数据库复制到目标数据库
DBCC CLONEDATABASE
(
[Source_DB_Name]
,[Target_DB_Name]
)
WITH NO_STATISTICS, NO_QUERYSTORE, VERIFY_CLONEDB, BACKUP_CLONEDB
备注:
- 源数据库必须是用户数据库。克隆系统数据库(主数据库、模型数据库、msdb、tempdb、分发数据库等)
这是不允许的 - 源数据库必须联机或可读
- 与克隆数据库使用相同名称的数据库必须不存在
- 该命令不在用户事务中
- 需要SA服务器角色
Invoke-DbaDbClone
[-SqlInstance] <DbaInstanceParameter[]>]
[-SqlCredential] <PSCredential>]
[-Database] <String[]>]
[-InputObject] <Database[]>]
[-CloneDatabase] <String[]>]
[-ExcludeStatistics]
[-ExcludeQueryStore]
[-UpdateStatistics]
[-EnableException]
[-WhatIf]
[-Confirm] [<CommonParameters>]
调用DbaDbClone
[-SqlInstance]]
[-SqlCredential]]
[-数据库]]
[-InputObject]]
[-克隆数据库]]
[-不包括统计数字]
[-不包括QueryStore]
[-UpdateStatistics]
[-EnableException]
[-WhatIf]
[-确认][]
由于dbatools.io是一个开放源代码项目,您可以看到由于其公开可用性而在后台发生的事情
您会发现,他们使用DBCC CLONEDATABASE()来执行此操作的核心(但让您能够执行更多操作)。我们主要使用VS来处理数据库,我们不太熟悉使用脚本。我更喜欢VS或SQL中的UI方法您所要做的就是通过SQL Server Management StudioI执行生成的脚本我一直在SQL Management studio中查看并尝试脚本过程,但我仍然看不到如何使其生成复制数据库结构(包括索引、关系等)的脚本但是没有数据。我也不知道怎么运行一个脚本,我能不能给你多提供一点帮助?我无法资助一个简单的存储过程或类似的创建数据库空副本的方法,这似乎令人惊讶!以下是一些可能对您有所帮助的页面:希望我能有所帮助。我现在使用复制方法创建了一个精确的副本,然后删除了所有数据。我现在如何将索引设置回设计“种子”值,而不必删除并重新创建所有索引和关系?在“复制”方法中,truncate-ill-reseed。问题是必须按正确的顺序删除/重新创建FK。当我想保留大部分数据并“清理”一些表时,我就使用它。对不起,我实际上是说我使用了备份还原方法来复制数据库。滴水再灌