Sql-Server
從目前數據庫維護計劃中排除日誌傳送數據庫(Ola 的解決方案)
高級 DBA 和我正在討論我們最近將日誌傳送到 25 台以上的伺服器,我們在試點期間遇到的問題之一是日誌鏈隨機中斷。
我們縮小了在某一時刻導致此問題的其他幾個因素(VEEAM 備份未在應用程序感知處理中使用“僅複製”)。然而,在解決了許多問題後,我們的一位同事提到我們應該從我們現有的任何維護計劃中刪除日誌傳送數據庫。
但是,我不記得在哪裡,我的高級 DBA 和我的印像是,我們在某處讀過日誌傳送的 dbs 在預設情況下被忽略。儘管如此,我們還是刪除了日誌備份(包括完整備份和差異備份),這解決了問題。
我的問題是:我們應該排除備份嗎?然後接下來的問題是他們是否應該被排除在 Ola 和/或 MSFT 的計劃之外?
無論如何,我們的問題已經解決了——這只是一個檢查我們在某處讀過這篇文章的理智的問題。
當您設置日誌傳送時,它會為事務日誌備份創建一個作業。如果您已經有一個現有的事務日誌備份作業,則應禁用/刪除任何類型(維護計劃、Ola 的解決方案、SQL 代理作業)。
有一種解決方法可以保留現有的事務日誌備份作業並設置日誌傳送。您可以禁用在日誌購物設置期間創建的作業。
範常式式碼:
-- Execute the following statements at the Primary to configure Log Shipping -- for the database [HostName\SQL2019].[DbaDatabase], -- The script needs to be run at the Primary in the context of the [msdb] database. ------------------------------------------------------------------------------------- -- Adding the Log Shipping configuration -- ****** Begin: Script to be run at Primary: [HostName\SQL2019] ****** DECLARE @LS_BackupJobId AS uniqueidentifier DECLARE @LS_PrimaryId AS uniqueidentifier DECLARE @SP_Add_RetCode As int EXEC @SP_Add_RetCode = master.dbo.sp_add_log_shipping_primary_database @database = N'DbaDatabase' ,@backup_directory = N'\\logshipping\backup' ,@backup_share = N'\\logshipping\backup' ,@backup_job_name = N'LSBackup_DbaDatabase' ,@backup_retention_period = 4320 ,@backup_compression = 2 ,@backup_threshold = 60 ,@threshold_alert_enabled = 1 ,@history_retention_period = 5760 ,@backup_job_id = @LS_BackupJobId OUTPUT ,@primary_id = @LS_PrimaryId OUTPUT ,@overwrite = 1 IF (@@ERROR = 0 AND @SP_Add_RetCode = 0) BEGIN DECLARE @LS_BackUpScheduleUID As uniqueidentifier DECLARE @LS_BackUpScheduleID AS int EXEC msdb.dbo.sp_add_schedule @schedule_name =N'LSBackupSchedule_HostName\SQL20191' ,@enabled = 1 ,@freq_type = 4 ,@freq_interval = 1 ,@freq_subday_type = 4 ,@freq_subday_interval = 15 ,@freq_recurrence_factor = 0 ,@active_start_date = 20201029 ,@active_end_date = 99991231 ,@active_start_time = 0 ,@active_end_time = 235900 ,@schedule_uid = @LS_BackUpScheduleUID OUTPUT ,@schedule_id = @LS_BackUpScheduleID OUTPUT EXEC msdb.dbo.sp_attach_schedule @job_id = @LS_BackupJobId ,@schedule_id = @LS_BackUpScheduleID EXEC msdb.dbo.sp_update_job @job_id = @LS_BackupJobId ,@enabled = 0 END EXEC master.dbo.sp_add_log_shipping_alert_job -- ****** End: Script to be run at Primary: [HostName\SQL2019] ******