タグ付けされた質問 「availability-groups」

可用性グループはSQL Server 2012の新機能であり、1つまたは複数のSQL Serverデータベースに継続的なデータ同期、自動フェイルオーバー、セカンダリ読み取りアクセスを提供します。

1
誰が私のワーカースレッドを使用していますか?SQL Server 2014-HADR
最近、SQL Server 2014 HADR環境で問題が発生し、サーバーの1つでワーカースレッドが不足しました。 メッセージを受け取りました: AlwaysOn可用性グループのスレッドプールは、利用可能なワーカースレッドが十分にないため、新しいワーカースレッドを開始できませんでした。 問題を分析するのに役立つ(と思った)ステートメントを取得するために、別の質問を既に開いています(どのSPIDがどのスケジューラー(ワーカースレッド)を使用しているかを確認できますか?)。システムを使用しているスレッドを見つけるためのクエリを取得しましたが、サーバーがワーカースレッドを使い果たした理由がわかりません。 私たちの環境は次のとおりです。 4 Windows Server 2012 R2 SQL Server 2014エンタープライズ 24プロセッサ-> 832ワーカースレッド 256 GB RAM 12個の可用性グループ(全体) 642データベース(全体) したがって、問題が発生したサーバーには次の構成がありました。 5つの可用性グループ(3つのプライマリ/ 2つのセカンダリ) 325データベース(127プライマリ/ 198セカンダリ) MAXDOP = 8 Cost Threshold for Parallelism = 50 電源プランは「高パフォーマンス」に設定されています この問題を「解決」するために、1つの可用性グループをセカンダリサーバーに手動でフェールオーバーしました。そのサーバーの構成は次のとおりです。 5つの可用性グループ(2つのプライマリ/ 3つのセカンダリ) 325データベース(77プライマリ/ 248セカンダリ) 私はこのステートメントで利用可能なスレッドを監視しています: declare @max int select @max = …

1
アップグレード後、SQL Server AlwaysOnデータベースが同期しないモードまたはリカバリモードでスタックする。エラー:データベース '…'バージョン782を開けません
SQL Server 2014 SP1(12.0.4422.0)からSQL Server 2016 CTP 3.2(13.0.900.73)へのアップグレードをテストしているときに、推奨される更新プロセスに従い、フェールオーバー後にデータベースが古いプライマリで起動しないという問題に遭遇しました更新されたセカンダリに。私たちの設定はプライマリレプリカと単一のセカンダリレプリカであり、私が完了した手順は次のとおりです。 同期コミットセカンダリレプリカの自動フェイルオーバーを削除する セカンダリサーバーインスタンスを新しいバージョンにアップグレードする セカンダリレプリカに手動でフェイルオーバーする 新しいプライマリレプリカでデータベースがオンラインであることを確認する 以前のプライマリレプリカを新しいバージョンにアップグレードする セカンダリのアップグレードとそれをプライマリにするフェイルオーバーは、期待どおりに機能しました。しかし、以前のプライマリレプリカをアップグレードした後、その上のデータベースがSSMSで「同期していない/回復中」としてリストされていることに気付きました。また、それらにアクセスしようとすると、エラーメッセージが生成されます。 データベース...にアクセスできません。(ObjectExplorer) 私が見たSQL Serverログを介してチェック データベース '...'バージョン782を開けません。データベースを最新バージョンにアップグレードしてください。 master..sysdatabasesテーブルをクエリすると、テーブルが確かに古いバージョンであり、アップグレード中に更新されていないことがわかりました。 残念ながら、ログには更新されなかった理由が示されておらず、可用性グループダッシュボードには、一部の可用性データベースのデータ同期状態が正常ではなく、理由がないことを示す一般的な警告しかありませんでした。 TSQLを使用してデータベースをデタッチするか、オフラインに設定して更新を「キック」しましたが、それらはSQL AGの一部であるため、これらのコマンドは機能しません。 SQL AGの一部であるデータベースを最新バージョンにアップグレードするにはどうすればよいですか?

6
読み取り専用アプリケーションインテントのSSMS登録済みサーバー
現在、AlwaysOnを使用したSQL Server 2014 POCテストに取り組んでおり、ユーザーの1人が、ローカルサーバーグループに登録されているサーバーを使用して、ReadOnly Intent でSSMSの構成を保存することについて質問しました。これにより、ReadOnlyレプリカにアクセスする必要があるたびにエイリアス名を入力する必要がなくなります。 残念ながら、登録されたサーバー内には、通常のオブジェクトエクスプローラーとは異なり、ApplicationIntentオプションを追加するオプションはありません。 RegSrvr.xmlの接続文字列を変更することについて、マイクロソフトからこの記事を見つけました。 https://connect.microsoft.com/SQLServer/feedback/details/786323/ssms-sql-server-management-studio-2012-missing-connection-properties-for-availability-groups 私は彼らの提案を試してみましたが、登録済みサーバーのローカルサーバー経由で接続すると、正しいレプリカノードに接続しませんでした。 読み取り専用の接続ウィンドウのオプション>接続パラメータを使用した場合のオプションは、オブジェクトエクスプローラから罰金を動作します。ただし、接続に加えられた変更は保存されません。 SSMS でReadOnly Intentプロパティを使用して構成を保存するための代替ソリューションを知っている人はいますか?よろしくお願いします。

2
AlwaysOn可用性グループの自動フェールオーバーが機能しない
AGセットアップで遊ぶ私はWSFCを起動し、DevClusterOnlineと呼ばれる1つの可用性グループの2つのノードで構成しています。両方のノード(DEV-AWEB5プライマリ、DEV-AWEB6セカンダリ)はWindows Server 2008 R2を実行しています。 AGの状態をチェックすると、次のようになります。 以下のクエリを実行すると、この結果セットが返されます。 select ar.replica_server_name, availability_group_name = ag.name, ar.availability_mode_desc, ar.failover_mode_desc from sys.availability_replicas ar inner join sys.availability_groups ag on ar.group_id = ag.group_id order by availability_group_name, replica_server_name; DEV-AWEB5を切断すると、グループリスナー(DevListener)に接続できませんが、pingを実行すると、pingに応答します。レプリカ-DEV-AWEB6はRESOLVING状態になり、私のDBにアクセスできません。ただし、手動でManagement Studioに移動し、フェールオーバーをDEV-AWEB6に設定すると、再び起動して実行され、DevListenerがもう一度接続を受け入れます。 これらの事実がフェイルオーバーが実際に機能していることを確認していること、コミットを同期して自動フェイルオーバーを構成していることを考えると、セットアップで誤動作した場合はどうなるかわかりません。 DEV-AWEB5を切断すると、レプリカが接続を保持し、DevListenerも保持されることを期待しています。自動フェイルオーバーにより、AGリスナーに透過的に接続できると思います。エンドユーザーの観点から見ると、Webシステムを使用している場合、DBサーバーの1つがダウンしたことは気付かないはずです。 私はここで立ち往生しています、誰かが私が間違っていることを教えてくれますか?

1
HADRワーカースレッドの使用率が高い
HADRプール内の可用性グループのワーカースレッド数が、「通常、レプリカあたり3〜10個の共有スレッドがある」という最小使用量を大幅に超えるのはなぜですか? 1つのケースでは、3つの可用性グループと合計10のデータベースで300以上のスレッドの使用を観察しました。SQL Server 2014 SP1。 私たちのリードは、セカンダリレプリカのバックアップ、プライマリレプリカの高アクティビティ、セカンダリレプリカのレポートです。 AGはVMwareのデータセンターにあります。合計16のスケジューラー、通常のワーカースレッドは200未満の範囲です。サーバーのmax_dopは2です。 3 AG、10 DB、各4レプリカ-プライマリ、2読み取り専用、1読み取り不可。 セカンダリ1つは同期、2つは非同期 大規模なマルチホストクラスター上の物理32コア上の16 vcore。 過剰プロビジョニングはありません。 他の小さいVM 4-8コアは同じ場所に配置されますが、CPUを圧迫しません ワーカースレッドのスパイクが原因でサービス拒否が発生したことが確認されました。AGへのワーカースレッドの帰属は、それらのワーカースレッドのみが制限を超えることができるため、私たちの仮定です。 以下のSQL Server Premier Field Engineerブログからのリンクは、コンテキストで読んでも完全な答えにはなりません。 SQL Server 2012 AlwaysOn可用性グループのワーカースレッド消費の監視 実際のワーカースレッドは、sp_configureの「最大ワーカースレッド」値を超えていますか?

1
トランザクションログを切り捨てることができません、log_reuse_wait_desc-AVAILABILITY_REPLICA
今朝、私はデータベースの1つでトランザクションログが一杯になったという警告に目覚めました。このサーバーは、常時接続のクラスターであり、トランザクションレプリケーションサブスクライバーでもあります。log_reuse_wait_descを確認したところ、logbackupが表示されました。4日前に誰かが誤ってlogbackupジョブを無効にしていたため、ログバックアップジョブを再度有効にしたところ、ログがクリアされました。午前4時だったので、その朝遅くにオフィスに行って、ログが400GBに達したときにログを鳴らそうと思いました。 午前10時-オフィスにいて、縮小する前にログの使用状況を確認したところ、約16%でした。私は驚いて、複製を示したlog_reuse_wait_descを確認しました。これがレプリケーションサブスクライバーだったため、混乱しました。次に、dbがCDCに対して有効になっていることがわかり、それが原因である可能性があるため、CDCを無効にすると、log_reuse_wait_descにAVAILABILITY_REPLICAが表示されます。 一方、ログの使用量は着実に増加しており、現在は17%です。alwaysonダッシュボードを確認し、送信済みキューとやり直しキューを確認しましたが、どちらもほぼゼロです。ログの再利用がAVAILABILITY_REPLICAと表示され、ログをクリアできない理由がわかりません。 なぜこれが起こっているのでしょうか?

3
Always Onクラスターがクォーラムを失った場合はどうしますか?
私は会社のDR手順を確認していて、Always On Clusterのクォーラムを失う解決策をオンラインで探したときと比較しました。失われたクォーラムの件名に軽く触れるだけの件名クラスタリングvs.トランザクションレプリケーションvs.可用性グループに関する最初のSEの投稿を見つける前に、Googleの結果を3ページ読みました。 クォーラムを失うことは悪いことであり、可能性を減らすためのいくつかの提案がありますが、それでも起こりえます。Always Onクラスターのクォーラムの損失から回復するための最良の方法に対する、ピアレビューされた適切な回答を探しています。

2
可用性グループリスナー
AlwaysOn可用性グループを調べています。よく見ると、可用性リスナーグループが単一障害点であるように見えます。リスナーは実際にはどこで実行されますか?別のサーバー、プライマリSQLサーバー、それらすべて? 2番目のデータセンターにアプリケーションスタック全体があるとします。リスナーが両方のサイトで実行され、アプリケーションが独自のローカルコピーをポイントするようにリスナーを構成するにはどうすればよいですか? 私はここで何かが欠けていると確信していますが、私は何がわかりません。

3
Always On可用性グループ、常にユーザーを読み取り専用インスタンスにリダイレクトする
プライマリと読み取りが有効なセカンダリを持つAlways On可用性グループがあります。データベースを使用して、データベースに入れる予定のデータの正確性をチェックする実装チームのユーザーがいます。 ユーザーはデータベースから読み取る権限のみを持っていますが、AGリスナーを介して(SSMSを介して)接続する場合、常にアクティブノードに接続します。 私は彼らに直接読み取り専用インスタンスにアクセスするように試みましたが、彼らは彼らの方法で立ち往生しており、1日か2日後に彼らは再びアクティブノードに戻ってきました。 SQL Serverがこのユーザーを常に読み取り専用のインテントにして、そこにリダイレクトする方法を教えてください。 注:追加の接続パラメーターで 'ApplicationIntent = ReadOnly'を設定しようとしましたが、これはセカンダリノードにリダイレクトされないようであり、新しいスターター用に設定することを忘れるので、理想的なソリューションではありません。 SQL Server 2012 Enterprise、可用性グループ1プライマリ、同期コミット付きの読み取り可能なセカンダリ1。 ユーザーがリンクサーバーに接続したり、他のサーバーを介して接続したりするつもりはありません。ユーザーはSSMS(他のアプリケーションはありません)を介してデータベースに直接接続します。AGリスナー(またはその周辺)が利用可能であれば、そのユーザーをセカンダリノードに誘導できるようにします(読み取りアクセスしかできないため)。プライマリにアクセスしても意味がありません)ユーザーはマシンを移動し、アプリケーションインテントを追加するのを忘れるので、ユーザーは何もする必要がありません。また、それを追加の接続パラメーターに追加しても、常にセカンダリノードに移動するとは限りません。

1
可用性グループはシームレスなフェイルオーバー(クエリの失敗なし)を提供できますか?
SQL Server 2012で可用性グループ機能をテストしており、プライマリサーバーがセカンダリサーバーにフェールオーバーするときに、約15秒のダウンタイムがあることがわかりました。この間に実行されたすべてのSQLクエリは、フェイルオーバーの移行が完了するまで失敗します。 これを0秒にして、フェールオーバーの移行中にクエリが失敗しないようにする方法はありますか? 言い換えると、失敗中に実行中のクエリを失敗せずにプライマリサーバーにリダイレクトする方法はありますか。フェイルオーバーの移行中に接続しますか? 現在、可用性グループに2台のサーバーをセットアップしています。

1
使用されているデータベースミラーリングプロトコルのTCPポート。1つのデフォルト、1つのダイナミック?
SQL Server Always On可用性グループ™のプライマリ/セカンダリレプリカで以下のクエリを実行する場合 SELECT DISTINCT local_tcp_port,protocol_type,num_reads,num_writes FROM sys.dm_exec_connections WHERE local_net_address is not null; 2つのローカルTCPポートは、データベースミラーリングプロトコルに現れ、5022&63420 Server Name local_tcp_port protocol_type num_reads num_writes ServerName 5022 Database Mirroring 102942598 5 ServerName 63420 Database Mirroring 5 89655349 5022これはミラーリングエンドポイントとして構成された一つであるとポートが、期待されています。 もう1つは動的ポートのようですが、なぜこのポートを使用するのですか。 1つは多数の読み取り(5022)を示し、もう1つは多数の書き込み(63420)を示しているという事実と関係があるのでしょうか。 ビルドバージョン:13.0.5264.1

3
プライマリで一時的に時間がかかる読み取り専用レプリカでの長時間実行クエリ
私は次のように4ノードAGセットアップを持っています。 すべてのノードのVMハードウェア構成: Microsoft SQL Server 2017 Enterprise Edition(RTM-CU14)(KB4484710) 16個のvCPU 356 GB RAM(これまでの話...) 最大並列度:1(アプリベンダーの要求に応じて) 並列処理のコストしきい値:50 最大サーバーメモリ(MB):338944(331 GB) AG構成: ノード1:プライマリまたは同期コミット読み取り不可セカンダリ、自動フェイルオーバー用に構成 ノード2:プライマリまたは同期コミット、読み取り不可のセカンダリ、自動フェイルオーバー用に構成 ノード3:読み取り可能なセカンダリセット、非同期コミット、手動フェイルオーバー用に構成 ノード4:非同期のコミットを備えた読み取り可能なセカンダリセット、手動フェイルオーバー用に構成 問題のクエリ: このクエリについては、まったくおかしなことは何もありません。アプリケーション内のさまざまなキューにある未解決の作業項目の概要を提供します。以下の実行プランのリンクの1つからコードを確認できます。 プライマリノードでの実行動作: プライマリノードで実行した場合、実行時間は通常約1秒です。以下は実行計画です。以下は、プライマリノードからのSTATISTICS IOおよびSTATISTICS TIMEからキャプチャされた統計です。 (347 rows affected) Table 'Worktable'. Scan count 647, logical reads 2491, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical …

4
「AlwaysOn」は常に「Always On」ではありませんか?
Windowsフェールオーバークラスターを作成し、SQL Serverの2つのインスタンスをSQL Serverフェールオーバークラスターのノードとして追加しました。 SQL構成マネージャーで「AlwaysOn可用性グループ」を使用するようにサーバーを設定します。 フェイルオーバーをテストするために、長いクエリをロードして実行し、次にFailover Cluster Managerを使用してアクティブノードを停止し、アクティブノードのクラスターサービスを停止しました。 クエリは接続なしで壊れ、ノードがドレインされて新しいノードが引き継ぐ前に、サーバーは約20秒間使用不可と表示されました。 私はこれを間違っていましたか?接続がほとんどまたはまったく失われないように、これをどのように構成する必要がありますか? AlwaysOnは常にオンではありませんか?

1
AlwaysONは2014年から2016年に移行します
2014年には約500 DBSの20人のListnerがいます 最小限のダウンタイムと労力でこれらを移行する最良の方法は何ですか 私の考えは次のとおりです。アクセスの停止バックアップdbs復元の開始dbs復元の実行中:2014にAOGをドロップ2016に作成完了 これは簡単に見えますが、TBデータの場合、これにはしばらく時間がかかります。 > -持っているが、この見つかった 2014年から2016年までのAlwaysOn AGをアップグレードするための推奨方法を しかし、それはnietherを説明しません 誰かが助けてくれることを願っています

1
AlwaysOn AGを2014年から2016年にアップグレードする推奨方法
Availability Groups1つの同期レプリカでSQL 2014から2016 にアップグレードする場合の推奨プロセスは何ですか? 私の理解では、in-placeアップグレードはデータベースの専門家の間ではあまり好まれていません。でin-placeアップグレードを回避する方法はありますAvailability Groupsか?2016サーバーを既存の2014可用性グループに参加させ、そこでフェイルオーバーしてから、他のインスタンスの1つを「強制終了」してアップグレードする可能性はありますか?(例えば、同じホストでSQLをサイドバイサイドで削除/再インストールすることにより) 他に考慮すべきアップグレードシナリオはありますか? 理想的なソリューションは、常に2つのonlineレプリカがあり、in-placeアップグレードを行う必要がないことです。

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