【问题标题】:Moving files to new SQL Server Version / Instance in Always On在 Always On 中将文件移动到新的 SQL Server 版本/实例
【发布时间】:2019-06-13 14:56:56
【问题描述】:

我有带 Always On 的 SQL Server 2014。我在同一台服务器上安装了 SQL Server 2017,我想将数据库从 SQL Server 2014 移动到 SQL Server 2017。

在每个副本中,我都有自己的文件(.mdf 和 .ldf)。 在 SQL Server 2014 中,在主数据库中,我从 AG 中删除了数据库,然后分离了数据库。 在 SQL Server 2017 中,我成功附加了它。 我在中学也是这样做的。 当我尝试将数据库添加到 SQL Server 2017 副本时,我收到错误消息,指出辅助节点未处于还原状态。 我尝试生成一个新备份并将其还原为辅助服务器中的 NoRecovery,但当我再次尝试时,它说存在不一致。

我做错了什么? 我正在尝试执行“仅加入”选项,因为数据库超过 300 GB,同步它需要太多时间。

【问题讨论】:

    标签: sql-server alwayson


    【解决方案1】:

    检查以确保在您尝试将数据库添加到 AG 之前、期间或期间没有正在运行的维护作业已进行事务日志备份。这肯定会导致不一致的错误。作为 GUI (SSMS) 的替代方案,在将数据库附加到 2017 实例后,您可以使用脚本在主节点上备份 db 和 t-log,手动将 2 个备份复制到辅助节点,然后恢复 ( 2) 无法恢复的文件,然后运行 ​​2 个命令将其添加回 AG。这种方式可能更有助于您弄清楚为什么会出现不一致错误。代码示例在这里(请务必替换 DB 名称和 AG 名称)-

    `连接到主实例时 -

    步骤 1) 将数据库 [MyDatabase] 备份到磁盘 = N'\PrimaryServerName\C$\temp\MyDatabase.bak' with init, stats = 10

    步骤 2) 备份日志 [MyDatabase] 到磁盘 = N'\PrimaryServerName\C$\temp\MyDatabase.trn' with init, stats = 10

    第 3 步)RDP 到主服务器 - 手动将备份文件(.bak 和 .trn)从主服务器上的 C:\temp 复制到辅助服务器上的 C:\temp

    第 6 步)更改可用性组 [AGGroupName] 添加数据库 [MyDatabase]

    连接到辅助实例时 -

    步骤 4) 从磁盘恢复数据库 [MyDatabase] = N'C:\temp\MyDatabase.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5

    第 5 步)从磁盘恢复日志 [MyDatabase] = N'C:\temp\MyDatabase.trn' WITH NORECOVERY

    步骤 7) ALTER DATABASE [MyDatabase] SET HADR AVAILABILITY GROUP = [AGGroupName]`

    【讨论】:

    • 谢谢!如果你能提供我的示例代码会很棒。
    猜你喜欢
    • 2016-12-06
    • 2021-10-09
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多