SQL Management Studio(2016より前のバージョン)
残念ながら、SQL Management Studioでアプリケーションインテントを使用すると、いくらか苦痛を伴ういくつかの警告があります。
ReadOnlyインテントで手動で接続するには、オブジェクトエクスプローラーから[ サーバーに接続 ]ダイアログを開いた後、ユーザーは次のことを覚えておく必要があります。
- [ オプション>>]をクリックします。
- [ 追加の接続パラメータ ]タブに移動します。
- 追加パラメーターとしてApplicationIntent = ReadOnly;と入力します。
- (注:追加の接続パラメーターを入力した後、オプション<<ボタンをクリックしないでください。そうしないと、パラメーターが失われます。)
- [ 接続]をクリックします。
- オブジェクトエクスプローラービューで目的のデータベースを右クリックし、[ 新しいクエリ]を選択して常にクエリウィンドウを起動し、以下の#3の警告に遭遇しないようにします。
適用される警告は次のとおりです。
- SQL Management Studioを読み取り専用インテントで接続することはできますが、登録済みサーバーに接続が追加されたときに、追加の接続パラメーターは保存されません。
- RegSrvr.xmlファイルでローカルに登録されたサーバーを手動で編集してアプリケーションインテントを追加するときの動作は非常に一貫性がなく、GUIを介して変更が加えられると上書きされ、この回避策は信頼できなくなります。
- クエリウィンドウを開く前に、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つの手順を使用)で接続でき、追加の接続パラメーターを格納します。まだいくつかの警告があります:
- オブジェクトエクスプローラービューは、AlwaysOnデータベース内のテーブルやその他のオブジェクトを列挙しません。それらを展開しようとすると、アクセス拒否メッセージが表示されます。
- 同じリスナーへの読み取り専用接続と読み取り専用以外の接続を同時に開くことはできません。
- データベース内のオブジェクト名のIntellisenseが機能しません。(奇妙なことに、オブジェクトはクエリデザイナで問題なく列挙され、エディタのデザインクエリを使用して右クリックメニューから起動できます。)
- 以前のバージョンの警告の警告3が引き続き適用されます。
サードパーティ製品
LinqPadは、接続を保存すると、アプリケーションインテントとデータベースを含む接続文字列全体を保存するため、Always Onデータベースに対して読み取り専用クエリを実行するための実行可能なオプションになる場合があります。