日志傳送(log shipping)主要基於SQL Server代理,使用定時作業來完成,另外在配置日志傳送之前必須要創建共享文件夾,用於輔助服務器訪問。這裡我們假設有數據庫logTrans1需要進行日志傳送,共享文件夾為“C:\data”,在T-SQL中配置日志傳送主要有以下幾步操作:
(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 = N'logTrans1'
,@backup_directory = N'D:\data'
,@backup_share = N'\\10.101.10.66\data'
,@backup_job_name = N'LSBackup_logTrans1'
,@backup_retention_period = 1440
,@monitor_server = N'localhost'
,@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 =N'LSBackup_logTrans1',
@name=N'BackupDBEvery2Min',
@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數據庫中,在其他數據庫中是沒有該存儲過程的。