Sql-Server

日誌傳送中已經設置了哪些數據庫,哪些沒有?

  • May 17, 2021

我正在設置從 server1 到 server2的日誌傳送。

server1 上有很多數據庫,我想自動化這個過程。

我已經手動完成了一些數據庫,同時我正在處理自動化過程。

第一個問題是:

如何輕鬆找出哪些數據庫已在日誌傳送中設置,哪些尚未設置?

目前要獲取尚未進行日誌傳送的數據庫列表,我正在執行以下操作:

   if object_id('tempdb.dbo.#log_shipping_monitor ') is not null
      drop table #log_shipping_monitor 

   create table #log_shipping_monitor  
   (  
       status bit null  
       ,is_primary bit not null default 0  
       ,server sysname   
       ,database_name sysname  
       ,time_since_last_backup int null  
       ,last_backup_file nvarchar(500) null  
       ,backup_threshold int null  
       ,is_backup_alert_enabled bit null  
       ,time_since_last_copy int null  
       ,last_copied_file nvarchar(500) null  
       ,time_since_last_restore int null  
       ,last_restored_file nvarchar(500) null  
       ,last_restored_latency int null  
       ,restore_threshold int null  
       ,is_restore_alert_enabled bit null  
       ,ts timestamp not null  
       ,primary key (is_primary, server, database_name)  
       ,unique (ts)  
   )  



   insert into #log_shipping_monitor
   ([status]
   ,[is_primary]
   ,[server]
   ,[database_name]
   ,[time_since_last_backup]
   ,[last_backup_file]
   ,[backup_threshold]
   ,[is_backup_alert_enabled]
   ,[time_since_last_copy]
   ,[last_copied_file]
   ,[time_since_last_restore]
   ,[last_restored_file]
   ,[last_restored_latency]
   ,[restore_threshold]
   ,[is_restore_alert_enabled])
exec master.dbo.sp_executesql    @stmt=N'exec sp_help_log_shipping_monitor'
                               ,@params=N'@verbose bit'
                               , @Verbose=0

SELECT d.NAME, d.recovery_model_desc 
 FROM sys.databases d
where d.name not in 
        (
           select l.database_name
           from #log_shipping_monitor l
           where l.[server] = @@SERVERNAME

         )
     and d.database_id > 5 
     and d.state_desc = 'ONLINE'
order by d.name 

這工作正常,並給了我以下結果:

在此處輸入圖像描述

效果很好,但是有一種更簡單的方法可以通過使用msdb 中的日誌傳送表來監控和查看日誌傳送設置。

例如:

msdb.dbo.log_shipping_primary_databases

在日誌傳送配置中儲存主數據庫的一條記錄。此表儲存在 msdb 數據庫中。

select * from msdb.dbo.log_shipping_primary_databases

在此處輸入圖像描述

引用自:https://dba.stackexchange.com/questions/291723