Sql server 2012 SQL Server 2012无数据复制数据库

Sql server 2012 SQL Server 2012无数据复制数据库,sql-server-2012,Sql Server 2012,我们有一个SQL Server 2012数据库,其中包含测试数据,用于开发网站。我们将很快需要清空数据库并导入真实数据,但我们在web开发过程中多次更改了数据库设计,因此我们无法使用一开始创建的空副本 是否有一种方法可以复制数据库,不使用任何数据,而是使用所有其他内容(包括视图、SPs功能、安全对象等),并将所有索引重置为设计种子值?换句话说,我们希望数据库保持原样,但删除所有数据,将所有表索引重置为其原始设计种子值,然后导入数据 感谢您提供的任何帮助您可以在Management Studio中

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

是否有一种方法可以复制数据库,不使用任何数据,而是使用所有其他内容(包括视图、SPs功能、安全对象等),并将所有索引重置为设计种子值?换句话说,我们希望数据库保持原样,但删除所有数据,将所有表索引重置为其原始设计种子值,然后导入数据


感谢您提供的任何帮助

您可以在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服务器角色
    这是一篇关于如何使用它的好文章

    第二选项:

    将使用名为的PowerShell模块,可直接从项目网站或官方网站获取

    一旦有了它,就可以使用以下命令:

    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。当我想保留大部分数据并“清理”一些表时,我就使用它。对不起,我实际上是说我使用了备份还原方法来复制数据库。滴水再灌