SQLSERVER镜像主服务器宕机或主实例崩溃恢复
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
刷新数据库,查看状态,新主服务器上数据库将回到“主体,已同步”状态,而新镜像服务器上库状态则处于“正在还原…”