SqlServer2008镜像证书过期处理

今天在例行sql server的巡检时发现,主机上的状态都成了(主体,已断开连接),这说明镜像出了问题了。马上登陆服务器检查,结果如下:

1.telnet 镜像服务器IP port,是正常的
2.主机和镜像的数据库都是正常的,这样子看来是两台主机的证书出了问题了。
3.查看主机和镜像DB的日志,终于在镜像端有收获,
Database Mirroring login attempt failed with error: 'Connection handshake failed. The certificate used by this endpoint was not found: Certificate expired. Use DBCC CHECKDB in master database to verify the metadata integrity of the endpoints. State 85.'.  [CLIENT: xxx.xxx.xxx.xxx]
标注了颜色的字体说明,证书失效了。 因为主机和镜像是一起做的,所以证书都失效了

4.查看证书
select name, start_date, expiry_date
from sys.certificates
where name not like '##%';
发现其失效时间已经过去2个多礼拜了,但是日志错误今天才爆出,预计是镜像没有断开之前DB是允许一段时间用户去调整证书的,直到镜像断开

解决方案:
需要对证书进行重新生成更新,重做对生产并不会产生影响,但为了尽避免高峰操作,选择晚上处理。
系统里总共有4个DB涉及镜像,重做证书再切换发现切不过去,索性重新做了一遍镜像。

 1.删除镜像
--删除镜像过程
--删除端点
select * from sys.endpoints;
drop endpoint Endpoint_Mirroring;

--删除证书
select * from sys.certificates
drop certificate HOST_A_cert;
drop certificate HOST_B_cert;

--删除master key
select * from sys.symmetric_keys ;
DROP MASTER KEY;

select * from sys.syslogins ;
select * from sysusers;

--删除登陆和用户
DROP LOGIN HOST_A_login
drop user HOST_A_user

--取消镜像
alter database eol_xcsh set partner off;
2.生成镜像 参考:http://my.oschina.net/Kenyon/blog/53469

注意:重新生成证书的时候最好指定失效日期,并设大一点,不然默认是一年的,时间到了再去重设就麻烦了。

你可能感兴趣的:(sql,server,过期,镜像证书)