SqlServer Alwayson 搭建排错记录(二)

摘要:
将数据库添加到可用性组中的问题和解决方案:1。当数据库未处于恢复状态且数据库已加入可用性组时,将报告错误:2。镜像数据库中包含的事务日志数据不足。镜像数据库“XXXXX”中包含的事务日志数据不足。如果未从主体数据库执行日志备份,或者未在镜像数据库上还原日志备份,则可以忽略此步骤。2) 将主副本的数据库设置为简单恢复模式并保存。3)将其设置回完全恢复模式。4) 备份数据库。5) 将其放在镜像数据库中。

  下面记录下建立好alwayson可用性组后,向可用性组内添加数据库出现过的问题及解决方法

一、数据库未处于恢复状态

  将数据库联接到可用性组的时候报错:

数据库“XXXX”未处于恢复状态,而此状态是镜像数据库或辅助数据库所必需的。必须使用 WITH NORECOVERY 还原远程数据库。 (Microsoft SQL Server,错误: 1464)

  SqlServer Alwayson 搭建排错记录(二)第1张

    这个问题好解决,就是还原辅助副本的时候,没有选择with no recovery选项

SqlServer Alwayson 搭建排错记录(二)第2张

    还原之后,在SQL Server Management Studio上查看数据库,后面有“正在还原”字样,这时可以将数据库联接到可用性组了。

二、镜像数据库包含的事务日志数据不足

镜像数据库 "XXXXX" 包含的事务日志数据不足,无法保留主体数据库的日志备份链。如果没有从主体数据库进行日志备份或者没有在镜像数据库上还原日志备份,则可能会出现这种情况。 (Microsoft SQL Server,错误: 1478)

  解决方法在https://social.msdn.microsoft.com/Forums/sqlserver/en-US/88e87d0c-4f8a-430b-b227-478c3e68b9e1/insufficient-log-data中有回答给出:

The workaround for this is:
1) Disable your transaction log backup job 
2) set your primary database to Simple recovery mode save the change
3) set recovery mode back to Full again
4) backup the database
5) restore on the mirror server in the "RESTORE WITH NORECOVERY" state
6) setup mirroring
7)  re-enable your transaction logging on the primary server

   翻译一下就是:

1)禁用事务日志备份作业,如果没有,可以忽略这步

2)将主副本的数据库设置为简单恢复模式并保存

3)再设置回去成完整恢复模式

4)备份数据库

5)在镜像数据库上,也就是辅助副本数据库上恢复这个备份文件,恢复的时候选择RESTORE WITH NORECOVERY选项

6)再将辅助副本联接到可用性组

7)重新启用事务日志备份作业,如果没有,可以忽略

  另外,

 数据库“XXXX”的远程副本没有恢复到足以启用数据库镜像或将其联接到可用性组的程度。您需要通过从主体/主数据库还原当前日志备份,将缺失的记录日志应用于远程数据库。  (Microsoft SQL Server,错误: 1408)

  这个报错也可以用上述方法解决。

三、仅当您使用 master 数据库时,才允许可用性组 DDL 操作

仅当您使用 master 数据库时,才允许可用性组 DDL 操作。请运行 USE MASTER 命令,然后重试您的可用性组 DDL 命令。 (Microsoft SQL Server,错误: 35208)

  一种方法是点击“脚本”,在生成的脚本开头手动增加use master语句。

 SqlServer Alwayson 搭建排错记录(二)第3张

  还有一种方法是,在将副本添加到可用性组-连接到副本的时候,“连接到数据库”选择“默认”。这样,后续操作就不会报需要使用master的错误了。

  SqlServer Alwayson 搭建排错记录(二)第4张

免责声明:文章转载自《SqlServer Alwayson 搭建排错记录(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在C++ 中 如何调用 C# 写的DLL(转载)java jdb命令详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

fso操作大全

FSO操作大全2007-03-19 16:50如何删除一个文件 [JScript] function DeleteFile(filespec) { var fso; fso = new ActiveXObject("Scripting.FileSystemObject"); fso.DeleteFile(filespec); } [VBSc...

python面试1

注:本面试题来源于网络,转载请注明来自http://www.cnblogs.com/goodhacker/p/3366618.html。 1. (1)python下多线程的限制以及多进程中传递参数的方式  python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程...

navicat 结合快捷键

  navicat 结合快捷键 1.ctrl+q           打开查询窗口2.ctrl+/            注释sql语句3.ctrl+shift +/  解除注释4.ctrl+r           运行查询窗口的sql语句5.ctrl+shift+r   只运行选中的sql语句6.F6               打开一个mysql...

SQL Server代理(2/12):作业步骤和子系统

SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。 SQL Server代理作业有一系列的一个或多个作业步骤组成。一个作业步骤会分配给特定的作业子系统,用来标识将要进行的作业步骤工作种类。每个作业步骤在各自安全上下文运行,尽管每个作业有可以决定谁可以...

Groovy 学习手册(3)

五. Groovy 的设计模式 设计模式是一种非常好的方式,可以使你的代码变得实用,可读又具有扩展性。跟 Java 相比,在 Groovy 里使用设计模式使代码更加简洁和容易。 1. 策略模式 设想一下,下面有三个不同方法用来计算数字相加的总和: def totalPricesLessThan10(prices) { int tota...

Django前端获取后端数据之前端自定义函数

在写网站的时候遇到了一个问题: Django在后端向前端传数据时,多数会使用dict字典来传送多个数据,但前端只能遍历,没有一个用key取到value值的方法可以直接使用 如果作为一个list传递到前端,结构相同情况下,遍历确实够用。但是使用dict时多数会使用单个key取value放到不同的地方使用,Django提供的方法就不够用了。 所以这篇文章介绍一...