Transact-SQL 参考

sp_adddistributiondb

创建新的分发数据库并安装分发服务器架构。分发数据库存储过程、架构以及用于复制的元数据。此存储过程在分发服务器的主数据库上执行,创建分发数据库并安装启用复制分发所需的表和存储过程。

语法

sp_adddistributiondb [ @database = ] 'database'
    [ , [ @data_folder = ] 'data_folder' ]
    
[ , [ @data_file = ] 'data_file' ]
    
[ , [ @data_file_size = ] data_file_size ]
    [ , [ @log_folder = ] 'log_folder' ]
    
[ , [ @log_file = ] 'log_file' ]
    [ , [ @log_file_size = ] log_file_size ]
    
[ , [ @min_distretention = ] min_distretention ]
    [ , [ @max_distretention = ] max_distretention ]
    
[ , [ @history_retention = ] history_retention ]
    [ , [ @security_mode = ] security_mode ]
    [ , [ @login = ] 'login' ]
    [ , [ @password = ] 'password' ]
    [ , [ @createmode = ] createmode ]

参数

[@database = ] 'database'

是要创建的分发数据库名称。database 的数据类型为 sysname,没有默认设置。

[@data_folder = ] 'data_folder'

是用于存储分发数据库数据文件的目录名称。data_folder 的数据类型为 nvarchar(255),默认设置为 NULL。如果是 NULL,则使用 Microsoft® SQL Server™ 实例的数据目录,例如"C:\Program Files\Microsoft SQL Server\Mssql\Data"。

[@data_file = ] 'data_file'

是数据库文件名。data_file 的数据类型为 nvarchar(255),默认设置为 database。如果是 NULL,则存储过程使用数据库名称构造文件名。

[@data_file_size = ] data_file_size

是以兆字节 (MB) 为单位的数据文件初始大小。data_file_size 的数据类型为 int,默认设置为 2 MB。

[@log_folder = ] 'log_folder'

是数据库日志文件目录名。log_folder 的数据类型为 nvarchar(255),默认设置为 NULL。如果是 NULL,则使用 SQL Server 实例的数据目录,例如 C:\Program Files\Microsoft SQL Server\Mssql\Data。

[@log_file = ] 'log_file'

是日志文件名。log_file 的数据类型为 nvarchar(255),默认设置为 NULL。如果是 NULL,则存储过程使用数据库名称构造文件名。

[@log_file_size = ] log_file_size

是初始日志文件大小(以 MB 为单位)。log_file_size 的数据类型为 int,默认设置为 0 MB,表示使用 SQL Server 允许的最小日志文件大小所创建的文件大小。

[@min_distretention = ] min_distretention

是事务从分发数据库中删除前的最小保持期(以小时为单位)。min_distretention 的数据类型为 int,默认设置为 0 小时。

[@max_distretention = ] max_distretention

是事务被删除前的最大保持期(以小时为单位)。max_distretention 的数据类型为 int,默认设置为 72 小时。将还没有接收到早于最大分发保持期的复制命令的订阅标记为非活动,且需要重新初始化。对每个非活动的订阅发出 RAISERROR 21011。

[@history_retention = ] history_retention

是保留历史记录的小时数。history_retention 的数据类型为 int,默认设置为 48 小时。

[@security_mode = ] security_mode

是要在创建分发数据库对象时使用的安全模式。security_mode 的数据类型为 int,默认设置为 0。0 指定 SQL Server 身份验证,而 1 指定 Windows 身份验证。

[@login = ] 'login'

是连接到分发服务器时所使用的登录名,连接后可以运行 instdist.sql 创建分发数据库对象。如果将 security_mode 设置为 0,则这是必需的。login 的数据类型为 sysname,默认设置为 sa

[@password = ] 'password'

是连接到分发服务器运行 instdist.sql 时所使用的密码。如果将 security_mode 设置为 0,则这是必需的。password 的数据类型为 sysname,默认设置为 NULL。

[@createmode = ] createmode

createmode 的数据类型为 int,默认设置为 0,可以是下列值之一。

描述
0(默认值) CREATE DATABASE,使用分发数据库模型文件 (distmdl.mdf) 的复本附加分发数据库。
1 CREATE DATABASE 或使用现有的数据库,然后应用 instdist.sql 文件在分发数据库中创建复制对象。
2 仅限内部使用。

返回代码值

0(成功)或 1(失败)

注释

sp_adddistributiondb 用于所有类型的复制。但是,此存储过程只在分发服务器上运行。

在运行 sp_adddistributiondb 之前运行 sp_adddistributor

权限

只有 sysadmin 固定服务器角色成员才能执行 sp_adddistributiondb

请参见

sp_changedistributiondb

sp_dropdistributiondb

sp_helpdistributiondb

系统存储过程