SE の雑記

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

ストアドプロシージャのリコンパイルを同時実行性の低下を抑えて誘発させる

leave a comment

ストアドプロシージャを明示的にリコンパイルさせる方法として ストアド プロシージャの再コンパイル に記載されている sp_recompile を使用するという方法があります。

ストアドプロシージャはコンパイル時に指定されたパラメーターによって実行プランが生成されるため、コンパイル時に指定されたパラメーターが大多数の実行に対してマイノリティな設定の場合、頻繁に実行するクエリに対しては効率の悪い実行プランが生成されることがあります。

このような場合は、ストアドプロシージャをリコンパイルさせることで新しい実行プランを生成することがあります。

このリコンパイルを同時実行性の低下をできるだけ抑えて実行するにはどのような方法が考えられるでしょうか。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 24th, 2024 at 10:53 pm

Posted in SQL Server

Tagged with

SSMS のクエリ実行時に ARITHABORT を OFF にするだけではアプリケーションから実行しているクエリと同一にならなかった

leave a comment

SSMS からクエリを実行した場合と、アプリケーションからクエリを実行した場合の違いとして、Qiita で書いた アプリから動かすと遅いが SSMS から動かすと速いのは ARITHABORT の違いという情報の動作を理解する というような動作があります。

SET オプションが異なっていると、異なる実行プランとしてキャッシュが行われるため、SSMS とアプリケーションで同一のオプションを使用するというのが記載した内容となります。

この投稿では、「SET ARITHABORT OFF」を SSMS から実行し、アプリケーションと同一の SET オプションの状態とすることで SSMS とアプリケーションで同一のプランキャッシュを使用していました。

クエリの多重実行と SSMS から実行したクエリで同一のプランキャッシュを使用したかったので「SQLQueryStress」と「SET ARITHABORT OFF に設定した SSMS」でクエリを実行したところ、同一のプランキャッシュが使用されないという事象が発生しました。

そこで、同一の SET オプション以外にどのような要因が同一のプランキャッシュが使用されないことにつながっているのかを確認してみました。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 24th, 2024 at 7:44 pm

Posted in SQL Server

Tagged with

SQL Server のコンパイル時間とコンパイルの CPU 時間の関係について

leave a comment

SQL Server ではコンパイル時間を確認する方法としては次のような方法があります。

これらの情報からクエリのコンパイルにかかった時間を確認することができるのですが、値を正しく把握しておかないとコンパイル時間についてミスリードをする可能性があります。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 23rd, 2024 at 9:34 pm

Posted in SQL Server

Tagged with

Serverless SQL プールで Azure ストレージの診断ログを検索する際の考慮事項

leave a comment

Frontdoor の診断設定で取得した、Azure ストレージ上のアクセスログを Synapse Analytics の Serveless SQL プールで検索する際にいくつかの考慮点があったため、その内容をまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 21st, 2024 at 11:28 pm

Posted in Synapse Analytics

Tagged with

Synapse Analytics の Serverless SQL プールの分散処理について

leave a comment

Microsoft Fabric の Lakehouse に対して、ADL Gen2 のショートカットを設定することで、Azure ストレージ上のデータを検索するという方法を昨今の環境ではとることができるようになったかと思います。

T-SQL で検索を行う場合には、マネージドテーブルとしてショートカットを作成することになるかと思いますが、レイクハウス に記載されているように次のような制限があります。

Tables フォルダーでは、最上位レベルでのみショートカットを作成できます。 Tables フォルダーの他のサブディレクトリでは、ショートカットはサポートされません。 ショートカットのターゲットに Delta\Parquet 形式のデータが含まれている場合、レイクハウスはメタデータを自動的に同期し、フォルダーをテーブルとして認識します。

マネージドテーブル (Tables) として、ショートカットを作成する際にはサブディレクトリのサポートが行われていません。

Azure ストレージに出力している Azure リソースの診断情報を検索しようとした場合、診断情報は複数のサブディレクトリから構成されているため、Microsoft Fabric でそのままのディレクトリ構造で検索を行うことは難しく、マネージドテーブルとして認識できるディレクトリ構造に加工をして利用する必要があります。(アンマネージドテーブルとして Files 配下にショートカットを作成して、Spark で検索を行うのであれば Microsoft Fabric でも対応可能です)

Synapse Analytics の Serverless (サーバーレス) SQL プールについては、サブディレクトリが複数の構造でも検索を行うことができ、Azure ストレージに対して、T-SQL で分析を行うという場合には、Serverless SQL プールのほうが容易に活用できるケースがあります。

Synapse Analytics のアーキテクチャについては、Azure Synapse SQL アーキテクチャ に記載されていますが、当ブログで Serverless SQL プールの分散処理について触れたことが無かったため、情報をまとめておきたいと思います。

現状、一番詳細に記載されているのは POLARIS: The Distributed SQL Engine in Azure Synapse になるかと思います。

公式ドキュメントではアーキテクチャの内容と、次のドキュメントが参考になるかと。

 

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 17th, 2024 at 6:14 pm

SQL Server 2022 で SQL Server 構成マネージャーから別名を設定する方法

leave a comment

SQL Server 2022 では、SQL Server Native Client (SNAC) が削除され、SQL Server のインストールを行っても SNAC が含まれなくなりました。

本ブログでも SQL Server 2022 以降で別名を設定する方法 で取り上げましたが SQL Server 2022 で別名を GUI で設定する場合には「cliconfg.exe」を使用する必要があります。

最近知ったのですが、推奨はされないと思いますが SQL Server 2022 でも従来の方法で別名を設定することはできるようです。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 15th, 2024 at 9:54 am

Fabric の Warehouse の Delta Lake ログの発行が 2023/10 から変わっていたんだなという話

leave a comment

Fabric が Public Preview でリリースされた当初は、Warehouse に対しての変更の Delta Lake ログの発行は「Insert Only」となっていました。

そのため Microsoft Fabric のウェアハウスの Delta Lake ログ には次の制限が記載されていました。

Currently, tables with inserts only are supported.

現在、挿入のみを含むテーブルはサポートされています。

Warehouse に対して Insert を実行した場合は、Lakehouse で Warehouse のショートカットとして追加している Warehouse の結果に対しても反映が行われていましたが、Update / Delete を Warehouse に実行した場合、同期が停止されるという動作となっていました。

これにより、Warehouse で Insert 以外の変更を実行すると、以降は Lakehouse で検索を行っても期待した結果が返ってきませんでした。

最近、Fabric を触る機会があったので、このあたりの動作が今はどうなっているのか確認してみたところ、現状、この制限が解消されていたようでした。

ドキュメントの更新履歴を確認したところ 20231025 Kevin Conan – Removed insert only limitation for Delta Log Publishing で Insert のみ、同期がサポートされるという制限は撤廃されていたようです。

実際に今の Fabirc の Warehouse に対して Insert 以外の変更を実施すると Lakehouse に変更が反映されていました。

Written by Masayuki.Ozawa

4月 13th, 2024 at 9:49 pm

Posted in Microsoft Fabric

Tagged with

Azure SQL Database の SLA 未達の調査と返金要求の申請

leave a comment

私が使用している Azure SQL Database で SAL 未達の調査と返金要求の申請をする機会がありましたので、その際に実施した内容をまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 13th, 2024 at 6:48 pm

Posted in SQL Database

Tagged with

FCI の SQL Server の分散トランザクションで未解決のトランザクションを意図的に作り出す

leave a comment

Always On FCI (フェールオーバークラスターインスタンス) の SQL Server の分散トランザクション (MSDTC) で、意図的に未解決(in-doubt) のトランザクションを作成して検証をしたいケースがあったので意図的に作り出す方法を。

以前は SQL Server の分散トランザクション使用時のインダウトトランザクション (未解決のトランザクション) について で作り出していましたが、FCI であればもう少しシンプルな方法で作り出すことができます。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 11th, 2024 at 11:19 pm

Posted in SQL Server

Tagged with

クラスター環境の SQL Server で MSDTC を利用する際の Windows Firewall の許可設定

leave a comment

クラスター環境 (Always On FCI) の SQL Server で MSDTC を利用した分散トランザクションを実行する際に必要となる Windows Firewall の許可設定についてのメモ。

MSDTC を設定する際の基本的な作業については、次の記事を見ておけば良いかと。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 10th, 2024 at 7:56 pm

Posted in MSDTC,SQL Server

Tagged with ,