可視化の方法は様々なものが使用できますが、Azure Data Studio (ADS) にはグラフを作成するための機能がありますので、この機能を利用して SQL Server の統計情報のヒストグラムを可視化する方法を紹介したいと思います。
Archive for the ‘SQL Database’ Category
Azure Data Studio で KQL の実行が可能になりました
The April 2020 release of Azure Data Studio is now available で Azure Data Studio 1.17.0 のリリースがアナウンスされました。
このリリースから Notebook で KQL Magic がサポートされ、KQL の実行が可能になったようです。
Managed Instance で SQL DB にリンクサーバーを設定
Managed Instance (マネージドインスタンス) では、SQL Server に対してリンクサーバーを設定することができるようになっています。
これについては、Lesson Learned #63: It is possible to create Linked Server in Azure SQL Managed Instance? で解説がされていますが、どうやって設定するのかすっかり忘れていたのでメモとして残しておこうと思います。
SQL Database の基本的な診断情報の取得について -2020/3/20 版 –
SQL Database にはいくつかの診断情報の取得 / 可視化の方法がありますが、いろいろな方法があってよくわからなくなってきたのでまとめておこうかと。
同一のリソース名のマネージド ID が存在する場合の SQL DB のユーザー作成について – 暫定版 –
SQL Database の認証には、Azure のリソースのマネージド ID (MSI) を使用することができるようになっています。
-
チュートリアル:マネージド ID を使用した App Service からの Azure SQL Database 接続のセキュリティ保護
-
チュートリアル:Windows VM のシステム割り当てマネージド ID を使用して Azure SQL にアクセスする
マネージド ID をサポートしているサービスについては Azure リソースのマネージド ID をサポートするサービス に記載されていますが、これらのサービスが接続をする際にはマネージド ID による接続ができる可能性があります。
イベントハブに送信されている診断ログを SQL Database の DB で受信する
以前から、イベントハブに送信された Azure の診断ログを SQL Databae に取り込むということができていたかと思います。
昨年末ぐらいに、Azure SQL Database Stream Analytics 統合という機能がプレビューとして提供され、SQL Database のブレードからも Stream Analytics によるデータ取り込みの設定を行うことができるようになりました。
ブログのログをイベントハブに送信しながら、Stream Analytics から SQL Database のテーブルにデータ取り込みを実施してみたのでその時の覚書を。
今回はブログのフロントに配置している Front Door の診断ログ (アクセスログ) をイベントハブに送信し、それをテーブルに受け取るような設定を使っています。
(1 か月回していると、それなりの金額になりそうですので、今は BLOB に出力されている JSON を Data Factory 経由で取り込みを行うようにしています。)
SQL Server のスレッドおよびタスクのアーキテクチャ
スレッドおよびタスクのアーキテクチャ ガイド というドキュメントがあります。
このドキュメントでは SQL Server のスレッドやタスクについての解説が行われています。
この投稿では、DMV を使用しながらこのドキュメントに記載されている内容を見ていきたいと思います。
Read the rest of this entry »
SQL Server の統計情報の手動メンテナンスについて
最近、SQL Server の基本動作をいろいろと再勉強しているのですが、その中で統計情報のドキュメントを一通り読み直していました。
TPC-H の LINEITEM を使用して、いくつかのパターンで統計情報のメンテナンスを手動で実施しながら動作の確認を行った際のメモを。
Read the rest of this entry »
SQL Server へのクエリ実行の「コマンドタイムアウト」の情報取得について考えてみる
アプリケーションから SQL Server / SQL Database にコマンド (クエリ) を実行する際には、「コマンドタイムアウト」(クエリタイムアウト) について考慮をしておく必要があります。
ADO.NET の SQL Server 向けのドライバーではデフォルトでは 30 秒に設定されています。
コマンドタイムアウトの時間に達すると「Timeout expired.? The timeout period elapsed prior to completion of the operation or the server is not responding.」「実行タイムアウトの期限が切れました。操作完了前にタイムアウト期間が過ぎたか、サーバーが応答していません。」のエラーが発生し、クエリの実行がキャンセルされます。
アプリケーション側で Exception をキャッチして、その時に実行されていたクエリなどをロギングするようになっていれば、「どのようなクエリによりタイムアウトが発生したか?」を確認することができますが、そのようなロギングの仕組みがない or 情報が不足している場合に、サーバー側観点だけでどのような情報取得の対応ができるか、考えてみました。
Read the rest of this entry »
SQL Databaese の Ring Buffer の Time Stamp を日付に変換してみる
SQL Server / SQL Database では、「sys.dm_os_ring_buffers」という Ring Buffer の情報を確認することができます。
「Using sys.dm_os_ring_buffers To Diagnose Memory Issues in SQL Server」 等で解説をされているのですが、SQL Server の様々な情報をメモリ上に確保している DMV となります。
この DMV では timestamp という値を持っているのですが、この値を加工するためには、sys.dm_os_sys_info の ms_ticks を元にして、コンピューターを起動してからの経過時間を使用していつのイベントなのかを確認するのが一般的です。
しかし、sys.dm_os_sys_info については、SQL Database では使用することができず、この DMV では、コンピューターを起動してからの経過時間を取得することができません。
SQL Database で timestamp を実際の時間に直す方法が何かないか考えてみたのですが、sys.dm_os_memory_cache_clock_hands の round_start_time の最大値で代替できそうでした。
Read the rest of this entry »