将文章添加到在另一个数据库上创建的发布时出错

时间:2012-06-21 07:25:00

标签: replication sql-server-2012

我正在使用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.

在ScriptDB中不存在Departments表,但它位于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.

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

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

请帮忙。

1 个答案:

答案 0 :(得分:1)

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