溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Sqlserver鏡像切換操作并檢查鏡像同步情況的示例分析

發(fā)布時間:2021-11-10 14:30:10 來源:億速云 閱讀:392 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫

小編給大家分享一下Sqlserver鏡像切換操作并檢查鏡像同步情況的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

主節(jié)點(diǎn)上:
ALTER DATABASE [dbname] SET SAFETY FULL

ALTER DATABASE [dbname] SET PARTNER FAILOVER

切換完畢到從節(jié)點(diǎn),新的主節(jié)點(diǎn)上:
ALTER DATABASE  [dbname] SET SAFETY OFF

檢查鏡像同步情況:
SET NOCOUNT ON
DECLARE @db_name varchar(100)
DECLARE @dblist TABLE([db_name] varchar(100))
DECLARE @a TABLE(
                   database_name SYSNAME
                  ,[role]  INT
                  ,mirroring_state INT
                  ,witness_status INT
                  ,log_generation_rate INT
                  ,unsent_log INT
                  ,send_rate INT
                  ,unrestored_log INT
                  ,recovery_rate  INT
                  ,transaction_delay  INT
                  ,transactions_per_sec INT
                  ,average_delay  INT
                  ,time_recorded  DATETIME
                  ,time_behind DATETIME
                  ,local_time DATETIME
                 )


--導(dǎo)出鏡像數(shù)據(jù)庫名列表
insert into @dblist
select a.name 


 from sys.sysdatabases a (nolock)
join sys.database_mirroring b (nolock) on a.dbid=b.database_id 
where mirroring_guid is not null


EXEC msdb.dbo.sp_dbmmonitorupdate
EXEC msdb.dbo.sp_dbmmonitorupdate  --若server是初次執(zhí)行這個sp,可能不會產(chǎn)生數(shù)據(jù),所以需要再執(zhí)行一次


--每個鏡像數(shù)據(jù)庫的相關(guān)記錄通過循環(huán)全部導(dǎo)入表變量
while exists(select * from @dblist)
begin
set @db_name=(select top 1 [db_name] from @dblist)
delete @dblist where [db_name]=@db_name
INSERT INTO @a
EXEC msdb.dbo.sp_dbmmonitorresults @db_name
  ,0   --返回行數(shù):-1行;-前條;-最近兩小時行數(shù);
  ,0   --0表示不調(diào)用sp_dbmmonitorupdate,表示調(diào)用


end


SELECT database_name
       ,CASE [role] WHEN 1 THEN '主體數(shù)據(jù)庫' 
                    WHEN 2 THEN '鏡像數(shù)據(jù)庫' 
                    ELSE NULL END AS 'db_role'
       ,CASE mirroring_state WHEN 0 THEN '已掛起' 
                             WHEN 1 THEN '已斷開' 
                             WHEN 2 THEN '正在同步' 
                             WHEN 3 THEN '掛起故障轉(zhuǎn)移' 
                             WHEN 4 THEN '已同步' 
                             ELSE NULL END AS mirroring_state
       ,CASE witness_status  WHEN 0 THEN '未知'
                             WHEN 1 THEN '已連接'
                             WHEN 2 THEN '已斷開'
                             ELSE NULL END AS witness_status
       ,unsent_log AS 'unsent_log[kb]'
       ,unrestored_log AS 'unrestored_log[kb]'
       ,send_rate AS 'send_rate[kb/s]'
       ,recovery_rate AS 'recovery_rate[kb/s]'
       ,transaction_delay AS 'transaction_delay/ms'
       ,transactions_per_sec
       ,average_delay
       ,time_recorded
       ,time_behind
       ,local_time
FROM @a

以上是“Sqlserver鏡像切換操作并檢查鏡像同步情況的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI