我正在使用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数据库中执行上述脚本来创建发布者(使用两个发布者数据库)。这是否可以实施。
请帮忙。
答案 0 :(得分:1)
sp_addarticle必须在发布数据库的发布服务器上执行。如果要发布PublisherDB数据库,则为PublisherDB创建发布,并在PublisherDB数据库上调用sp_addarticle,以将文章添加到发布中。