サーバークラッシュ後にレプリケーションを復元する方法


8

1つのSQL Server 2005インスタンスに2つのデータベースがあり、それらの間でトランザクションレプリケーションが行われていました(記事として3つのテーブル)。このサーバーは、パブリッシャーとディストリビューターの両方として機能しました。

次に、サーバーのRAIDに障害が発生しました。しかし.mdf、クラッシュする前に、ほぼすべてのファイルを切り離してコピーすることができました。

システムの復元後、SQL Serverを再インストールし、システムデータベース(master、model、msdb)を復元して、.mdfファイルを同じパスに配置しました。それで始まった。

レプリケーションで問題が発生しました。ローカルパブリケーションのフォルダは、空であったけれどもローカルサブスクリプション問題のサブスクリプションが含まれていたフォルダ。私が新しい出版物を追加しようとしたとき、私は得ました:

新しいパブリケーションウィザードで、パブリケーション名の取得中に1つ以上のエラーが発生しました。

Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。(Microsoft.SqlServer.ConnectionInfo)

無効なオブジェクト名 'dbo.syspublications'。(Microsoft SQL Server、エラー:208)

左側のサブスクリプション(最終的にはなんとか管理できました)を削除して、サーバーでの公開と配布を無効にすることを試みることにしました。

SQL Serverは 'someserver'での公開と配布を無効にできませんでした。

無効なオブジェクト名 'dbo.syssubscriptions'。EXECUTEの後のトランザクション数は、COMMITまたはROLLBACK TRANSACTIONステートメントが欠落していることを示しています。以前のカウント= 0、現在のカウント=1。EXECUTE後のトランザクションカウントは、COMMITまたはROLLBACK TRANSACTIONステートメントがないことを示しています。以前のカウント= 0、現在のカウント=1。EXECUTE後のトランザクションカウントは、COMMITまたはROLLBACK TRANSACTIONステートメントがないことを示しています。以前のカウント= 0、現在のカウント=1。EXECUTE後のトランザクションカウントは、COMMITまたはROLLBACK TRANSACTIONステートメントがないことを示しています。以前のカウント= 0、現在のカウント=1。EXECUTE後のトランザクションカウントは、COMMITまたはROLLBACK TRANSACTIONステートメントがないことを示しています。以前のカウント= 0、現在のカウント=1。データベースコンテキストを「マスター」に変更しました。(Microsoft SQL Server、エラー:208)

システムデータベースバックアップから一部の情報が復元されなかったようです(おそらくdistributionデータベースに何かが欠落している可能性があります)。

また、公開と配布を無効できないという質問に答えるようにしました。しかし、成功しませんでした。私が作成しようとしたsyspublicationsの両方をmasterしてdistribution、何も変わっていません。

では、このサーバーでレプリケーションを機能させるにはどうすればよいですか?

サーバー上で他のデータベースを公開しようとしましたが、うまくいきました。したがって、問題は公開されたデータベースに関連しているようです。どうすればそれをクリアして、その上に新しいパブリケーションを作成できますか?

System Tables 問題のあるデータベースのサブフォルダは、データベースがパブリッシュされたときに作成されるレプリケーションテーブルを見逃します。

レプリケーションモニターでは、これらの古いサブスクリプションを確認できますが、レプリケーションフォルダーでは使用できません 。

回答:


4

最後に、サーバーが望んだことを単純に実行しました。つまり、スクリプトテーブルを使用して、問題のあるデータベース(パブリッシャーであったデータベース)にすべての「パブリケーション」テーブル(* dbo.MSpeer _ **および* dbo.sys **)を作成しました。など - > するには、CREATEダイアログ。このサーバーのおかげで、公開と配布を無効にすることができました。その後、レプリケーションを再構成するだけで済みました。

次回はクラッシュします(実際にはクラッシュしないことを願っています)。レプリケーションに関係するテーブルを完全にバックアップするのに十分なことでしょう。


最初にコメントに残されたZaneによる追加情報:

テーブルdbo.MSpeer_ *およびdbo.sys *は、SQL Serverがインストールされている別のサーバーでディストリビューター/パブリッシャーを構成することによっても作成できます。これにより、公開用に設定したデータベースにこれらのテーブルが作成されます。->テーブル-> SSMSのシステムテーブルを参照してください。

次に、これらすべてのテーブルのスキーマを生成し、問題のあるデータベースにこれらのテーブルを作成します。これにより、配布と公開を無効にして、ディストリビューターを再構成できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.