将日志传送计划的辅助数据库转换为主数据库。
sp_change_secondary_role [ @db_name = ] 'db_name'
, [ @do_load = ] do_load
, [ @force_load = ] force_load
, [ @final_state = ] final_state
, [ @access_level = ] access_level
, [ @terminate = ] terminate
, [ @keep_replication = ] keep_replication
, [ @stopat = ] stop_at_time
[@db_name =] db_name
指定辅助数据库名称。db_name 的数据类型为 sysname,没有默认设置。
[@do_load =] do_load
指定在将 db_name 转换为主数据库之前应复制和还原任何挂起的事务日志。do_load 的数据类型为 bit,默认值为 1。
[@force_load =] force_load
指定在将任何挂起的事务日志还原到辅助数据库时使用 ForceLoad 选项。除非将 do_load 设置为1,否则忽略该选项。force_load 的数据类型为 bit,默认值为 1。
[@final_state =] final_state
指定在完成该存储过程后数据库的恢复状态。final_state 的数据类型为 smallint,默认值为 1,可以是下列值之一。
值 | 描述 |
---|---|
1 | RECOVERY |
2 | NO RECOVERY |
3 | STANDBY |
有关这些选项含义的更多信息,请参见 RESTORE。
[@access_level =] access_level
指定在完成该存储过程后数据库的访问级别。access_level 的数据类型为 smallint,默认值为 1,可以是下列值之一。
值 | 描述 |
---|---|
1 | MULTI_USER |
2 | RESTRICTED_USER |
3 | SINGLE_USER |
有关这些选项含义的更多信息,请参见 ALTER DATABASE。
[@terminate =] terminate
指定应立即回滚所有挂起事务,并在该存储过程运行期间将辅助数据库置于单用户模式下。terminate 的数据类型为 bit,默认值为 1。
[@keep_replication =] keep_replication
指定在辅助数据库上还原任何挂起的事务日志时保留复制设置。除非将 do_load 设置为 1,否则忽略该选项。keep_replication 的数据类型为 bit,默认值为 0。
[@stopat =] stop_at_time
指定在应用任何挂起的事务日志时,应将辅助数据库还原到指定日期和时间下的状态。除非将 do_load 设置为 1,否则忽略该选项。stop_at_time 的数据类型为 datetime,默认值为 NULL。
0(成功)或 1(失败)
无
必须在标记为当前主服务器的 SQL Server 实例上运行 sp_change_secondary_role。
为完成日志传送角色更改,除运行此过程外,还必须执行某些步骤。有关更多信息,请参见如何设置和执行日志传送角色转变 (Transact-SQL)。
只有 sysadmin 固定服务器角色成员才能执行 sp_change_secondary_role。
下例显示如何将辅助数据库转换为主数据库。在转换辅助数据库之前,在该数据库上应用以前传送的事务日志。
EXEC sp_change_secondary_role @db_name = 'db2',
@do_load = 1,
@final_state = 1,
@access_level = 3