EXEC MSDB..SP_CHANGE_PRIMARY_ROLE
@DB_NAME='TEST3',
@BACKUP_LOG=1,
@TERMINATE=0,
@FINAL_STATE=3,
@ACCESS_LEVEL=1
GO
--------------------------------------------
EXEC MSDB..SP_CHANGE_SECONDARY_ROLE
@DB_NAME='TEST3',
@DO_LOAD=1,
@FORCE_LOAD=1,
@FINAL_STATE=3,
@ACCESS_LEVEL=1,
@TERMINATE=1,
@STOPAT=NULL
GO
--------------------------------------------
EXEC MSDB..SP_CHANGE_MONITOR_ROLE
@PRIMARY_SERVER='TESTSERVER',
@SECONDARY_SERVER='NETSERVER',
@DATABASE='TEST3',
@NEW_SOURCE='\\NETSERVER\DATASHIPPING\'GO注:原主服务器和监视服务器是同一台服务器依次执行上面的语句后,原主服务器的数据库变为只读了,但备用服务器的数据库也还是只读,不可以修改的状态,应该怎么处理呢?

解决方案 »

  1.   


    --假设备用库是: dbname
    --如果你现在要把备服务器作为主服务器,可以在原来的辅助服务器上先这样:
    restore database dbname with recovery 
      

  2.   

    这种操作我一般都是手动
    将主库做最后一次log backup
    然后将其set offline在辅助服务器上启动 copy的job
    然后再启动restore的job,完成后,将备库recovery后,做生产用。
      

  3.   

    就是说需要手动重建日志同步了吧,呵呵,想问一下,使用restore database dbname with recovery 
    恢复数据,如果是一个100G的数据库,是不是需要比较长的时间?
      

  4.   


    看像我看错了
    如果状态是只读,只需alter database dbname set multi_user
    如果状态是还原中,才需要 restore database dbname with recovery 这个只是改变状态,100G的话,一般情况下不会超过1分钟
      

  5.   

    状态是备用/只读 也是: restore database dbname with recovery 
      

  6.   

    试了一下,还是只有restore database dbname with recovery 有用,
    alter database dbname set multi_user 后仍然是只读!