Sql server 重新连接SQL数据库以替换原始数据库(而不是备份/恢复)

Sql server 重新连接SQL数据库以替换原始数据库(而不是备份/恢复),sql-server,database,Sql Server,Database,我们在Windows Server 2008R2上有一个SQL 2012数据库,该数据库已被我们的基础架构团队分离,作为一种备份形式。我们现在需要恢复数据库,并且没有“正确”的数据库备份。我想我们需要这样做: 使当前Live DB脱机 从文件系统中删除当前数据库 文件将以前分离的数据库从其备份位置复制到\Data文件夹中 重新连接数据库 复制时,我们会将.MDF和.LDF文件复制到原始\数据位置 我遗漏了什么吗 (欢迎使用“分离”作为备份方法的可取性或其他)。如果你要附加一个数据库,你需要考虑以

我们在Windows Server 2008R2上有一个SQL 2012数据库,该数据库已被我们的基础架构团队分离,作为一种备份形式。我们现在需要恢复数据库,并且没有“正确”的数据库备份。我想我们需要这样做:

  • 使当前Live DB脱机
  • 从文件系统中删除当前数据库
  • 文件将以前分离的数据库从其备份位置复制到\Data文件夹中
  • 重新连接数据库
  • 复制时,我们会将.MDF和.LDF文件复制到原始\数据位置

    我遗漏了什么吗


    (欢迎使用“分离”作为备份方法的可取性或其他)。如果你要附加一个数据库,你需要考虑以下先决条件:

  • 必须首先分离数据库。尝试附加尚未分离的数据库将返回错误
  • 连接数据库时,所有数据文件(MDF和LDF文件)都必须可用。如果任何数据文件的路径与首次创建或上次附加数据库时的路径不同,则必须指定文件的当前路径
  • 连接数据库时,如果MDF和LDF文件位于不同的目录中,并且其中一个路径包含\?\GlobalRoot,则操作将失败
  • 如果在前提条件下没有什么重要的考虑,则可以使用以下步骤分离/附加数据库:

  • 分离当前数据库
  • 将所需的数据库文件复制到它们的位置

  • 附加数据库

  • CREATE DATABASE Stellar  
    ON (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\stellar.mdf')  
    FOR ATTACH ;
    
    请注意,如果.ndf文件也存在,则可能需要在上述查询中包含它们

    您也可以使用SQL Server Management Studio detach/atach向导执行以下步骤


    最后,对于备份和恢复来说,使用分离/连接并不是一个好的解决方案。您可能会阅读更多关于它的信息

    您可以使用以下T-SQL语句分离数据库:

    USE [master]
    GO
    EXEC master.dbo.sp_detach_db @dbname = N'stellar'
    GO
    
    USE [master]
    GO
    CREATE DATABASE [stellar] ON
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\stellar.mdf' ),
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\stellar_log.ldf' )
    FOR ATTACH
    GO
    
    要附加,可以使用以下T-SQL语句:

    USE [master]
    GO
    EXEC master.dbo.sp_detach_db @dbname = N'stellar'
    GO
    
    USE [master]
    GO
    CREATE DATABASE [stellar] ON
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\stellar.mdf' ),
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\stellar_log.ldf' )
    FOR ATTACH
    GO
    
    附加数据库的另一种方法是使用创建数据库

    CREATE DATABASE Stellar  
    ON (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\stellar.mdf')  
    FOR ATTACH ;
    
    如果没有日志文件,可以使用以下T-SQL命令生成新的日志文件:

    CREATE DATABASE Stellar
    ON (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\stellar.mdf')
    FOR ATTACH_REBUILD_LOG ;
    

    检查参考号。

    应该可以。分离作为备份的一种形式有点,嗯,过于热情了,因为在这段时间内数据库基本上不存在。SQL Server的备份(或其他第三方备份工具)完成了这项工作,并允许您的数据库保持活动状态和可用性。这就是它们的用途。在此之后,我强烈建议您不仅要制定备份计划,还要制定恢复计划。我的意思是,许多商店遇到这种情况,然后开始备份。但他们不测试这些备份,也不了解如何在紧急情况下恢复数据。备份计划只是数据恢复的第一步。谢谢。就备份而言,我们通常将适当的备份脚本写入磁盘,然后由基础架构团队进行备份,但他们建议我们,使用新的SQL感知备份软件,我们将不再需要这样做。这就是我之前评论的证据。失败的地方在于,实际上没有人测试恢复。