Sql-Server
日誌傳送中已經設置了哪些數據庫,哪些沒有?
我正在設置從 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