我正在使用Server 2014标准版运行两个Windows 2012 R2。我对镜像有奇怪的看法。
我将镜像配置为15个数据库,而不是Witness服务器。主体服务器显示所有数据库都是同步的,镜像是镜像、同步/恢复。
当我打开数据库镜像监视器时,我看到角色主体处于同步镜像状态,但是镜像的角色没有连接。我在两个方向都失败了,数据库正常地出现在镜像服务器上。数据正在复制,以便进行故障排除,我已经完成了以下步骤。
请在这个问题上有所帮助,如何解决这个问题?
发布于 2019-06-01 08:42:27
SQL2014 std不支持可用性组上的AlWays,您需要企业版,但需要SQL2016STD版本支持基本可用性组特性
您可以使用下面的查询来检查镜像的状态。
这将给你一个进一步调查的起点。
--==============================================================================
-- query that shows the current state of each database in the mirroring
--==============================================================================
SELECT db_name(sd.[database_id]) AS [Database Name]
,sd.mirroring_state AS [Mirror State]
,sd.mirroring_state_desc AS [Mirror State]
,sd.mirroring_partner_name AS [Partner Name]
,sd.mirroring_role_desc AS [Mirror Role]
,sd.mirroring_safety_level_desc AS [Safety Level]
,sd.mirroring_witness_name AS [Witness]
,sd.mirroring_connection_timeout AS [Timeout(sec)]
FROM sys.database_mirroring AS sd
WHERE mirroring_guid IS NOT null
ORDER BY [Database Name];确保sql server服务帐户具有这两个服务器上的所有相关权限。
我不确定您的环境,但是根据下面的查询以及在日志中可以找到的内容,在方便的时候,计划重新启动sql server服务(这将导致故障转移)并返回。
另一件在过去对我有用的事情是编写整个程序,然后删除它,然后通过脚本重新设置它,每次一个数据库。
这样你就可以尽量缩小问题的范围。
有一个非常类似的问题:数据库镜像错误,但一切看起来都还好
答案建议查看权限。先做好。
另一件事是按照下面的示例进行故障转移:(原来的数据库很多,我每台服务器只留下一个DB,但您可以理解)
--============================================================================
--instructions:
--for each server,
--1) get the list of the alter database set safety full
--2) paste that script below
--3) run it
--4) get the list of the alter database set partner failover
--5) run the first line make sure it goes through
--6) run the other lines - failover all the databases
--version 20140624 Anne and Marcello
--============================================================================
--============================================================================
-- before failing over
-- the safety mode should be changed to FULL (SYNCHRONOUS)
--============================================================================
select 'ALTER DATABASE '+quotename(db_name(database_id))+
' SET SAFETY FULL'
from sys.database_mirroring
where mirroring_role_desc='PRINCIPAL'
and (substring(db_name(database_id),1,2) IN ('US')
or db_name(database_id) LIKE '%ROW')
order by db_name(database_id)
*
-- sqlweblon3
ALTER DATABASE [US14AUTPProduct] SET SAFETY FULL
*
--sqlweblon4
ALTER DATABASE [USAccount] SET SAFETY FULL
--============================================================================
-- generate the failover scripts
--============================================================================
select 'ALTER DATABASE '+quotename(db_name(database_id))+' SET PARTNER FAILOVER'
from sys.database_mirroring
where mirroring_role_desc='PRINCIPAL'
and (substring(db_name(database_id),1,2) IN ('US')
or db_name(database_id) LIKE '%ROW')
order by db_name(database_id)
*
--sqlweblon3 (principal)
ALTER DATABASE [US14AUTPProduct] SET PARTNER FAILOVER
*
--sqlWeblon4 (principal)
ALTER DATABASE [ProductOfferROW] SET PARTNER FAILOVER
ALTER DATABASE [USAccount] SET PARTNER FAILOVER
ALTER DATABASE [USProductOffer] SET PARTNER FAILOVER
ALTER DATABASE [USStock] SET PARTNER FAILOVER
ALTER DATABASE [ProductOfferROW] SET PARTNER FAILOVER
/** IF YOU ARE FAILING FROM DR TO LIVE CHECK THE LITESPEED
ACTIVITY SERVICE IS RUNNING ON THE SERVER. IF IT IS NOT LITESPEED
SQL AGENT JOBS WILL FAIL **/
--============================================================================
-- after the failover change the safety mode back to ASYNCHRONOUS
-- this is to be done on what is now the principal
--============================================================================
-- DR-sqlweblon3
ALTER DATABASE [US14AUTPProduct] SET SAFETY OFFhttps://dba.stackexchange.com/questions/225911
复制相似问题