2

我正在使用 sql server 2012 及其复制功能。我在这里尝试手动创建出版物并使用脚本向其中添加文章。我能够成功创建该出版物,但在向其中添加文章时遇到问题。

这是我添加文章的脚本

EXEC ScriptDB.dbo.sp_addarticle 
            @publication = 'PublicationOne',
            @article = 'Departments',
            @source_object = 'Departments',
            @source_owner = 'dbo',
            @type = N'logbased',
            @schema_option = 0x000000000803509F,
            @identityrangemanagementoption = N'manual',
            @pre_creation_cmd = N'none'

最重要的是,Departments 表在 PublisherDB 数据库中,我正在从 ScriptDB 数据库运行这个脚本。由于我将拥有许多发布者,因此我将动态传递这些值。

当我执行上述脚本时,出现以下错误

Msg 14027, Level 11, State 1, Procedure sp_MSrepl_addarticle, Line 590  [dbo].[Departments] does not exist in the current database.

Departments 表在 ScriptDB 中不存在,但在 PublisherDB 数据库中。所以我将脚本更改为

EXEC PublisherDB.dbo.sp_addarticle 
            @publication = 'PublicationOne',
            @article = 'Departments',
            @source_object = 'Departments',
            @source_owner = 'dbo',
            @type = N'logbased',
            @schema_option = 0x000000000803509F,
            @identityrangemanagementoption = N'manual',
            @pre_creation_cmd = N'none'

现在它说,

Msg 20026, Level 11, State 1, Procedure sp_MSreinit_article, Line 40 The publication 'PublicationOne' does not exist.

告诉我一些事情,我不能在另一个数据库上运行脚本来创建出版物。

例如,考虑这种情况,我有一个主数据库和两个发布者数据库。我想创建两个单独的出版物(每个发布者数据库一个)。现在我可以在主数据库中执行上述脚本来创建发布者(使用两个发布者数据库)。这是否可以实现。

请帮忙。

4

1 回答 1

1

sp_addarticle必须在发布服务器上对发布数据库执行。如果您希望发布 PublisherDB 数据库,则为 PublisherDB 创建发布并在 PublisherDB 数据库上调用 sp_addarticle 以将文章添加到发布中。

于 2012-06-21T15:40:22.377 回答