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.

パブリケーションを作成するために別のデータベースでスクリプトを実行できませんか。

たとえば、マスター データベースと 2 つのパブリッシャー データベースがある場合を考えてみましょう。2 つの個別のパブリケーション (パブリッシャー データベースごとに 1 つ) を作成したいと考えています。master データベースで上記のスクリプトを実行して、発行者を作成できます (2 つの発行者データベースを使用)。これを実装することは可能ですか。

助けてください。

4

1 に答える 1

1

sp_addarticleは、パブリケーション データベースのパブリッシャーで実行する必要があります。PublisherDB データベースを公開する場合は、PublisherDB のパブリケーションを作成し、PublisherDB データベースで sp_addarticle を呼び出して記事をパブリケーションに追加します。

于 2012-06-21T15:40:22.377 に答える