使用T-SQL配置数据库事务日志传送
生活随笔
收集整理的這篇文章主要介紹了
使用T-SQL配置数据库事务日志传送
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
日志傳送(log shipping)主要基于SQL Server代理,使用定時作業來完成,另外在配置日志傳送之前必須要創建共享文件夾,用于輔助服務器訪問。這里我們假設有數據庫logTrans1需要進行日志傳送,共享文件夾為“C:\data”,在T-SQL中配置日志傳送主要有以下幾步操作: <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
?
(1)備份主數據庫并在輔助服務器上還原主數據庫的完整備份,初始化輔助數據庫。具體操作如代碼:?
backup database logTrans1 --在主數據庫上備份 to disk=c:\logt.bak --以下是將數據庫還原到輔助數據庫上 restore database logTrans2 from disk=c:\logt.bak with NORECOVERY, move logTrans to c:\logTrans2.mdf, move logTrans_log to c:\logTrans2.ldf (2)在主服務器上,執行sp_add_log_shipping_primary_database以添加主數據庫。存儲過程將返回備份作業ID和主ID,具體SQL腳本如代碼:?
DECLARE @LS_BackupJobId AS uniqueidentifier DECLARE @LS_PrimaryId AS uniqueidentifier EXEC master.dbo.sp_add_log_shipping_primary_database @database = NlogTrans1 ,@backup_directory = ND:\data ,@backup_share = N\\10.101.10.66\data ,@backup_job_name = NLSBackup_logTrans1 ,@backup_retention_period = 1440 ,@monitor_server = Nlocalhost ,@monitor_server_security_mode = 1 ,@backup_threshold = 60 ,@threshold_alert_enabled = 0 ,@history_retention_period = 1440 ,@backup_job_id = @LS_BackupJobId OUTPUT ,@primary_id = @LS_PrimaryId OUTPUT ,@overwrite = 1?
?
(3)在主服務器上,執行sp_add_jobschedule以添加使用備份作業的計劃。為了能夠盡快看到日志傳送的效果,這里將日志備份的頻率設置為2分鐘一次。但是在實際生產環境中,一般是用不到這么高的執行頻率的。添加計劃的腳本如代碼:?
DECLARE @schedule_id int EXEC msdb.dbo.sp_add_jobschedule @job_name =NLSBackup_logTrans1, @name=NBackupDBEvery2Min, @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=4, @freq_subday_interval=2, @freq_relative_interval=0, @freq_recurrence_factor=1, @active_start_date=20080622, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959, @schedule_id = @schedule_id OUTPUT select @schedule_id?
【注意:sp_add_jobschedule存儲過程是在msdb數據庫中,在其他數據庫中是沒有該存儲過程的?!?/span>?
(4)在監視服務器上,執行sp_add_log_shipping_alert_job以添加警報作業。此存儲過程用于檢查是否已在此服務器上創建了警報作業。如果警報作業不存在,此存儲過程將創建警報作業并將其作業ID添加到log_shipping_monitor_alert表中。默認情況下,將啟用警報作業并按計劃每兩分鐘運行一次。添加警報作業如代碼:?
USE master GO EXEC sp_add_log_shipping_alert_job; (5)在主服務器上,啟用備份作業。啟用作業使用sp_update_job存儲過程,只需要輸入作業名并設置狀態為1即可。具體SQL腳本如代碼:?
EXEC msdb.dbo.sp_update_job @job_name=LSBackup_logTrans1, @enabled=1 (6)在輔助服務器上,執行sp_add_log_shipping_secondary_primary,提供主服務器和數據庫的詳細信息。此存儲過程返回輔助ID以及復制和還原作業ID,具體SQL腳本如代碼:?
DECLARE @LS_Secondary__CopyJobId uniqueidentifier DECLARE @LS_Secondary__RestoreJobId uniqueidentifier DECLARE @LS_Secondary__SecondaryId uniqueidentifier EXEC master.dbo.sp_add_log_shipping_secondary_primary @primary_server = N10.101.10.66 ,@primary_database = NlogTrans1 ,@backup_source_directory = N\\10.101.10.66\data ,@backup_destination_directory = ND:\log ,@copy_job_name = NLSCopy_logTrans1 ,@restore_job_name = NLSRestore_logTrans2 ,@file_retention_period = 1440 ,@copy_job_id = @LS_Secondary__CopyJobId OUTPUT ,@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT ,@secondary_id = @LS_Secondary__SecondaryId OUTPUT (7)在輔助服務器上,執行sp_add_jobschedule以設置復制和還原作業的計劃。這里一般將復制和還原作業計劃的頻率設置來和日志備份的作業頻率相同,所以此處將這兩個作業的頻率設置為每2分鐘執行一次,具體SQL腳本如代碼:?
DECLARE @schedule_id int --設置復制作業計劃 EXEC msdb.dbo.sp_add_jobschedule @job_name=NLSCopy_logTrans1, @name=NCopyEvery2Min, @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=4, @freq_subday_interval=2, @freq_relative_interval=0, @freq_recurrence_factor=1, @active_start_date=20080622, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959, @schedule_id = @schedule_id OUTPUT select @schedule_id --設置還原作業的計劃 EXEC msdb.dbo.sp_add_jobschedule @job_name=NLSCopy_logTrans1, @name=NRestoreEvery2Min, @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=4, @freq_subday_interval=2, @freq_relative_interval=0, @freq_recurrence_factor=1, @active_start_date=20080622, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959, @schedule_id = @schedule_id OUTPUT select @schedule_id (8)在輔助服務器上,執行sp_add_log_shipping_secondary_database以添加輔助數據庫,具體操作腳本如代碼:?
??
EXEC master.dbo.sp_add_log_shipping_secondary_database @secondary_database = NlogTrans2 ,@primary_server = N10.101.10.66 ,@primary_database = NlogTrans1 ,@restore_delay = 0 ,@restore_mode = 1 ,@disconnect_users = 0 ,@restore_threshold = 45 ,@threshold_alert_enabled = 0 ,@history_retention_period = 1440 (9)在主服務器上,執行sp_add_log_shipping_primary_secondary向主服務器添加有關新輔助數據庫的必需信息,具體SQL腳本如代碼:?
EXEC master.dbo.sp_add_log_shipping_primary_secondary @primary_database = NlogTrans1 , @secondary_server = N10.101.10.67 --輔助數據庫的IP , @secondary_database = NlogTrans2?
(10)在輔助服務器上,啟用復制和還原作業。啟用作業仍然使用sp_update_job存儲過程,具體操作如代碼:?
EXEC msdb.dbo.sp_update_job @job_name=LSCopy_logTrans1, @enabled=1?
EXEC msdb.dbo.sp_update_job @job_name=LSRestore_logTrans2, @enabled=1 通過以上10步操作就完成了對日志傳送的配置?,F在每隔2分鐘,系統將會把主服務器中的日志備份到共享文件夾中,輔助服務器訪問共享文件夾將日志備份復制到本地硬盤上,然后由還原作業將復制到本地的日志還原到數據庫,從而完成了日志的傳送。用戶可以在共享文件夾和輔助服務器的本地復制文件夾中看到備份的日志文件。?
【說明:在SSMS中可以通過右擊對應的作業,在彈出的右鍵菜單中選擇“查看歷史記錄”選項來查看該作業是否正常運行。如果所有日志傳送正常運行,則說明日志傳送正常?!?/span> 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的使用T-SQL配置数据库事务日志传送的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Thinkpad产品预装Win7系统一键
- 下一篇: Forrester:建立企业数据库安全计