3

SQL Server 2012を使用しており、トランザクションレプリケーションを実装しようとしています。システムストアドプロシージャを使用して、パブリケーションとサブスクリプションを作成しています。これらの作成に成功しましたが、レプリケーションモニターを確認すると、「初期化されていないサブスクリプション」と表示されます。

サブスクリプションの同期ステータスを確認すると、このログが見つかりました

Date        6/20/2012 7:36:33 PM
Log     Job History (HYDHTC0131320D-PublisherDB-PublicationOne-HYDHTC0131320D\MSS-ReplicationSubscri-7C1D7509-C8A6-4073-A901-0433A2B6D2D3)

Step ID     1
Server      HYDHTC0131320D\MSSQLSERVER2
Job Name        HYDHTC0131320D-PublisherDB-PublicationOne-HYDHTC0131320D\MSS-ReplicationSubscri-7C1D7509-C8A6-4073-A901-0433A2B6D2D3
Step Name       Run agent.
Duration        00:07:41
Sql Severity    0
Sql Message ID  0
Operator Emailed    
Operator Net sent   
Operator Paged  
Retries Attempted   0

Message
2012-06-20 14:14:13.986 Copyright (c) 2008 Microsoft Corporation
2012-06-20 14:14:13.986 Microsoft SQL Server Replication Agent: distrib
2012-06-20 14:14:13.986 
2012-06-20 14:14:13.986 The timestamps prepended to the output lines are expressed in terms of UTC time.
2012-06-20 14:14:13.986 User-specified agent parameter values:
            -Publisher HYDHTC0131320D
            -PublisherDB PublisherDB
            -Publication PublicationOne
            -Distributor HYDHTC0131320D
            -SubscriptionType 2
            -Subscriber HYDHTC0131320D\MSSQLSERVER2
            -SubscriberSecurityMode 1
            -SubscriberDB ReplicationSubscriberDB
            -Continuous
            -XJOBID 0xDFE51AEC7F9E3F42A450CE8874B662CD
            -XJOBNAME HYDHTC0131320D-PublisherDB-PublicationOne-HYDHTC0131320D\MSS-ReplicationSubscri-7C1D7509-C8A6-4073-A901-0433A2B6D2D3
            -XSTEPID 1
            -XSUBSYSTEM Distribution
            -XSERVER HYDHTC0131320D\MSSQLSERVER2
            -XCMDLINE 0
            -XCancelEventHandle 000005F8
            -XParentProcessHandle 00000560
2012-06-20 14:14:13.986 Startup Delay: 619 (msecs)
2012-06-20 14:14:14.606 Connecting to Subscriber 'HYDHTC0131320D\MSSQLSERVER2'
2012-06-20 14:14:14.656 Connecting to Distributor 'HYDHTC0131320D'
2012-06-20 14:14:14.671 Parameter values obtained from agent profile:
            -bcpbatchsize 2147473647
            -commitbatchsize 100
            -commitbatchthreshold 1000
            -historyverboselevel 1
            -keepalivemessageinterval 300
            -logintimeout 15
            -maxbcpthreads 1
            -maxdeliveredtransactions 0
            -pollinginterval 5000
            -querytimeout 1800
            -skiperrors 
            -transactionsperhistory 100
2012-06-20 14:14:14.683 Agent message code 21040. Publication '' does not exist.

この問題を解決するにはどうすればよいですか?

4

4 に答える 4

3

同じエラーが発生しました。私の修正は、最初はnullとして持っていたJob_loginとjob_passwordを明示的に定義することでした。

EXEC sp_addpullsubscription_agent 
@publisher = @publisher, 
@publisher_db = @publicationDB, 
@publication = @publication, 
@distributor = @publisher, 
@job_login = $(Login), 
@job_password = $(Password);
于 2012-10-19T14:48:19.607 に答える
1

レプリケーション設定スクリプトにエラーがあるようです。

エラーは、sp_addpushsubscription_agent(プッシュサブスクリプションの場合)またはsp_addpullsubscription_agent(プルサブスクリプションの場合)の呼び出しにあると思われます。具体的には、@ publicationパラメータが間違っています。これは、配布エージェントが、指定されたパブリケーション"が存在しないと述べているためです。

スクリプトを確認して、再試行してください。

于 2012-06-20T16:11:34.607 に答える
1

私は同じ問題に直面し、次のようにして修正しました:

  • -サブスクライバージョブの所有者はパブリケーションユーザーと同じです

  • -サブスクライバーユーザーがサブスクライバーユーザーリストに追加され、sysadminサーバーの役割に追加されました

于 2013-09-04T05:47:45.670 に答える
0

プルサブスクライバーをバックアップ初期化で稼働させることができたので、いくつかの注意事項があります。

  1. sysadminはすべてのインスタンスにログインするため、パブリッシャー、ディストリビューター、およびサブスクライバーのエージェントアカウントを持っていることを確認してください。たとえば、サブスクライバーはディストリビューターとパブリッシャーに存在する必要があります。
  2. 各インスタンスのすべてのコンポーネント(サブスクライバーのディストリビューターとパブリッシャーの例)にリンクサーバーを作成します。
  3. 次に、ソースデータベースの完全バックアップを取り、サブスクリプションインスタンスでリカバリせずに復元します。
  4. パブリッシャーデータベース(sp_addsubscription)にパブリケーションコンポーネントを作成し、があることを確認します@sync_type = N'replication support only'
  5. 次に、ソースデータベースのdiffバックアップを取り、サブスクリプションインスタンスでリカバリを使用して復元します。
  6. 次に、サブスクリプションインスタンス(sp_addpullsubscription)でプルサブスクリプションを作成します。ソースがミラーリングされたインスタンスの場合は、ここで元のインスタンス値(@publisher)を使用することに注意してください。「ミラー」インスタンスのプリンシパルの場合、メタデータは正しく作成され、ディストリビューターには、ログリーダーをいずれかのミラーインスタンスに接続するためのロジックが含まれています。
  7. これで、ディストリビューターが差分バックアップの前にデータのキャプチャを開始したため、主キーなどが失敗するという問題が発生します...問題ありません。サブスクライバージョブを停止してから、-SkipErrorsパラメーターを「2601:2627」に設定して、ディストリビューターエージェントに新しいプロファイルを追加します。これにより、すべての主キー違反トランザクションがスキップされ、処理が続行されます。次に、このエージェントプロファイルを選択して、[OK]をクリックすることを忘れないでください。
  8. サブスクリプションジョブを再開し、トランザクションに追いつき始めたらサブスクリプションを監視します。
  9. 追いついたら、ジョブを停止し、エージェントプロファイルをデフォルトに戻し、ジョブを再開します。

これが、バックアップの初期化に基づいてプルサブスクライバーに苦労している人に役立つことを願っています...レプリケーション構成内でバックアップ構成を使用したことは一度もないことに注意してください。また、プルサブスクリプションを初期化してはならないことも述べました(@immediate_sync = 0)。

スクリプトは次のとおりです。

-----------------BEGIN: Script to be run at Publisher 'DB001\OLTP'-----------------
use [DB1]
go
exec sp_addsubscription @publication = N'DB1', @subscriber = N'DB002\OLTP', @destination_db = N'DB1', @sync_type = N'replication support only', @subscription_type = N'pull', @update_mode = N'read only'
GO

-----------------END: Script to be run at Publisher 'DB001\OLTP'-----------------

-----------------BEGIN: Script to be run at Subscriber 'DB002\OLTP'-----------------
use [DB1]
exec sp_addpullsubscription @publisher = N'DB001\OLTP', @publication = N'DB1', @publisher_db = N'DB1', @independent_agent = N'True', @subscription_type = N'pull', @description = N'', @update_mode = N'read only', @immediate_sync = 0

exec sp_addpullsubscription_agent @publisher = N'DB001\OLTP', @publisher_db = N'DB1', @publication = N'DB1', @distributor = N'DB003\DIST', @distributor_security_mode = 1, @distributor_login = N'', @distributor_password = null, @enabled_for_syncmgr = N'False', @frequency_type = 64, @frequency_interval = 0, @frequency_relative_interval = 0, @frequency_recurrence_factor = 0, @frequency_subday = 0, @frequency_subday_interval = 0, @active_start_time_of_day = 0, @active_end_time_of_day = 235959, @active_start_date = 20170327, @active_end_date = 99991231, @alt_snapshot_folder = N'\\DB001\Replication', @working_directory = N'', @use_ftp = N'False', @job_login = null, @job_password = null, @publication_type = 0
GO
-----------------END: Script to be run at Subscriber 'DB002\OLTP'-----------------
于 2017-03-27T15:55:44.030 に答える