将日志从主要服务器传送到次要服务器之后,您可在必要时以次要服务器置换掉主要服务器。如果主要服务器发生问题,或是计划性停摆(例如升级硬件或安装修正程序),线上数据库就必须停止服务一段期间。此时您可以变更次要服务器上数据库之角色,让它取代主要服务器之后进而成为线上数据库。SQL Server 2000 线上手册(Books Online,BOL)将此项操作称为日志传送角色变更(log shipping role change)。在日志传送过程里,次要服务器需设定在无法复原(nonrecovered)状态,因此交易日志才能从主要服务器回存到次要服务器(一但您将数据库复原,就不能再回存交易记录)。变更角色时,您需将次要服务器的数据库予以复原,并标示其为新主要服务器数据库。您也可以将旧主要服务器数据库设定为新次要服务器数据库。如果旧主要服务器数据库并未损坏,那么就可以在新主要服务器与旧主要服务器(已变成新次要服务器)之间重新建置日志传送功能。这种切换方式我们称为角色互换(role reversal)。
步骤 1:转移与汇出登入帐号 首先,BOL 建议您建立一个SQL Server 2000 DTS封装(package),用来将主要服务器的登入帐号转移到次要服务器,且执行各服务器间登入帐号SID之解析动作。转移登入帐号所用的 DTS Transfer Logins Task只能在 SQL Server 2000 DTS Designer内使用。您可在主要服务器上建立与储存 DTS 封装,然后呼叫 dtsrun.exe 设定该封装的执行方式 — 透过主要服务器 SQL Server Agent 的工作(job)。该封装执行时会将登入帐号从某服务器传送到另一服务器,但是它并不会解析其登入帐号的SID(在稍后步骤中会说明为何需解析登入帐号)。然而,为了在稍后能顺利解析登入帐号,您必须先建立一个档案,其内包含主要服务器 syslogins 资料表的汇出资料。
汇出登入帐号到次要服务器时,BOL建议您建立一个两阶段的SQL Server Agent工作:使用bcp汇出,以及复制登入帐号。在第一个步骤,您将使用原始模式的bcp将登入帐号汇出至某个档案。而在第二个步骤里,您必须将登入帐号复制到次要服务器的某个档案,以便稍后进行角色变更时可用来解析登入帐号。在步骤5您将使用 sp_resolve_logins 预存程序去解析次要服务器上登入帐号的SID。该工作建立完成后,就可以定期地执行(例如每晚执行一次)。如此一来次要服务器上将随时保留最新的登入帐号汇出文件,以便进行日志传送角色变更。