Build 2021 のタイミングに合わせて発表された内容を。
Archive for the ‘SQL Server’ tag
クエリストアの「CPU 時間 (ミリ秒)」の「合計」の算出方法について
SQL Server / SQL Database のクエリ情報を確認する際に活用できる クエリストア では、様々な情報を確認することができ、その項目の一つとして「CPU 時間 (ミリ秒) の合計」があります。
この項目は、SSMS から GUI でクエリストアの情報を確認するときに利用することができます。
本投稿では、SSMS からクエリストアの情報を確認する際に利用できる「合計」について触れたいと思います。
本投稿では、CPU 時間についてフォーカスしていますが、他の合計も基本的な考え方は同一です。
Database Migration Assistant (DMA) で使用されているルールの抽出
SQL Server から SQL Server ベースの環境に移行 (マイグレーション / バージョンアップ) を実施する場合のアセスメントとデータ移行を実施するためのツールとして、Database Migration Assistant (DMA) というツールが提供されています。
このツールを使用すると SQL Server のバージョンアップや Azure SQL Database への移行を行う際のアセスメント / マイグレーションを実施することができます。
DMA では、サポートされているソース バージョンとターゲット バージョン に記載されているソースとターゲットをサポートしており、これらの組み合わせの SQL Server ベースの環境をサポートしています。
SQL Database へのデータ移行時の方法については、本ブログでも Database Migration Assistant (DMA) で SQL Server から SQL Database へのデータ移行方法について で触れたこともありますね。
DMA のアセスメントで、移行のブロッカーとなる要素が検知されると、アセスメントの結果として次のように表示が行われます。
「どのような検索を行い、問題として検知しているか」については、抽出することはできないのですが、「どのようなルールが存在しているか」については、DMA のインストールディレクトリ内のファイルから、一部情報を確認することができます。
本投稿では、ファイルから SQL Database に移行する際のアセスメントで検知されるルールについて確認をしてみたいと思います。
使用しているスクリプトや出力結果については、こちら で公開していますので必要に応じて参考にしていただければと思います。
PowerShell で Microsoft.Data.SqlClient のイベントトレースを取得する
System.Data.SqlClient のイベントトレースについては BID (Built-In Diagnostics) トレースで実装されていたため、BID トレースの設定を有効化する必要があったかと思います。
BID トレースについては次のドキュメントで解説が行われています。
- HowTo: BID トレース – データアクセス アプリケーションのトレースを採取する
- Data Access Tracing in SQL Server 2008
- Data Access Tracing (Legacy)
最新の SQL Server のデータプロバイダーである、Microsoft.Data.SqlClient では、イベントトレースの取得方法が BID から、EventSoure からのイベントの取得に変わっているようです。
有効化の方法については、SqlClient でのイベントのトレースの有効化 で記載されていますが、C# であれば、ドキュメントに記載されている方法でトレースを取得することができます。
PowerShell (7.0.2) で Microsoft.Data.SqlClient 2.0 を使用する の Windows PowerShell についての記述を追加していて、PowerShell で Microsoft.Data.SqlClient を実行した場合にもトレースが取得できるのかが気になったので試してみました。
今回、コネクションプールの調査でイベントトレースを使用していたのですが、System.Data と Microsoft.Data のイベントトレースの出力の違いについては、次のソースを確認してみても良いのではないでしょうか。
SQL Server エンジニアが学ぶ OSS DB (MySQL / PostgreSQL) の情報取得
普段は SQL Server を使用しているのですが、OSS の DB についても学習をする必要が出てきました。
私の場合、SQL Server を使用する際には開発ではなく管理側となり「SQL Server の各種情報を取得し分析する」ことが多いです。
その中で「OSS DB では通常、SQL Server で確認しているこの情報はどのように取得するのか?」という調査をすることになるのですが、「取り掛かりとしてどこを見ればよいのか」の勘所がわからなくて四苦八苦しています。
そこで、基本的なメトリクスを取得するためにはどのような情報を取得すればよいのかを少し調べてみました。
さらに踏み込んで情報取得について検討を行う必要があるとは思いますが、私が情報を確認しようとした場合には、これらの情報を足掛かりすると対応ができそうな感じでした。
2021/4 の SQL Server / SQL Database 関連の更新情報
2021/4 の関連情報です。
5 月に Build 2021 がありますので、来月はボリュームが多いかもしれませんね。
SQL Server / SQL Database における同値で UPDATE をした場合の挙動について
SQL Server / SQL Database で UPDATE を実行する際に、現在の値と同じ値で更新 (SET 句に指定した変更内容が現在の値と同じ) をした場合の挙動について触れておきたいと思います。
Azure で SQL Server ベースの環境の活用方法を学ぶためのコンテンツ
Azure の各機能を学習する場合は、各機能 (サービス) のドキュメントを確認することで学習ができます。
- Azure のドキュメント : 各サービス / 機能
最近ですと Microsoft Learn を活用して機能を学習することもできますね。
Microsoft Learn 上では、SQL Server についてのコンテンツ も公開されています。
しかし、機能を活用するためのソリューションとして学習を行う場合には、各機能のドキュメント / Microsoft Learn の情報では足りなくなることもあるかと。
ソリューションとして学習する際には、どのようなドキュメントを確認すればよいかをまとめておきたいと思います。
SQL Server 2019 on Linux が CU10 で Ubuntu 20.04 のサポートを開始しました
先日公開された、SQL Server 2019 CU 10 から、SQL Server on Linux が Ubuntu 20.04 をサポートするようになりました。
- SQL Server 2019 on Ubuntu 20.04,python2 dependency removed for SQL Server 2019 across distributions.
これに伴い、SQL Server on Linux の各種ドキュメントにも Ubuntu 20.04 の記述が追加されています。
- What’s new for SQL Server 2019 on Linux
- Quickstart: Install SQL Server and create a database on Ubuntu
- Quickstart: Run SQL Server container images with Docker
Big Data Cluster のコンテナーのイメージについても Ubuntu 20.04 が使用されるようになったようですね。
DBCC SHRINKFILE によるファイル圧縮の動作 (データファイル編)
SQL Server では、DBCC SHRINKFILE という DBCC コマンドを使用することで、データファイル / ログファイルのサイズを圧縮することができます。
データベースのファイルを配置しているドライブの空き容量の不足や、大量の一時的なデータを投入後に、データの削除を行った後にデータベースの物理ファイルが過剰に増加している場合に、ファイルサイズを小さくするというような場合に使用するもので、一般的には日常的に使用するものではありません。
しかし、何らかの理由によってデータベースのファイル (mdf / ndf / ldf) が肥大化し、DBCC SHRINKFILE の実行が必要となるケースもあるのではないでしょうか。
本投稿では、DBCC SHRINKFILE を使用して物理データファイルを圧縮し、サイズを削減する際にはどのような動作になっているのかをまとめておきたいと思います。