今回は名前付きインスタンスでDACによる接続をやってみる。
対象DB: SQL Server 2017 (x64) ver:14.0.2002.14 Express Edition
DB Instance:SQLEXPRESS
SSMS:v17.9.1
まずは前回同様にローカル接続で「admin:」を付けて接続しようとするも接続エラーとなり?。
エラー内容からポートがおかしいのかと色々調べるも分からず…
DACについての下記公式説明を読んでいて、
Microsoft Document: データベース管理者用の診断接続
リソースに限りがあるので、 SQL Server Express はトレース フラグ 7806 を使用して開始されない限り、DACポートでリッスンしません。という一文を見つけ。これか!と理解。
原因の当りが付いたのは良いが、「トレースフラグ」って何?
トレースフラグって?
トレースフラグについては下記リンクを参照Microsoft Document: DBCC TRACEON - トレース フラグ (Transact-SQL)
トレース フラグは、サーバー固有の特性を設定したり、特定の動作を切り替えるときに使用します。 たとえば、 SQL Server インスタンスの起動時にトレース フラグ 3205 が設定されている場合、テープ ドライバーのハードウェア圧縮が無効になります。 トレース フラグは、パフォーマンスの問題を診断したり、ストアド プロシージャや複雑なシステムをデバッグするときによく使用されます。素人的には構成オプションとトレースフラグの位置づけがよく分かりません。どっちもSQL Serverの動作パラメータを設定している気がします。
トレースフラグの方がDBの動作に関わるのかな?
トレースフラグ 7806 の有効化
取りあえずトレースフラグ 7806を有効化する必要があることは理解。SSMSでトレースフラグ 7806を有効にするために以下のクエリを実行。
DBCC TRACEON(7806, -1)
で、エラーメッセージ出ると。トレース フラグ 7806 を無視しています。このフラグは、無効なトレース フラグまたはサーバーの起動時にのみ指定できるトレース フラグです。どうやらトレースフラグはDBの起動パラメータとしてセットしないとダメな場合があるとのこと。
DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。
以下のリンクを参考にトレースフラグを起動パラメータにセットした。
SQL Serverのパフォーマンスに関わるトレースフラグ簡易まとめ
- 「起動時パラメータの指定」で「-T7806」を追加する
- サービスを再起動
これでトレースフラグ 7806 が設定されていることを確認。
接続
ローカル環境で接続を試みる。無事接続できて、クエリの実行も確認。
SSMSで接続する時の注意点は前回の記事と同じ。
リモートアクセスの場合は接続文字の[Server Name]を[Server IP]に変えれば良い(AD環境の場合はそのまま名前でも可)。
ポートについては、動的ポートを使用しSQL Server Browser を起動していれば気にしなくてよい。
(そもそも、名前付きインスタンスの場合はSQL Server Browser が起動していないとリモートアクセス出来ないけど…)
まとめ
- 既定のインスタンスのと名前付きインスタンスでDACによる接続を実践してみたが、基本的にやり方が変わらず、接続文字に「admin:」を付ければ接続できることが分った。
- Express Edition の場合はトレースフラグの設定が必要なので注意。
- SSMSでDACによる接続を行う場合は、適当な接続でSSMSを起動しておいてから接続先の変更等でDACに接続すること。
- DACでなければ調査出来ない状況になったことが無いので使い方は今後調べます。
参考
Microsoft Document: データベース管理者用の診断接続Microsoft Document: DBCC TRACEON - トレース フラグ (Transact-SQL)
SQL Serverのパフォーマンスに関わるトレースフラグ簡易まとめ
トレースフラグの設定状況を確認する方法
0 件のコメント:
コメントを投稿