Always On FCI (フェールオーバークラスターインスタンス) の SQL Server の分散トランザクション (MSDTC) で、意図的に未解決(in-doubt) のトランザクションを作成して検証をしたいケースがあったので意図的に作り出す方法を。
以前は SQL Server の分散トランザクション使用時のインダウトトランザクション (未解決のトランザクション) について で作り出していましたが、FCI であればもう少しシンプルな方法で作り出すことができます。
SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿
Always On FCI (フェールオーバークラスターインスタンス) の SQL Server の分散トランザクション (MSDTC) で、意図的に未解決(in-doubt) のトランザクションを作成して検証をしたいケースがあったので意図的に作り出す方法を。
以前は SQL Server の分散トランザクション使用時のインダウトトランザクション (未解決のトランザクション) について で作り出していましたが、FCI であればもう少しシンプルな方法で作り出すことができます。
クラスター環境 (Always On FCI) の SQL Server で MSDTC を利用した分散トランザクションを実行する際に必要となる Windows Firewall の許可設定についてのメモ。
MSDTC を設定する際の基本的な作業については、次の記事を見ておけば良いかと。
2024/03/19~23 の期間で SQLBits 2024 が開催されました。
この期間中は、Azure SQL Update のアナウンスもいくつか行われています。
キーノートの動画公開され、SQL Server ベースの環境について、様々な発表がありましたので関連しそうな内容をまとめておきたいと思います。
(現時点では、キーノートの最初の部分が公開されていなかったので一部キャッチアップできていない内容があるかもしれません)
全体的なアナウンスについては Expand the limits of innovation with Azure data で公開が行われていました。
以下の 3 つの記事で SSMS 20.0 の記事が公開されていました。
Part 1 / Part 2 は Preview リリースの記事となっていたのですが、本日公開された Part 3 で一般提供開始のアナウンスがありました。
現状、英語の URL へのアクセスが必要ですが、以下の URL から SSMS 20.0 のダウンロードと、リリースノートの確認ができます。
SQL Server ベースの環境向けの Visual Studio のプロジェクトとして、データベースプロジェクト があります。
このプロジェクトは当初はオフラインデータベース開発向けの機能として実装が行われていましたが、昨今は SQL Server ベースの環境の CI/CDでも活用が行われています。
データベースプロジェクトについては Visual Studio (or SSDT) だけでなく、Azure Data Studio (ADS) の SQL Database プロジェクトの拡張機能でも作成することができます。
最近、データベースプロジェクトを活用した CI/CD について調査を行っていましたので、分かった内容をまとめておきたいと思います。
2024 年に入ってからの SQL Server / SQL Database のアップデートをキャッチアップできていなかったので、一度まとめておきたいと思います。
SQL Server ベースの CI/CD に活用できるツールとして SqlPackage があります。
SqlPackage は、データ層アプリケーション (DAC) を操作するためのツールとなり、DACPAC / BACPAC の操作を行うことができます。
このツールのアクションとして「Script」があり、SqlPackage スクリプト パラメーターとプロパティ の機能により、DACPAC や SQL Server ベースの環境とスキーマ比較をし、増分更新で状態を反映するスクリプトの作成ができます。(Publish パラメーターを使用することで直接発行することができます。基本は増分更新ですが、オプション (/p:DropObjectsNotInSource=true) で削除スクリプトを生成するかを調整することができます。)
この機能を、SQL Database に対して SQL 認証のログインで実行しようとした場合には注意点があったため本投稿でまとめておきたいと思います。
SQL Server はクエリの実行時には 統計情報 を使用してクエリの実行プランを生成しています。
統計情報は、以下のような情報で構成されており統計情報の作成を行うテーブルのデータを参照して情報を作成する必要があります。
統計情報を更新する際に実データに対しての検索が行われますがどのようにデータ取得が行われているかについてまとめておきたいと思います。
SQL Server のストアドプロシージャでは次のようなタイミングでコンパイル / リコンパイルが発生します。
上記のケースの中で「1.」「2.」については発生すると複数のセッションで同時実行性の低下につながるケースがあります。
どのような情報が出力されていると、「1.」「2.」のケースで同時実行性が低下している可能性があるのかをまとめておきたいと思います。
今回はストアドプロシージャを対象としており、アドホッククエリやパラメーター化クエリについてはこの動作とは異なってきます。
SQL Server では別名を作成する機能があり、リンクサーバーで別のサーバーに接続を行う場合などにサーバー名のエイリアスを作成して使用することができます。
SQL Server 2019 までは、SQL Server 構成マネージャーで設定を行うことができました。
SQL Server 2022 の構成マネージャーでも同様の UI が提供されているのですが、新しい別名を作成することはできなくなっています。(新規に別名を作成しようとしても、サーバー名の入力等ができなくなっています)
SQL Server 2022 以降でも別名を使用することはできますが、作成方法が変わっていますので、本投稿で触れておきたいと思います。