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

[ @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 代理作业的名称。 @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_security_mode的,默认值 1为,不能 NULL

[ @monitor_server_login = ] 'monitor_server_login'

用于访问监视服务器的帐户的用户名。

[ @monitor_server_password = ] 'monitor_server_password'

用于访问监视服务器的帐户的密码。

[ @backup_threshold = ] backup_threshold

在引发@threshold_alert错误之前上次备份的时间长度(以分钟为单位)。 @backup_thresholdint,默认值为 60 分钟。

[ @threshold_alert = ] threshold_alert

超过备份阈值时引发的警报。 @threshold_alert为 int,默认值为 14,420。

[ @threshold_alert_enabled = ] threshold_alert_enabled

指定在超出@backup_threshold是否引发警报。 默认值为零(0),表示警报已禁用且不会引发。 @threshold_alert_enabled位

[ @history_retention_period = ] history_retention_period

保留历史记录的时间长度(以分钟为单位)。 @history_retention_period为 int. 如果不指定值,则使用值 14420。

[ @backup_job_id = ] backup_job_id 输出

与主服务器上的备份作业关联的SQL Server 代理作业 ID。 @backup_job_id是 uniqueidentifier 类型的 OUTPUT 参数,不能NULL

[ @primary_id = ] primary_id 输出

日志传送配置的主数据库 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. 生成主 ID,并使用提供的参数为表中 log_shipping_primary_databases 的主数据库添加一个条目。

  2. 为被禁用的主数据库创建一个备份作业。

  3. 将条目中的 log_shipping_primary_databases 备份作业 ID 设置为备份作业的作业 ID。

  4. 使用提供的参数在主服务器上的表中 log_shipping_monitor_primary 添加本地监视器记录。

  5. 如果监视器服务器与主服务器不同, sp_add_log_shipping_primary_database 请使用提供的自变量在 log_shipping_monitor_primary 监视器服务器上添加监视器记录。

权限

只有 sysadmin 固定服务器角色的成员才能运行此过程。

示例

答: 在日志运输配置中添加主数据库

此示例将在日志传送配置中添加 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;';

有关详细信息,请参阅 加密和证书验证行为