共用方式為


sp_add_log_shipping_primary_database (Transact-SQL)

適用於:SQL Server

設定記錄傳送組態的主要資料庫,其中包括備份作業、本機監視記錄,以及遠端監視記錄。

Transact-SQL 語法慣例

語法

sp_add_log_shipping_primary_database
    [ @database = ] 'database'
    , [ @backup_directory = ] N'backup_directory'
    , [ @backup_share = ] N'backup_share'
    , [ @backup_job_name = ] 'backup_job_name'
    [ , [ @backup_retention_period = ] backup_retention_period ]
    [ , [ @monitor_server = ] 'monitor_server' ]
    [ , [ @monitor_server_security_mode = ] monitor_server_security_mode ]
    [ , [ @monitor_server_login = ] 'monitor_server_login' ]
    [ , [ @monitor_server_password = ] 'monitor_server_password' ]
    [ , [ @backup_threshold = ] backup_threshold ]
    [ , [ @threshold_alert = ] threshold_alert ]
    [ , [ @threshold_alert_enabled = ] threshold_alert_enabled ]
    [ , [ @history_retention_period = ] history_retention_period ]
    [ , [ @backup_job_id = ] backup_job_id OUTPUT ]
    [ , [ @primary_id = ] primary_id OUTPUT ]
    [ , [ @backup_compression = ] backup_compression_option ]
    [ , [ @primary_connection_options = ] '<key_value_pairs>;[...]' ]
    [ , [ @monitor_connection_options = ] '<key_value_pairs>;[...]' ]
[ ; ]

引數

[ @database = ] '資料庫'

記錄傳送主資料庫的名稱。 @database是 sysname,沒有預設值,而且不能是 NULL

[ @backup_directory = ] N'backup_directory'

主伺服器上的備份資料夾路徑。 @backup_directory是 nvarchar(500),沒有預設值,而且不能是 NULL

[ @backup_share = ] N'backup_share'

主伺服器上的備份目錄網路路徑。 @backup_share是 nvarchar(500),沒有預設值,而且不能是 NULL

[ @backup_job_name = ] 「backup_job_name

將備份複製到備份資料夾之主伺服器上的 SQL Server Agent 作業名稱。 @backup_job_name是 sysname

[ @backup_retention_period = ] backup_retention_period

在主伺服器上的備份目錄中保留記錄備份文件的時間長度,以分鐘為單位。 @backup_retention_period為 int,沒有預設值,而且不能是 NULL

[ @monitor_server = ] 『monitor_server

監視伺服器的名稱。 @monitor_server是 sysname,沒有預設值,而且不能是 NULL

[ @monitor_server_security_mode = ] monitor_server_security_mode

用來線上到監視伺服器的安全性模式。

  • 1:Windows 驗證
  • 0:SQL Server 驗證

[ @monitor_server_login = ] 『monitor_server_login

用來存取監視伺服器的帳戶用戶名稱。

[ @monitor_server_password = ] 『monitor_server_password

用來存取監視伺服器之帳戶的密碼。

[ @backup_threshold = ] backup_threshold

在引發@threshold_alert錯誤前的最後一次備份之後,以分鐘為單位的時間長度。 @backup_threshold為 int,預設值為 60 分鐘。

[ @threshold_alert = ] threshold_alert

超過備份閾值時要引發的警示。 @threshold_alert為 int,預設值為 14,420。

[ @threshold_alert_enabled = ] threshold_alert_enabled

指定是否在超過@backup_threshold引發警示。 默認值為零 (0),表示警示已停用且不會引發。 @threshold_alert_enabled為 bit

[ @history_retention_period = ] history_retention_period

保留歷程記錄的分鐘數長度。 @history_retention_period為 int。 如果未指定任何值,則會使用 14420 的值。

[ @backup_job_id = ] backup_job_id 輸出

與主伺服器上備份作業相關聯的 SQL Server Agent 作業標識碼。 @backup_job_id是 uniqueidentifier 類型的 OUTPUT 參數,不能是 NULL

[ @primary_id = ] primary_id 輸出

記錄傳送組態之主資料庫的標識碼。 @primary_id是 uniqueidentifier 類型的 OUTPUT 參數,不能是 NULL

[ @backup_compression = ] backup_compression_option

指定記錄傳送組態是否使用 備份壓縮

  • 0:禁用。 永遠不要壓縮記錄備份。
  • 1:啟用。 一律壓縮記錄備份。
  • 2 (預設值):使用 備份壓縮預設 伺服器組態選項。

[ @primary_connection_options = ] '<key_value_pairs>;[......]'

適用於:SQL Server 2025(17.x)及更新版本

在連線到主要資料庫時,以索引鍵值組的形式指定其他連線選項。 @primary_connection_optionsnvarchar(4000), 預設值為 NULL

下表列出可用的連線選項:

Key 價值觀
Encrypt strictmandatoryoptionaltruefalse
TrustServerCertificate truefalseyesno
ServerCertificate 檔案系統上伺服器憑證的路徑。 其長度上限為 260 個字元。
HostNameInCertificate 憑證的主機名稱覆寫。 其長度上限為 255 個字元。

[ @monitor_connection_options = ] '<key_value_pairs>;[......]'

適用於:SQL Server 2025(17.x)及更新版本

在使用遠端監視器時,以索引鍵值組的形式指定連結伺服器連線的其他連線選項。 @monitor_connection_optionsnvarchar(4000), 預設值為 NULL

下表列出可用的連線選項:

Key 價值觀
Encrypt strictmandatoryoptionaltruefalse
TrustServerCertificate truefalseyesno
ServerCertificate 檔案系統上伺服器憑證的路徑。 其長度上限為 260 個字元。
HostNameInCertificate 憑證的主機名稱覆寫。 其長度上限為 255 個字元。

傳回碼值

0 (成功) 或 1 (失敗)。

結果集

無。

備註

sp_add_log_shipping_primary_database 必須在主伺服器上從 master 資料庫執行。 此預存程式會執行下列函式:

  1. 產生主要標識碼,並使用提供的自變數,在數據表 log_shipping_primary_databases 中加入主資料庫的專案。

  2. 為停用的主資料庫建立備份作業。

  3. 將專案中的 log_shipping_primary_databases 備份作業標識元設定為備份作業的作業標識碼。

  4. 使用提供的自變數,在主伺服器上的數據表 log_shipping_monitor_primary 中新增本機監視器記錄。

  5. 如果監視伺服器與主伺服器不同, sp_add_log_shipping_primary_database 請使用提供的自變數在監視伺服器上新增監視記錄 log_shipping_monitor_primary

權限

只有系統管理員固定伺服器角色的成員才能執行此程式。

範例

A。 在日誌運送配置中新增主要資料庫

本範例會將資料庫 AdventureWorks2025 新增為記錄傳送組態中的主資料庫。

DECLARE @LS_BackupJobId AS UNIQUEIDENTIFIER;
DECLARE @LS_PrimaryId AS UNIQUEIDENTIFIER;

EXECUTE master.dbo.sp_add_log_shipping_primary_database
    @database = N'AdventureWorks',
    @backup_directory = N'c:\lsbackup',
    @backup_share = N'\\backupshare\lsbackup',
    @backup_job_name = N'LSBackup_AdventureWorks',
    @backup_retention_period = 1440,
    @monitor_server = N'monitor-server',
    @monitor_server_security_mode = 1,
    @backup_threshold = 60,
    @threshold_alert = 0,
    @threshold_alert_enabled = 0,
    @history_retention_period = 1440,
    @backup_job_id = @LS_BackupJobId OUTPUT,
    @primary_id = @LS_PrimaryId OUTPUT,
    @overwrite = 1,
    @backup_compression = 0;
GO

B. 新增主要資料庫並嚴格加密

此範例會將資料庫 AdventureWorks2025 新增為日誌傳送配置中的主要資料庫,並指示日誌傳送針對從日誌傳送可執行檔到主要實例的連線,以及從主要實例到遠端監視器實例 monitor-server的連線,使用嚴格的加密選項。

DECLARE @LS_BackupJobId AS UNIQUEIDENTIFIER;
DECLARE @LS_PrimaryId AS UNIQUEIDENTIFIER;

EXECUTE master.dbo.sp_add_log_shipping_primary_database
    @database = N'AdventureWorks',
    @backup_directory = N'c:\lsbackup',
    @backup_share = N'\\backupshare\lsbackup',
    @backup_job_name = N'LSBackup_AdventureWorks',
    @backup_retention_period = 1440,
    @monitor_server = N'monitor-server',
    @monitor_server_security_mode = 1,
    @backup_threshold = 60,
    @threshold_alert = 0,
    @threshold_alert_enabled = 0,
    @history_retention_period = 1440,
    @backup_job_id = @LS_BackupJobId OUTPUT,
    @primary_id = @LS_PrimaryId OUTPUT,
    @overwrite = 1,
    @backup_compression = 0,
    @primary_connection_options = N'Encrypt=Strict;',
    @monitor_connection_options = N'Encrypt=Strict;';
GO

C. 使用帶有連接功能的遠端螢幕

如果監控器是遠端的 SQL Server 2025 (17.x) 實例,而日誌運送拓撲中其他 SQL Server 實例使用舊版本,日誌運送監控可能會失效。

一旦你放棄現有設定,請使用以下範例腳本,以正確的 @monitor_connection_options重建日誌運送設定,無論是主副本還是次副本。

DECLARE @LS_BackupJobId AS UNIQUEIDENTIFIER;
DECLARE @LS_PrimaryId AS UNIQUEIDENTIFIER;

EXECUTE
    master.dbo.sp_add_log_shipping_primary_database
    @database = N'LogShippedDB',
    @backup_directory = N'\\backupshare\lsbackup',
    @backup_share = N'\\backupshare\lsbackup',
    @backup_job_name = N'LSBackup_AdventureWorks',
    @backup_retention_period = 4320,
    @backup_compression = 2,
    @monitor_server = N'LS25Monitor',
    @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 = 1,
    @monitor_connection_options = N'Encrypt=Mandatory;TrustServerCertificate=Yes;';

欲了解更多資訊,請參閱 加密與憑證驗證行為