适用范围:SQL Server
设置日志传送配置(包括备份作业、本地监视记录及远程监视记录)的主数据库。
语法
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'
日志传送主数据库的名称。 @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_threshold 为 int,默认值为 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 OUTPUT
与主服务器上的备份作业关联的SQL Server 代理作业 ID。
@backup_job_id是 uniqueidentifier 类型的 OUTPUT 参数,不能NULL。
[ @primary_id = ] primary_id OUTPUT
日志传送配置的主数据库 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_options 为 nvarchar(4000), 默认值为 NULL.
下表列出了可用的连接选项:
| Key | 价值 |
|---|---|
Encrypt |
strict、mandatory、optional、true、false |
TrustServerCertificate |
true、false、yes、no |
ServerCertificate |
文件系统上服务器证书的路径。 此长度上限为 260 个字符。 |
HostNameInCertificate |
证书的主机名替代。 此长度上限为 255 个字符。 |
[ @monitor_connection_options = ] '<key_value_pairs>;[...]'
适用于:SQL Server 2025 (17.x) 预览版和更高版本
使用远程监视器时,以键值对的形式指定链接服务器连接的其他连接选项。
@monitor_connection_options 为 nvarchar(4000), 默认值为 NULL.
下表列出了可用的连接选项:
| Key | 价值 |
|---|---|
Encrypt |
strict、mandatory、optional、true、false |
TrustServerCertificate |
true、false、yes、no |
ServerCertificate |
文件系统上服务器证书的路径。 此长度上限为 260 个字符。 |
HostNameInCertificate |
证书的主机名替代。 此长度上限为 255 个字符。 |
返回代码值
0(成功)或 1(失败)。
结果集
无。
注解
sp_add_log_shipping_primary_database 必须从 master 主服务器上的数据库运行。 此存储过程可执行以下功能:
生成主 ID,并使用提供的参数为表中
log_shipping_primary_databases的主数据库添加一个条目。为被禁用的主数据库创建一个备份作业。
将条目中的
log_shipping_primary_databases备份作业 ID 设置为备份作业的作业 ID。使用提供的参数在主服务器上的表中
log_shipping_monitor_primary添加本地监视器记录。如果监视器服务器与主服务器不同,
sp_add_log_shipping_primary_database请使用提供的自变量在log_shipping_monitor_primary监视器服务器上添加监视器记录。
权限
只有 sysadmin 固定服务器角色的成员才能运行此过程。
示例
此示例将在日志传送配置中添加 AdventureWorks2022 数据库作为主数据库。
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
本示例将数据库 AdventureWorks2022 添加为日志传送配置中的主数据库,并指示日志传送对从日志传送可执行文件和主实例到远程监视实例 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