共計 2105 個字符,預計需要花費 6 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 Sqlserver 鏡像切換操作并檢查鏡像同步情況的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
主節點上:
ALTER DATABASE [dbname] SET SAFETY FULL
ALTER DATABASE [dbname] SET PARTNER FAILOVER
切換完畢到從節點,新的主節點上:
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
)
– 導出鏡像數據庫名列表
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 是初次執行這個 sp,可能不會產生數據,所以需要再執行一次
– 每個鏡像數據庫的相關記錄通過循環全部導入表變量
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 – 返回行數:- 1 行;- 前條;- 最近兩小時行數;
,0 –0 表示不調用 sp_dbmmonitorupdate,表示調用
end
SELECT database_name
,CASE [role] WHEN 1 THEN 主體數據庫
WHEN 2 THEN 鏡像數據庫
ELSE NULL END AS db_role
,CASE mirroring_state WHEN 0 THEN 已掛起
WHEN 1 THEN 已斷開
WHEN 2 THEN 正在同步
WHEN 3 THEN 掛起故障轉移
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 鏡像切換操作并檢查鏡像同步情況的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!