読み取り専用アプリケーションインテントのSSMS登録済みサーバー


10

現在、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プロパティを使用して構成を保存するための代替ソリューションを知っている人はいますか?よろしくお願いします。

回答:


3

SQL Management Studio(2016より前のバージョン)

残念ながら、SQL Management Studioでアプリケーションインテントを使用すると、いくらか苦痛を伴ういくつかの警告があります。

ReadOnlyインテントで手動で接続するには、オブジェクトエクスプローラーから[ サーバーに接続 ]ダイアログを開いた後、ユーザーは次のことを覚えておく必要があります。

  1. [ オプション>>]をクリックします
  2. [ 追加の接続パラメータ ]タブに移動します。
  3. 追加パラメーターとしてApplicationIntent = ReadOnly;と入力します。
  4. (注:追加の接続パラメーターを入力した後、オプション<<ボタンをクリックしないでください。そうしないと、パラメーターが失われます。)
  5. [ 接続]をクリックします
  6. オブジェクトエクスプローラービューで目的のデータベースを右クリックし、[ 新しいクエリ]を選択して常にクエリウィンドウを起動し、以下の#3の警告に遭遇しないようにします。

適用される警告は次のとおりです。

  1. SQL Management Studioを読み取り専用インテントで接続することはできますが、登録済みサーバーに接続が追加されたときに、追加の接続パラメーターは保存されません。
  2. RegSrvr.xmlファイルでローカルに登録されたサーバーを手動で編集してアプリケーションインテントを追加するときの動作は非常に一貫性がなく、GUIを介して変更が加えられると上書きされ、この回避策は信頼できなくなります。
  3. クエリウィンドウを開く前に、Always Onデータベースを選択する必要があります。それ以外の場合、接続はプライマリサーバーにルーティングされます。常にオンではないデータベースに対してクエリウィンドウが既に開かれている後に、クエリウィンドウのドロップダウンを使用してデータベースを選択しようとすると、エラーダイアログが表示されます。クエリウィンドウが非常にオンのデータベースに対して既に開かれている後に、USEステートメントを使用してデータベースを常にオンのデータベースに変更しようとすると、SQLクエリを実行しようとすると、結果は次のようになります。
      Msg 979, Level 14, State 1, Line 1
      The target database ('AlwaysOnDatabase') is in an availability group 
      and currently does not allow read only connections. For more 
      information about application intent, see SQL Server Books Online.

SQL Management Studio(バージョン2016以降)

SQL Server Management Studio 2016以降は、読み取り専用アプリケーションインテント(以前のバージョンと同じ6つの手順を使用)で接続でき、追加の接続パラメーターを格納します。まだいくつかの警告があります:

  1. オブジェクトエクスプローラービューは、AlwaysOnデータベース内のテーブルやその他のオブジェクトを列挙しません。それらを展開しようとすると、アクセス拒否メッセージが表示されます。
  2. 同じリスナーへの読み取り専用接続と読み取り専用以外の接続を同時に開くことはできません。
  3. データベース内のオブジェクト名のIntellisenseが機能しません。(奇妙なことに、オブジェクトはクエリデザイナで問題なく列挙され、エディタのデザインクエリを使用して右クリックメニューから起動できます。)
  4. 以前のバージョンの警告の警告3が引き続き適用されます。

サードパーティ製品

LinqPadは、接続を保存すると、アプリケーションインテントとデータベースを含む接続文字列全体を保存するため、Always Onデータベースに対して読み取り専用クエリを実行するための実行可能なオプションになる場合があります。


0

あなたはパズルの重要な部分を見逃しているかもしれません、または少なくとも私はあなたの質問のどこにもそれを見ませんでした:

ApplicationIntent=readonly方程式の半分です。また、パラメータを渡す必要がありますMultiSubnetFailover=True

たとえば、[追加の接続パラメータ]タブで、次のように入力します。

MultiSubnetFailover=True;ApplicationIntent=readonly;

トニーに感謝しますが、これは私が抱えている問題ではありません。
DBAuser


0

構成ファイルを作成してから、SSMSで必要な登録済みサーバーを自動作成することはできますか?私のMSSQLTipsの記事で述べたように:

SQL Server Management Studio(SSMS)でのサーバーの登録と保守の自動化


こんにちはチャオ、返信ありがとうございます。その記事に興味のあるpowershellスクリプトを投稿しましたが、残念ながらApplicationIntentプロパティでは機能しません。次を使用するようにPSを変更しました。New-Item -Name $(encode-sqlname $ g.value)-path "sqlserver:\ SQLRegistration \ $($ choice)\ $($ g.parentfolder)" -ItemType $ g .type -Value( "Server = $ regsrv; Integrated security = true; Initial Catalog = dbname; ApplicationIntent = ReadOnly"); 運が悪い!これがうまくいくなら、私はこれをオプションとして使って幸せ以上のものを持っています。再度、感謝します。
DBAuser 2015

0

これは、登録済みサーバーで使用する場合のSQL 2016 SSMSで修正されました。ReadOnly Intent接続をローカルサーバーグループの一部として登録し、保存しておいた接続を将来の使用のために開くことができました。これで助けてくれてありがとう。


0

コメントはできませんが、DBAUserの回答に追加しています。

登録済みサーバー領域内で接続を設定するときに、GUIにアプリケーションインテントを追加するオプションが表示されませんでした。

オブジェクトエクスプローラー(を使用Data Source=<Listener>;Initial Catalog=<Database>;ApplicationIntent=ReadOnly)を使用して接続し、接続したらサーバーを登録する必要がありました。

またはInitial Catalog=<Database>;ApplicationIntent=ReadOnly、.regsrvrファイルの接続文字列に追加します。


登録済みサーバーのローカルサーバーグループの一部としてこれを表示するには、オブジェクトエクスプローラーにreadOnlyサーバーを登録する必要があります。オブジェクトエクスプローラーで、applicationintentを使用してサーバーへのreadOnly接続を作成したら、サーバーを右クリックして[登録]をクリックします。次に、登録済みのサーバー名を希望する名前に変更します。これは、登録済みサーバーのローカルサーバーの一部として保存されます。お役に立てれば!
DBAuser 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.