標籤:sql server 2014 記錄傳送
13.2.5 通過T-SQL命令來部署記錄傳送
SQL Server還提供以T-SQL命令方式來部署記錄傳送。在上一個章節中當完成步驟(6)或者(8)後,可儲存產生的命令指令碼。這個指令碼命令結果和在Management Studio中操作的結果是等價的,此命令指令碼也可以使用在使用者在災難恢複方案中更快速的重新部署記錄傳送。
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://s3.51cto.com/wyfs02/M02/57/FC/wKiom1SlPqyS6UmDAAHai7avAlk980.jpg" height="510" />
得到的命令指令碼(帶監視伺服器):
-- 在主伺服器上執行下列語句,以便為資料庫 [SQLSVR1].[DB01]
-- 配置記錄傳送。
-- 需要在主伺服器上 [msdb] 資料庫的上下文中運行該指令碼。
-------------------------------------------------------------------------------------
-- 添加記錄傳送設定-- ****** 開始: 要在主伺服器 [SQLSVR1] 上啟動並執行指令碼 ******DECLARE @LS_BackupJobId AS uniqueidentifierDECLARE @LS_PrimaryId AS uniqueidentifierDECLARE @SP_Add_RetCode As intEXEC @SP_Add_RetCode = master.dbo.sp_add_log_shipping_primary_database@database = N‘DB01‘,@backup_directory = N‘\\192.168.1.20\backuplog‘,@backup_share = N‘\\192.168.1.20\backuplog‘,@backup_job_name = N‘LSBackup_DB01‘,@backup_retention_period = 4320,@backup_compression = 2,@monitor_server = N‘SQLSVR3‘,@monitor_server_security_mode = 1,@backup_threshold = 60,@threshold_alert_enabled = 1,@history_retention_period = 5760,@backup_job_id = @LS_BackupJobId OUTPUT,@primary_id = @LS_PrimaryId OUTPUT,@overwrite = 1IF (@@ERROR = 0 AND @SP_Add_RetCode = 0)BEGINDECLARE @LS_BackUpScheduleUID As uniqueidentifierDECLARE @LS_BackUpScheduleID AS intEXEC msdb.dbo.sp_add_schedule@schedule_name =N‘LSBackupSchedule_SQLSVR11‘,@enabled = 1,@freq_type = 4,@freq_interval = 1,@freq_subday_type = 4,@freq_subday_interval = 15,@freq_recurrence_factor = 0,@active_start_date = 20140708,@active_end_date = 99991231,@active_start_time = 0,@active_end_time = 235900,@schedule_uid = @LS_BackUpScheduleUID OUTPUT,@schedule_id = @LS_BackUpScheduleID OUTPUTEXEC msdb.dbo.sp_attach_schedule@job_id = @LS_BackupJobId,@schedule_id = @LS_BackUpScheduleIDEXEC msdb.dbo.sp_update_job@job_id = @LS_BackupJobId,@enabled = 1ENDEXEC master.dbo.sp_add_log_shipping_primary_secondary@primary_database = N‘DB01‘,@secondary_server = N‘SQLSVR2‘,@secondary_database = N‘DB01‘,@overwrite = 1-- ****** 結束: 要在主伺服器 [SQLSVR1] 上啟動並執行指令碼 ******
-- 在次要伺服器上執行下列語句,以便為資料庫 [SQLSVR2].[DB01]
-- 配置記錄傳送。
-- 需要在次要伺服器上 [msdb] 資料庫的上下文中運行該指令碼。
-------------------------------------------------------------------------------------
-- 添加記錄傳送設定-- ****** 開始: 要在次要伺服器 [SQLSVR2] 上啟動並執行指令碼 ******DECLARE @LS_Secondary__CopyJobId AS uniqueidentifierDECLARE @LS_Secondary__RestoreJobId AS uniqueidentifierDECLARE @LS_Secondary__SecondaryId AS uniqueidentifierDECLARE @LS_Add_RetCode As intEXEC @LS_Add_RetCode = master.dbo.sp_add_log_shipping_secondary_primary@primary_server = N‘SQLSVR1‘,@primary_database = N‘DB01‘,@backup_source_directory = N‘\\192.168.1.20\backuplog‘,@backup_destination_directory = N‘d:\copylog‘,@copy_job_name = N‘LSCopy_SQLSVR1_DB01‘,@restore_job_name = N‘LSRestore_SQLSVR1_DB01‘,@file_retention_period = 4320,@monitor_server = N‘SQLSVR3‘,@monitor_server_security_mode = 1,@overwrite = 1,@copy_job_id = @LS_Secondary__CopyJobId OUTPUT,@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT,@secondary_id = @LS_Secondary__SecondaryId OUTPUTIF (@@ERROR = 0 AND @LS_Add_RetCode = 0)BEGINDECLARE @LS_SecondaryCopyJobScheduleUID As uniqueidentifierDECLARE @LS_SecondaryCopyJobScheduleID AS intEXEC msdb.dbo.sp_add_schedule@schedule_name =N‘DefaultCopyJobSchedule‘,@enabled = 1,@freq_type = 4,@freq_interval = 1,@freq_subday_type = 4,@freq_subday_interval = 15,@freq_recurrence_factor = 0,@active_start_date = 20140708,@active_end_date = 99991231,@active_start_time = 0,@active_end_time = 235900,@schedule_uid = @LS_SecondaryCopyJobScheduleUID OUTPUT,@schedule_id = @LS_SecondaryCopyJobScheduleID OUTPUTEXEC msdb.dbo.sp_attach_schedule@job_id = @LS_Secondary__CopyJobId,@schedule_id = @LS_SecondaryCopyJobScheduleIDDECLARE @LS_SecondaryRestoreJobScheduleUID As uniqueidentifierDECLARE @LS_SecondaryRestoreJobScheduleID AS intEXEC msdb.dbo.sp_add_schedule@schedule_name =N‘DefaultRestoreJobSchedule‘,@enabled = 1,@freq_type = 4,@freq_interval = 1,@freq_subday_type = 4,@freq_subday_interval = 15,@freq_recurrence_factor = 0,@active_start_date = 20140708,@active_end_date = 99991231,@active_start_time = 0,@active_end_time = 235900,@schedule_uid = @LS_SecondaryRestoreJobScheduleUID OUTPUT,@schedule_id = @LS_SecondaryRestoreJobScheduleID OUTPUTEXEC msdb.dbo.sp_attach_schedule@job_id = @LS_Secondary__RestoreJobId,@schedule_id = @LS_SecondaryRestoreJobScheduleIDENDDECLARE @LS_Add_RetCode2 As intIF (@@ERROR = 0 AND @LS_Add_RetCode = 0)BEGINEXEC @LS_Add_RetCode2 = master.dbo.sp_add_log_shipping_secondary_database@secondary_database = N‘DB01‘,@primary_server = N‘SQLSVR1‘,@primary_database = N‘DB01‘,@restore_delay = 0,@restore_mode = 0,@disconnect_users = 0,@restore_threshold = 45,@threshold_alert_enabled = 1,@history_retention_period = 5760,@overwrite = 1,@ignoreremotemonitor = 1ENDIF (@@error = 0 AND @LS_Add_RetCode = 0)BEGINEXEC msdb.dbo.sp_update_job@job_id = @LS_Secondary__CopyJobId,@enabled = 1EXEC msdb.dbo.sp_update_job@job_id = @LS_Secondary__RestoreJobId,@enabled = 1END-- ****** 結束: 要在次要伺服器 [SQLSVR2] 上啟動並執行指令碼 ******
-- ****** 開始: 要在監視器 [SQLSVR3] 上啟動並執行指令碼 ******
EXEC msdb.dbo.sp_processlogshippingmonitorsecondary@mode = 1,@secondary_server = N‘SQLSVR2‘,@secondary_database = N‘DB01‘,@secondary_id = N‘‘,@primary_server = N‘SQLSVR1‘,@primary_database = N‘DB01‘,@restore_threshold = 45,@threshold_alert = 14420,@threshold_alert_enabled = 1,@history_retention_period = 5760,@monitor_server = N‘SQLSVR3‘,@monitor_server_security_mode = 1-- ****** 結束: 要在監視器 [SQLSVR3] 上啟動並執行指令碼 ******
這個命令指令碼中包含的預定義的預存程序用來設定記錄傳送的各個部分;
master.dbo.sp_add_log_shipping_primary_database 為主要資料庫設定記錄傳送設定,並設定記錄傳送備份作業。
msdb.dbo.sp_add_schedule 為記錄傳送設定時間表,或者為複製作業設定時間表,或者為還原作業設定時間表。
msdb.dbo.sp_attach_schedule 把記錄傳送作業連結到時間表,或者把複製作業連結到時間表,或者把還原作業連結到時間表。
msdb.dbo.sp_update_job 啟用交易記錄的備份作業、複製作業或者還原作業
master.dbo.sp_add_log_shipping_primary_secondary在主要資料庫上為指定的次要資料庫設定相關資訊。
master.dbo.sp_add_log_shipping_secondary_primary 在次要資料庫上為指定的主要資料庫設定相關資訊、添加本地和遠端監控連結以及建立複製和還原作業。
master.dbo.sp_add_log_shipping_secondary_database 為記錄傳送設定次要資料庫。
msdb.dbo.sp_processlogshippingmonitorsecondary 在監視伺服器上啟用對主要資料庫和次要資料庫監視警報。
本文出自 “緣隨心愿” 部落格,請務必保留此出處http://281816327.blog.51cto.com/907015/1598315
SQL Server 2014 記錄傳送部署(5):通過T-SQL命令來部署記錄傳送