SQLSERVER镜像主服务器宕机或主实例崩溃恢复

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQLSERVER镜像主服务器宕机或主实例崩溃恢复

--by Gelsey_guo

当主服务器宕机或主实例崩溃时,在从库执行如下脚本(可能有数据的丢失):

--This script does a failover of all the databases in a database mirroring session

--to the Mirror server. This will be used in cases where the PRINCIPAL server is no longer available

--and the mirrored databases have to be brought online.

--NOTE: Run this script in the MIRRORED server instance

SET NOCOUNT OFF

DECLARE@strSQL NVARCHAR(200)--variable for dynamic SQL statement - variable size should change depending on the

DECLARE@strDatabasename NVARCHAR(50)--variable for destination directory DECLARE MyCursor CURSOR FOR--used for cursor allocation

SELECT name FROM master.sys.databases a

INNER JOIN master.sys.database_mirroring b

ON a.database_id=b.database_id

WHERE NOT mirroring_guid IS NULL

AND mirroring_role_desc='MIRROR'

OPEN MyCursor

FETCH Next FROM MyCursor INTO@strDatabasename

WHILE@@Fetch_Status= 0

BEGIN

---Run the ALTER DATABASE databaseName SET PARTNER

FORCE_SERVICE_ALLOW_DATA_LOSS

SET@strSQL='ALTER DATABASE '+@strDatabaseName+' SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS'

EXEC sp_executesql@strSQL

PRINT'Bringing '+@strDatabaseName+' ONLINE'

PRINT'========================================'

FETCH Next FROM MyCursor INTO@strDatabasename

END

CLOSE MyCursor

DEALLOCATE MyCursor

成功执行后提示如下:

镜像服务器数据库状态由“正在恢复”转为“主体,已断开连接”如下(需要刷新下):

数据库运行良好,正常对外提供服务。

原主库恢复后,主库的状态类似如下:

此时镜像库的状态如下:

当原来的主服务器恢复时,其数据库将处于“正在还原…”状态,而原来的镜像库(即现在的主体库)将处于“主体,挂起”状态。若要继续正常进行镜像,需在现在的主服务器上恢复镜像,使用如下语句:

use master

alter database LotBill set partner resume;

alter database lotface set partner resume;

刷新数据库,查看状态,新主服务器上数据库将回到“主体,已同步”状态,而新镜像服务器上库状态则处于“正在还原…”

相关文档
最新文档