_A_cert.cer';
4 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
5
三、建立镜像关系
以下步骤是针对每个数据库进行的,例如:现有主机中有5个数据库以下过程就要执行5次。
1、 手工同步登录名和密码
在第一章中提到数据库镜像的缺点之一是无法维护登录名,所以需要我们手工维护登录。
通常来说数据库都将会有若干个用户作为访问数据库的用户,并且数据库会有相应的登录名,但是在备机中缺少与之相对应的登录名,例如某业务系统使用’myuser’作为登录名访问数据库,但是在备机中没有’myuser’这个登录名,因此一旦主备切换,业务系统就无法登录数据库了,这种情况称为"孤立用户"
在主数据库中执行如下语句:
1 USE master;
2 select sid,name from syslogins;
3
查找出相应的用户名和sid,例如:上述的’myuser’
在备数据库中执行如下语句:
1 USE master;
2 exec sp_addlogin
3 @loginame = '',
4 @passwd = '',
5 @sid = ;
6
这里的’LoginName’即主数据库中的登录名,sid即是上述通过SQL语句查找出的sid。
例如,查询得到的sid和name如下所示。
1 sid name
2
3 ---------------------------------- -----------------
4
5 0x074477739DCA0E499C29394FFFC4ADE4 cz_account
6
7
则建立登录名的SQL语句:
1 USE master;
2 exec sp_addlogin
3 @loginame = 'cz_account',
4 @passwd = 'password',
5 @sid = 0x074477739DCA0E499C29394FFFC4ADE4;
6
到此为止可以认为备机数据库的环境已经与主机同步了,还差数据库内的数据未同步。
2、 准备备机数据库
承接上文,该节是描述如何同步主备数据库内的数据。
可以尝试从刚刚使用的全备文件进行还原,在还原数据的时候需要使用选上“with non recover”。如图所示:

<script>
如果执行成功数据库将会变成这个样子:
3、 建立镜像
由于是实验,没有为服务器配置双网卡,IP地址与图有点不一样,但是原理一样。
--主机执行:
1 ALTER DATABASE shishan SET PARTNER = 'TCP://10.168.6.45:5022';
--如果主体执行不成功,尝试在备机中执行如下语句:
1 ALTER DATABASE shishan SET PARTNER = 'TCP://10.168.6.49:5022';
<script>
如果执行成功,则主备数据库将会呈现如上图所示的图标。
如果建立失败,提示类似数据库事务日志未同步,则说主备数据库的数据(日志)未同步,为保证主备数据库内的数据一致,应在主数据库中实施一次“事务日志”备份,并还原到备数据库上。备份“事务日志”如图所示:
<script>
还原事务日志时需在选项中选择“restore with norecovery”,如图所示:
<script>

成功还原以后再执行建立镜像的SQL语句。<script>
四、测试操作
1、主备互换
--主机执行:
1 USE master;
2 ALTER DATABASE SET PARTNER FAILOVER;
3
2、主服务器Down掉,备机紧急启动并且开始服务
--备机执行:
1 USE master;
2 ALTER DATABASE SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;
3
3、原来的主服务器恢复,可以继续工作,需要重新设定镜像
1 --备机执行:
2 USE master;
3 ALTER DATABASE SET PARTNER RESUME; --恢复镜像
4 ALTER DATABASE SET PARTNER FAILOVER; --切换主备
5
4、原来的主服务器恢复,可以继续工作
--默认情况下,事务安全级别的设置为FULL,即同步运行模式,而且SQL Server 2005 标准版只支持同步模式。
--关闭事务安全可将会话切换到异步运行模式,该模式可使性能达到最佳。
1 USE master;
2 ALTER DATABASE SET PARTNER SAFETY FULL; --事务安全,同步模式
3 ALTER DATABASE SET PARTNER SAFETY OFF; --事务不安全,异步模式
4
作者 killkill
<script>