2017-08-09 13 views
0

多くのことを試み、多くの文書を分析しましたが、解決策がまだ見つかりませんでした。データベースは、Alwaysonグループのセカンダリレプリカで読み取り専用エラーです

(DC、SQLServer01、SQLServer02)というVmWareに3台の仮想マシンがあります。すべてのSQL Serverはドメインのメンバです。(DC)SQLServer01とSQLServer02のフェールオーバークラスタをインストールしました。私はSQLServer01に必要な設定を行いました。次に、両方のサーバー用にSQL Server 2014をインストールしました。今、私はalwaysOnグループを作成しました。 SQLServer01はプライマリであり、その他はセカンダリです。私がSQLServer01の接続を切断すると、すべてが正常です(セカンダリがプライマリになります)。それ以外の条件でもかまいません。

しかし、すべてのサーバーがオンラインの場合、セカンダリレプリカでの読み取り操作以外の操作(挿入、更新、削除、変更など)はできません。私は常に "データベースは読み取り専用"のエラーを参照してください。 Alwaysonグループのプロパティでは、プライマリとセカンダリの両方のレプリカにすべての接続があり、セカンダリで読み取り可能な値は "YES"です。

すべてのサーバーがオンラインであってもCRUD操作を行いたいです。 (つまり、セカンダリレプリカのすべてを実行することを意味します)。

だから、何か提案や考えがありますか?

ありがとうございました。

+0

"変更可能な"レプリカを使用する場合は、レプリケーションを使用する必要があります。 – sepupic

答えて

0

は、SQL Serverのセカンダリレプリカへの書き込みができないため、エラーが発生します。プライマリレプリカのみが読み取りと書き込みのデータベースをホストでき、可用性グループには1つのプライマリレプリカしか存在できません。 Secondary replicas can host read-only databases only。両方のレプリカが使用可能な場合、2つのうちの1つだけがプライマリになり、したがって読み書きをサポートします。 1つのレプリカしか使用できない場合、そのレプリカは他のレプリカが存在しないためプライマリレプリカになり、そのレプリカに対する読み書き操作が可能になります。

代わりに設定する必要があるのは、複製です。

SQLサーバーでは、merge replicationを使用すると、競合を解決してすべてのレプリカの変更をプッシュする定期的な同期を使用して、複数のノードで書き込むことができます。

ピアツーピアレプリケーションは別のソリューションです。アプリケーション層は競合(複数のノードで同じ行の更新)を許可してはいけませんが、はるかに高速です。

関連する問題