SE の雑記

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

SQL Server 2022 の model_replicatedmaster / model_msdb について

leave a comment

SQL Server 2022 では、システムデータベースのディレクトリに、次のデータベース用のファイルが格納されています。

  • model_replicatedmaster
    • model_replicatedmaster.mdf
    • model_replicatedmaster.ldf
  • model_msdb
    • model_msdbdata.mdf
    • model_msdblog.ldf

これらのファイルは、SQL Server 2019 でも存在していたのですが、通常のインスタンスでは使用されていませんでした。

SQL Server 2022 になると、状況が変わり、これらのファイルが使用されているデータベースとして model_replicatedmaster / model_msdb というデータベースが SSMS や DMV では表示されませんが内部的に存在するようになり、基本構成としてファイルが使用されるようになりました。

現状、これらのデータベースの情報が公開されているものはないのですが、2022 で新しく追加されたシステムデータベースとなるため、本投稿で現在調べられていることをまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 5th, 2023 at 9:54 am

Azure Stack HCI で評価版の Windows Server をベースにしてサブスクリプションで Windows Server を利用する

leave a comment

Azure Stack HCI 上で Windows Server を実行する場合、Windows Server サブスクリプション という利用形態で Windows Server OS を実行することができ、詳細については次のドキュメントで解説が行われています。

価格については Azure Stack HCI の価格 に記載されており、Azure Stack HCI のホスト OS の物理コアによる月額コストとなり、サブスクリプションモデルで、Windows Server OS の仮想マシンを実行する場合は、実行している仮想マシン単位のコストを考慮しなくてもよくなります。

image

ライセンス オプションの比較 に、次のように記載されていますが、CAL についても不要となり、シンプルな考え方で Windows Server を使用することができるようになります。

Windows Server サブスクリプションについても Azure Stack HCI の 60 日間の評価内容に含まれており、評価期間内であれば、コストを発生させることなく検証をすることができます。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 4th, 2023 at 1:28 pm

Posted in Azure Stack HCI

Tagged with

SQL Server の動的メモリ管理の情報が出力される二つのリングバッファーについて

leave a comment

SQL Server のメモリ管理については、メモリ管理アーキテクチャ ガイド で解説が行われています。

このガイドの中で、メモリ不足の検出 に次の記載があります。

次の 2 つのリング バッファーに、動的メモリ管理に関連する情報が保持されます。

  • メモリ不足が通知されているかどうかなど、リソース モニターのアクティビティを追跡するリソース モニター リング バッファー。 このリング バッファーには、現在のRESOURCE_MEMPHYSICAL_HIGH状態に応じて状態情報が含まれます。 RESOURCE_MEMPHYSICAL_LOWRESOURCE_MEMPHYSICAL_STEADYRESOURCE_MEMVIRTUAL_LOW
  • 各 Resource Governor リソース プールのメモリ通知のレコードが含まれるメモリ ブローカー リング バッファー。 内部メモリ不足が検出されると、メモリの割り当てを行うコンポーネントに対して、メモリ不足を示す通知がオンになり、キャッシュ間でメモリのバランスをとるためのアクションがトリガーされます。

SQL Server のメモリ管理は「動的メモリ管理」によって実施されており、OS / SQL Server のメモリ使用状況に応じて、各役割のメモリを自動的に調整します。

この動的メモリに関する動作については、リングバッファーから確認をすることができるようになっています。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 3rd, 2023 at 5:56 pm

Posted in SQL Server

Tagged with

拡張イベントで Non-yielding Scheduler が発生した際にスタックのコピーを取得する

leave a comment

先日投稿した SQL Server 2022 で Non-yielding Scheduler 発生時の出力内容が追加されていました は SQL Server 2022 向けの情報となり、投稿時点の最新バージョンの SQL Server を使用することで、ERRORLOG から g_copiedStackInfo のコンテキストを取得し、スケジューラーを解放しないスレッドのスタックを確認することができることを確認しました。

それ以外のバージョンでは、ダンプが出力されたタイミングでしか確認できないとなると、発生時の初回の情報しか確認でいないことになり、SQL Server のサービスを連続稼働している最中のエラーの原因特定が困難になってしまいます。

これを解消することができないか、考えていたところ「nonyield_copiedstack_ring_buffer_recorded」という拡張イベントを見つけることができました。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 28th, 2022 at 6:07 pm

Posted in SQL Server

Tagged with

Windows Server 2022 + SQL Server で Fake NUMA の環境を構築する

leave a comment

現在、SQL Server の物理の検証環境としては NUC9VXQNX を使用しています。

SQL Server は NUMA アーキテクチャ を意識したソフトウェアとなっており、NUMA ノード単位にスレッドが作成される / NUMA ノード単位の情報取得が行われるものがあり、一部の検証では複数の NUMA ノードがある環境が欲しくなることがあります。

Hyper-V の仮想マシンであれば、17コア以上の環境であれば仮想マシン上では複数ソケットになるのですが、現在 NUC でこれを満たせるのは、NUC13 エクストリームキットぐらいになると思うのですが、残念ながら手元にはありません…。

Azure の仮想マシンで実行することで利用することはできるのですが、試行錯誤して検証を実施しているとコストもそれなりにかかってくるかと思います。

ということで、冒頭に記載した Gen9 の NUC (Xeon モデル) を使用して、Fake NUMA の環境を設定して利用してみた際のメモを。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 28th, 2022 at 3:18 pm

SQL Server 2022 で Non-yielding Scheduler 発生時の出力内容が追加されていました

leave a comment

SQL Server でスレッドが CPU を解放せずに占有し続けた状態となる Non-yielding Scheduler となった場合、SQL Server のプロセスのダンプが出力されます。

出力されたダンプについては、Non-yielding IOCP Listener, Non-yielding Scheduler and non-yielding resource monitor known issues and fixes で解説されている内容を基に解析を行うことになりますが、SQL Server 2022 では解析のための情報が追加されているようです。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 26th, 2022 at 9:49 am

SQL Nexus で System.Data.SqlClient.SqlException (0x80131904) が発生した場合の対応方法

leave a comment

SQL Nexus でレポートを作成する際に、一部の内容 (例: Perfmon Summary の Click here to view more CPU metrics) を表示する際に、次のエラーが発生することがあります。

System.Data.SqlClient.SqlException (0x80131904): 文字列から日付と時刻、またはそのいずれかへの変換中に、変換が失敗しました。 (英語だと Conversion failed when converting date and/or time from character string.)

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 21st, 2022 at 3:22 pm

Posted in SQL Server

Tagged with

SOS_WORK_DISPATCHER と SOS_WORKER の比較についてのメモ

leave a comment

SOS_WORK_DISPATCHER については、What is the SOS_WORK_DISPATCHER Wait Type? で解説が行われていますが、SOS_WORKER との比較を把握しておきたかったのでメモとして。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 15th, 2022 at 10:13 am

Posted in SQL Server

Tagged with

検証用 SQL Server に導入するツール

leave a comment

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 8th, 2022 at 9:51 am

Posted in SQL Server

Tagged with

Try using External REST Endpoints Integration (Preview) of SQL Database

leave a comment

Azure SQL Database External REST Endpoints Integration Public Preview でアナウンスがありましたが、SQL Database で、SQL から REST API をコールすることができる sp_invoke_external_rest_endpoint というストアドプロシージャがプレビューで提供されました。

SQL 単体で、REST をコールして情報を取得することができる機能となります。

呼び出しができるエンドポイントについては、許可されているエンドポイント に記載されている次のエンドポイントに限定され、これ以外のエンドポイントについては、サポートされるエンドポイントでラップして呼び出す必要があります。

image

本機能の使用方法のサンプルについては Azure SQL DB sp_invoke_external_rest_endpoint samples が提供されているのですが、この中で触れられていない Microsoft Graph を使用して、本機能を確認してみました。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 7th, 2022 at 9:10 pm

Posted in SQL Database

Tagged with