SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for 1月, 2018

SQL Server / SQL Database 用のモニタリングクエリ

leave a comment

まだ、作成途中ではありますが、SQL Server 2017 / SQL Database v12 向けのモニタリングクエリを https://github.com/MasayukiOzawa/MonitorDB で公開しています。

SQL Server 2017 on Windows については、データコレクションや、パフォーマンスモニターで各種情報を取得することができるのですが、現時点の SQL Server 2017 on Linux では、データコレクションが利用できず、パフォーマンスモニターに関しても Windows OS 側の機能なので利用することができません。
SQL Server のリソースの使用状況を確認する際に、パフォーマンスモニターの情報は有益であり、この情報を定期的に確認しないと、リソースの使用状況の把握が難しかったりもします。
sys.dm_os_performance_counters を使用することで、SQL Server のパフォーマンスモニターの情報を取得することが可能ですので、この情報を定期的にテーブルに取得することで、パフォーマンスモニターの代替としています。
SQL Server の場合は、次の手順で設定をしてください。

SQL Server on Linux は Express でなければ、SQL Server Agent を使用することができるので、01.Regular execution.sql の内容を定期的に実行してもらえれば取得できるかと。
(Express の場合は、cron + sqlcmd で代替可能です)
SQL Database の場合は、02.Create Table.sql  を診断対象の DB に対して実行して、Azure Function のスケジュール実行等で、定期的に 01.Regular execution.sql を実行してください。
データを蓄積したままでは容量がかなり消費されますので、定期的に 02.Data Retention.sql を実行して削除もお忘れなく。
本来は、診断対象と同一 DB ではなく、別の DB に取得が推奨ですので、01 のクエリで取得したデータを BULK INSERT で診断用情報格納 DB で保持するのがいいので、スクリプトを作ったのですが、まだ公開できるように整備できていないので、現状は各自で実装していただければ。
RDB ではなく、時系列 DB に入れてしまってもよいかと。
領域の使用状況については、03.Data Usage Check.sql で確認することができますので、どれぐらい領域を使用しているかはこのクエリで確認していただければ。
数10秒間隔で取得すると、数時間でもそれなりなデータ量となりますので、取得間隔は適宜調整してください。
03.Search で、各種情報検索することが可能です。
ある程度のパターンを用意してありますので、必要に応じて類似のクエリで拡張していただければと。
投稿を書いている時点では、SQL Server / SQL Database 共通で使用することができるようにしています。
SQL Database は、リソースの使用状況を DTU で見ることが一般的かと思いますが、sys.dm_os_performance_counters を使用することでも、各種情報を取得することが可能ですので、今後の情報取得の一助となれば幸いです。

Written by Masayuki.Ozawa

1月 31st, 2018 at 10:23 pm

SQL Server のフィードバックサイトが変更になっていました

leave a comment

今まで、SQL Server のフィードバックサイトは connect を使用していました。
昨日までつながっていたので、気づいていなかったのですが、connect が廃止され新しいものに置き換わっています。

Microsoft Connect Has Been Retired

SQL Server (Connect Site ID 68)

Effective January 1, 2018, the community feedback feature of the Microsoft Connect site for SQL Server has been replicated in UserVoice for the convenience of the community. We have captured all current/active public feedback for SQL Server that was entered into Microsoft Connect and transferred it into the new forum to help customers find relevant and active matching suggestions.

SQL Server の新しいフィードバックサイトは feedback.azure.com の方に移行されていますので、今後はこちらを使うことになるようですね。
image

Written by Masayuki.Ozawa

1月 31st, 2018 at 10:05 pm

Posted in SQL Server

Tagged with

クエリストアを利用した待ち事象の取得

leave a comment

SQL Server 2017 と SQL Database で利用可能な方法ですが、これらのバージョンでは、クエリストアの情報として、待ち事象の情報が追加されています。
待機クエリの検索
クエリストア自体が強力な機能なのですが、最新のバージョンでは、この情報に sys.query_store_wait_stats システムビューが追加されています。
Read the rest of this entry »

Written by Masayuki.Ozawa

1月 30th, 2018 at 10:57 pm

Posted in SQL Server

Tagged with ,

SQL Server on Linux の syslog をフィルターして OMS に連携する

leave a comment

OMS では標準機能として、syslog の連携機能を持っています
Log Analytics の Syslog データ ソース
上記のドキュメントに、次のように記載されているとおり、ファシリティ (Facility)と重要度 (Sevirity) で取得対象をフィルタすることができるようになっています。

OMS Agent for Linux は、構成で指定されているファシリティと重大度を持つイベントだけを収集します。 OMS ポータルを通じて、または Linux エージェントで構成ファイルを管理することによって、Syslog を構成できます。

image
Windows の場合、SQL Server 系のログがイベントログに出力されます。
Linux の場合は、syslog に出力されますので、syslog 経由でエラーの発生状況を監視することになるかと。
Read the rest of this entry »

Written by Masayuki.Ozawa

1月 21st, 2018 at 3:43 pm

Posted in SQL Server

Tagged with , ,

OMS + collectd を使用した SQL Server のパフォーマンス情報の収集

leave a comment

Windows 版の SQL Server であれば、SQL Server の各種情報をパフォーマンスモニター経由で取得 / ロギングすることができますが、Linux ではパフォーマンスモニターは使用することができないため、ほかの方法で SQL Server のパフォーマンス情報の取得を検討する必要があります。
方法の一つとして、collectd を使用して取得することができるかと。
今回は、collectd で取得した情報を OMS 連携して、パフォーマンス情報の取得を実施してみます。
詳細については、Log Analytics で Linux エージェント上の CollectD からデータを収集する を参照して下さい。
本投稿は、Ubuntu の環境で試したものとなっています。
また、collectd の SQL Server の設定については、mssql-monitoring の設定を使用しています。
Read the rest of this entry »

Written by Masayuki.Ozawa

1月 20th, 2018 at 11:55 pm

Posted in SQL Server

Tagged with , ,

SQL Server on Linux の syslog を OMS に連携してみる

leave a comment

SQL Server on Linux の ERRORLOG に出力されるようなメッセージについては syslog にも出力されるようになっています。

Azure の OMS では、syslog を連携することもできるため、Linux に OMS エージェントをインストールすることで、syslog を連携することができます。
Log Analytics の Syslog データ ソース
実際に連携した際の画面が次の画像になります。
image
現状、facility が daemon、severity が info の情報として出力されるため、次のような設定を OMS で実施することで受け取ることができるようになるかと。
image

Written by Masayuki.Ozawa

1月 13th, 2018 at 12:11 pm

Posted in SQL Server

Tagged with ,

Linux 版の bcp と sqlcmd の日本語対応状況のメモ

leave a comment

SQL Server on Linux 向けのコマンドラインとして、Windows 版の SQL Server でも実装されている「bcp」「sqlcmd」は、Linux 向けもリリースされていますが、日本語の扱いが Windows 版と少し異なる点がありますので簡単にではありますがまとめてみました。
各コマンドの Linux 版の詳細については、次のドキュメントから確認することができます。

私が検証した限りでは、次の操作は気を付けておく必要があるかと。

  • 日本語名のテーブルの bcp を使用したエクスポート
  • bcp のデフォルトの改行コードが LF となる

bcp のドキュメントに次のように記載されているので、CP932 の扱いは都度確認したほうがよいかなと。

このリリースでは、Latin-1 および UTF-16 文字がサポートされています。

Linux の SQL Server に対して、Windows 環境から bcp / sqlcmd を実行した場合は従来通りの動作となるかと。
Read the rest of this entry »

Written by Masayuki.Ozawa

1月 8th, 2018 at 9:21 pm

Posted in SQL Server

Tagged with ,

SQL Server on Linux の可用性グループで手動フェールオーバーを実施した際に必ず意識しておきたいこと

leave a comment

リリース当初からドキュメントがかなり更新されており、ビジネス継続性とデータベース復旧 – SQL Server on Linux からの一連のドキュメントを確認しておけばよいはずではありますが、個人的に引っかかったところを。
可用性グループでしか試していませんが、FCI (Failover Cluster Instance) の構成を手動フェールオーバーした場合も同様かと思います。
詳細については SQL Server on Linux の HA 可用性グループを操作します。SQL Server on Linux の HA 可用性グループを操作します。 を確認してください。
このドキュメント、CTP のリリース時点から大幅に情報が加筆されていますので、プレビューリリース当初に目を通しただけの方は、再度情報を確認した方がよいかと思います。
Read the rest of this entry »

Written by Masayuki.Ozawa

1月 8th, 2018 at 7:32 pm

SQL Server 2017 CU3 で CXPACKET の待ち事象が CXPACKET と CXCONSUMER に分けられて取得できるようになります

leave a comment

SQL Server で、並列クエリの待ち事象を確認する際には「CXPACKET」「EXECSYNC」「EXCHANGE」を確認するのが一般的でしたが、SQL Server 2017 CU3 では、上記に加えて「CXCONSUMER」という待ち事象が増えています。
これにより、いままで CXPACKET として集計されていた一部の挙動が CXCONSUMER の方に集計されるようになります。
この動作自体は、PASS Summit 2017 で発表が行われ、Making parallelism waits actionable で解説されていたのですが、CU3 がリリースされたことで実際に検証が可能となりました。
今回の機能追加に伴い、sys.dm_os_wait_stats (Transact-SQL) のドキュメントも更新されています。

CXCONSUMER
行を送信する、producer スレッド consumer スレッドが待機したときに、並列クエリ プランで発生します。 これは、並列クエリの実行の通常の一部です。
適用されます: SQL Server 2017 CU3 と SQL データベース

CXPACKET
クエリ プロセッサ交換反復子を同期するときに、および生成および行を使用する場合は、並列クエリ プランで発生します。 待機時間が長すぎて、クエリのチューニング (インデックスの追加など) を実行しても短くできない場合は、並列処理のコストしきい値を調整したり並列処理の次数を下げたりすることを検討してください。
注:でSQL Server 2017CU3 および SQL データベース、クエリ プロセッサ交換反復子を同期するように、コンシューマーのスレッドの行を作成できるようにのみ CXPACKET を参照します。 コンシューマーのスレッドは、CXCONSUMER 待機の種類で個別に追跡されます。

 
検証する際は、次のドキュメントと合わせて確認すると理解しやすいかと。

手元の SCVMM 用の DB で並列クエリが実行されているものがあったので、これを使いながら軽く検証を。
Read the rest of this entry »

Written by Masayuki.Ozawa

1月 6th, 2018 at 3:45 pm

Posted in SQL Server

Tagged with ,

ADV180002 (CVE-2017-5753 / CVE-2017-5715 / CVE-2017-5754) についてのメモ

one comment

Meltdown と Spectre について (Reading privileged memory with a side-channel) のメモを、SQL Server を絡めながら。
Microsoft からの情報については、次の情報を起点とするとよいかと思います。
ADV180002 | Guidance to mitigate speculative execution side-channel vulnerabilities
SQL Server 観点でいうと、この中では「Microsoft SQL Server customers」で記載されている、SQL Server Guidance to protect against speculative execution side-channel vulnerabilities にまとめられています。
Read the rest of this entry »

Written by Masayuki.Ozawa

1月 6th, 2018 at 10:24 am

Posted in 未分類