SQL Server ではブロッキング (ロック競合) 情報を取得する方法として Blocked Process Report イベント クラス の情報を拡張イベントで取得するという手法があります。
SQL Server 2022 では、この情報に出力される内容が強化されていることに先日気づきました。
SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿
SQL Server ではブロッキング (ロック競合) 情報を取得する方法として Blocked Process Report イベント クラス の情報を拡張イベントで取得するという手法があります。
SQL Server 2022 では、この情報に出力される内容が強化されていることに先日気づきました。
SQL Server 2022 / SQL Database / Managed Instance では、データベースのファイルサイズを削減するためのコマンドである、DBCC SHRINKFILE に WAIT_AT_LOWPRIORITY というオプションが追加されました。
このオプションを使用した場合のデータファイルのサイズ縮小について動作を把握しておきたかったので、調べてみました。
Bob Ward の SQL Server 2022 Hidden Gems で解説されているのですが、SQL Server 2022 ならびに Azure SQL Database では、query_antipattern という拡張イベントが追加されています。
MS のブログでも紹介されており、最近、新しい記事も公開されました。
この拡張イベントについて、本ブログでも触れておきたいと思います。
先日書いた Manaed Instance の TDE を無効化した DB を SQL Server 2022 にリストアする際の注意点 の続きになり、厳密にはデータベース暗号化キーが含まれているデータベースを SQL Server 2022 にリストアする際の作業となります。
基本的な考え方については、Restoring a SQL Managed Instance database backup to SQL Server 2022 now GA の記載となり、必要な作業については Azure Key Vault を使用した SQL Server TDE 拡張キー管理を設定する となります。
Key Vault へのアクセスに使用されている、拡張キー管理 (Extensible Key Management : EKM) については、Windows でのみサポートされているため、SQL Server on Linux では使用することはできず、現時点では、MI で TDE が有効な DB については、リストア可能な環境は Windows のみに限定されています。
※Azure SQL Managed Instance から SQL Server 2022 へのリストアだけでなく、異なる SQL Server インスタンス間のリストアでも該当します。
Azure SQL Managed Instance (MI) で取得したバックアップについては、SQL Server 2022 にリストアすることができます。
MI からリストア可能なバックアップについては、ユーザーが任意のタイミングで取得したバックアップとなるので「COPY_ONLY」オプションを使用して取得したバックアップの必要があります。
MI で COPY_ONLY バックアップを取得するには条件があり、次のいずれかの条件を満たしている必要があります。
「サービスマネージドキー」による TDE については、TDE のキーをユーザーが制御できないものとなるため、サービスマネージドキーを使用し TDE を実行している DB については、COPY_ONLY バックアップを取得することができません。
今回は「1.」で記載した TDE を無効にした状態のバックアップを SQL Server 2022 にリストアする際の注意点となります。
「2.」についても、SQL Server 2022 にリストアすることができるのですが、SQL Server 2022 では、Azure Key Vault を使用した SQL Server TDE 拡張キー管理を設定する の設定で、ユーザーマネージドキーの Key Vault へのアクセスをする必要があり、こちらはこちらで面倒ではあるのですが、それについては別の投稿で書こうと思います。
本投稿で対象としている TDE の無効化ですが、「TDE を有効にしている DB で、TDE を無効に変更」した場合が該当します。
「最初から TDE を無効の状態にしている DB」については、本投稿の事象は発生しません。
SQLBits 2023 の Bob Ward の SQL Server 2022 hidden gems で紹介されていたのですが、SQL Server 2022 で追加された query_abort という拡張イベントが、今後の SQL Server でエラーの原因を取得する際に活用できそうでしたので情報を残しておこうと思います。
この拡張イベントについては SQL Server 2022 Revealed でも触れられています。
最近、SQL Server のリンクサーバーのプロバイダーを見ていて気づいたのですが、SQL Server 2022 では、SQLNCLI11 がリンクサーバーのプロバイダーから削除されていました。
左が SQL Server 2022 / 右がそれより前のバージョンの SQL Server のリンクサーバーのプロバイダーとなるのですが、2022 では SQLNCLI11 が削除されていますね。
最近、次のアナウンスが行われ、Managed Instance でも SQLNCLI (SNAC) に対しての対応が行われたようです。
SQL Server 2022 では、Parquet ファイルの取り扱いの柔軟性と Delta Lake サポートが追加されています。
SQLBits 2023 の Bob Ward の 「SQL Server 2022 hidden gems」というセッションの中で、SQL Server 2022 の CETAS を使用してオブジェクトストレージに Parquet ファイルをエクスポートすることでテーブルのアーカイブを行うというシナリオの説明があり、このあたりの動作を一度まとめておきたいと思い、本投稿でまとめてみました。
SQL Server 2022 から従来からのライセンス買い切りによる購入形態だけでなく、PAYG による従量課金によるコアライセンスの活用ができるようになりました。
SQL Server 2022 で使用する場合には、エディション選択時に「Microsoft Azure を通じて従量課金制の課金を使用します」を選択することで、Azure のコストとして PAYG による SQL Server の利用ができるようになります。
このライセンスの利用形態では、Azure Arc 対応 SQL Server を使用して Azure に接続を行うことで従量課金によるコストが発生します。
コストの発生の条件については、Azure Arc 対応 SQL Server に関するよくあるご質問 に記載されています。
基本的な考え方としては次のようになるかと思います。
SQL Server 2022 ではコアライセンスに変更があり、次の情報に記載があります。
これらの情報には次の記載があります。
Beginning with SQL Server 2022, licensing by virtual machine is an option under subscription licenses or licenses with Software Assurance only.
製品条項を 2019 と比較するとわかりやすいのですが、2022 では個別の仮想マシンでコアライセンスを使用する場合の条件が変更されており、「サブスクリプションライセンスまたは、アクティブな SA 付きライセンスでのみ利用可能」が追加されています。
Enterprise Edition を使用して、ハイパーバイザーの物理コアのライセンスを取得し、それを使用して仮想マシンにライセンスを割り当てる形態は従来通りとなりますが、仮想マシンに直接ライセンスを割り当てる形態については、2019 までと比較して制限が追加されているようです。
これにより、PAYG によるサブスクリプションライセンスを検討しなくてはいけないケースが出てくるかもしれませんね。
SQL Server 2022 では、システムデータベースのディレクトリに、次のデータベース用のファイルが格納されています。
これらのファイルは、SQL Server 2019 でも存在していたのですが、通常のインスタンスでは使用されていませんでした。
SQL Server 2022 になると、状況が変わり、これらのファイルが使用されているデータベースとして model_replicatedmaster / model_msdb というデータベースが SSMS や DMV では表示されませんが内部的に存在するようになり、基本構成としてファイルが使用されるようになりました。
現状、これらのデータベースの情報が公開されているものはないのですが、2022 で新しく追加されたシステムデータベースとなるため、本投稿で現在調べられていることをまとめておきたいと思います。