SE の雑記

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

Archive for the ‘SQL Server’ Category

SQL Server 2022 を従量課金で利用する際の参考情報

leave a comment

SQL Server 2022 の新機能として、SQL Server の従量課金での利用があります。

「インストール」または「エディションのアップグレード」を実施する際に「Microsoft Azure を通じて従量課金制の課金を使用します」 (AZUREBILLEDEDITION オプション) を選択することで、従来からの永続化ライセンスではなく、SQL Server のデータベースエンジンを従量課金で利用することができます。(SQL Server のソフトウェアライセンスについてとなり、OS のライセンスは別途考慮する必要があります / データベースエンジンの利用に限定されていそうです。)

image

この従量課金での利用については、SQL Server 2022 で初めて導入されたインストール形態となり、オンプレミスやそれ以外の環境にインストールした SQL Server 2022 を従量課金で利用することができます。

従量課金での利用は「Azure サブスクリプションへの課金」となるため、Azure サブスクリプションが必要 / SQL Server の利用料金は Azure の利用料金として発生することになりますが、様々な場所で実行している SQL Server 2022 を従量課金で利用することができるようになります。

従量課金での利用については、Azure Arc の SQL Server 用 Azure 拡張機能 により実現されているため、機能の詳細については SQL Server だけでなく Azure Arc の観点でも確認する必要があります。

使用する際に疑問に思う点は よく寄せられる質問 でまとめられているので、こちらも確認するとよいかと。

関連情報する情報を整理していたのですが、一通り情報が出てきたようなのでまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 4th, 2022 at 5:50 pm

PASS Data Community SUMMIT 2022 で SQL Server 2022 の一般提供開始がアナウンスされました

leave a comment

本日から PASS Data Community SUMMIT 2022 が開催されています。

1 日目のキーノートは Microsoft の Rohan Kumar 氏 のセッションとなっていました。

この動画も面白かったですw

このキーノートの中で SQL Server 2022 の一般提供開始 (GA: General Availability) がアナウンスされました!!

image

CTP 2.0 による Public Preview が開始されたのが、2022/05/20 なので、半年の Public Preview 期間を経て一般提供が開始されましたね。

製品ページ も SQL Server 2022 に対応したものとなり、SQL Server 2022 の製品ページ も GA 版に変わっています。
ライセンス についても情報が公開されています。

 

評価版のダウンロード

評価版については こちら からダウンロードすることができます。SSRS はこちら から。

SQL Server 2022 の評価版ソフトウェアは以下からダウンロードすることができます。

Visual Studio サブスクリプションにも SQL Server 2022 の Developer Edition が追加されており、評価版については、そちらから入手も可能です。

 

ライセンス関連の情報

投稿点では 2019 のドキュメントもありますが、以下のライセンスドキュメントも 2022 に対応され始めています。

SQL Server 2022 の情報となるわけではありませんが、従来まで SA を購入している場合であった特典の、Free DR replica in Azure の構成が、PAYG の Azure VM でも適用されるということが General availability: DR secondary free with SQL Server on Azure Virtual Machines でアナウンスされました。

コンピューティングについてはコストは発生しますが、完全なスタンバイであれば、 SQL Server のライセンスコストを抑えることができるようになりますので、以下のドキュメントも確認しておくとよいかと思います。(投稿時点ではアップデートがされていませんが、今後アップデートされると思います)

 

SQL Server 関連のアナウンス

PASS 開催に合わせて発表された SQL Server Blog のアナウンスはこちら。

Read the rest of this entry »

Written by Masayuki.Ozawa

11月 17th, 2022 at 1:37 am

SQL Server のベストプラクティスについて公開されているドキュメント

leave a comment

Read the rest of this entry »

Written by Masayuki.Ozawa

11月 15th, 2022 at 9:14 am

Posted in SQL Server

Tagged with

Visual Studio パフォーマンス プロファイラーを使用した SQL Server のスタックトレースの確認

leave a comment

先日、一時テーブルとテーブル変数のパフォーマンスについて調査をしていた際に、次の情報が見つかりました。

この中で Visual Studio の パフォーマンス プロファイラー (Performance Profiler) を使用してスタックトレース (コールスタック) を取得した内容について紹介がされていました。

最近、SQL Server のスタックトレース確認をすることが多く、次の方法を使用して確認を行っていました。

  • 拡張イベントの callstack フィールド
  • WinDbg
  • xperf + WPA
  • PerfView
  • Visual Studio からの確認であればクエリを実行しながらスタックトレースを確認することができて便利そうなので、試してみました。

    今回は Visual Studio を起動している環境上で起動している SQL Server を移用しています。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    11月 14th, 2022 at 9:43 am

    Posted in SQL Server

    Tagged with

    SQL Server 2022 on Azure VM の Azure Active Directory 認証について

    leave a comment

    SQL Server 2022 の新機能として Azure Active Directory 認証 があります。

    オンプレミスの SQL Server であれば、Azure Arc 対応サーバーをインストールすることで使用できる機能なのですが、Azure VM では、Azure Arc 対応サーバーはサポートされておらず、評価目的でのみ使用することができます。

    Azure VM で SQL Server 2022 を実行した場合、SQL Server IaaS Agent 拡張機能 経由で、Azure Arctive Directory 認証をサポートする予定という話は以前から出ていたのですが、当時は具体的な設定方法は公開されていませんでした。

    今月 SQL Server 2022 Revealed が出版され読み進めているところなのですが、この書籍の中でも Azure Active Directory 認証について解説が行われています。

    最新の状況についてどうなっているのかを Azure Active Directory 認証 で改めて確認してみたところ、ドキュメントが更新されており、「または Windows Azure VM 上の SQL Server 2022) のみがサポートされています。」の記載が追記されていました。

    SQL Server 2022 on Azure VM の Azure Active Directory 認証についての情報が Azure AD 認証 (プレビュー) として公開されていたので、実際に試してみました。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    11月 13th, 2022 at 10:44 pm

    SQL Server の基数推定 (CE: Cardinality Estimation) について把握する際に必要となる情報

    leave a comment

    SQL Server では実行プランを生成する際には、統計情報を基にして、処理対象となるデータの推定 (基数推定) が行われます。

    SQL Server の統計情報は、

    • データ件数
    • 最大 200 に分割されたデータ分布 (ヒストグラム) により構成される
    • 分割の上限値 / 分割範囲の行数 / 分割の上限と同一値の行数 / 個別の値を持つ行数 / 重複する値を持つ行数の平均
    • ヒストグラムは統計情報の先頭列のみで構成され、複数列統計を作成した場合でも複数列のヒストグラムは作成されない
  • データの密度
    • どの程度ユニークな値で構成されているか (密度が 1 になっている場合は、すべてのデータが同一の値となる)
    • 複数列統計の場合、密度は列の組み合わせによって作成される
    • SQL Server 2008 との互換性維持となる情報については、統計ヘッダーの密度であり、最新の SQL Server でも列単位の密度は使われている

    が基本的な情報となり、この情報は以前の SQL Server から変化していないという認識です。

    統計情報については、STATS_STREAM (STATS_BLOB) が実際の情報となりますが、次の情報からユーザーが視認できる形で確認を行うことができます。

    与えられたクエリのステートメントに対して、この統計情報を使用して行数を推定することで、クエリの実行プランが組み立てられ、この時の処理対象となる行数の推定が基数推定 (カーディナリティ推定: Cardinality Estimation: CE) となります。

    本投稿では、この行数の推定である基数推定がどのように判断されているかを確認する際に参照する必要のある情報をまとめておきたいと思います。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    11月 6th, 2022 at 11:03 pm

    Posted in SQL Server

    Tagged with

    調査のために意図的に Non-yielding scheduler の状態を作り出す

    leave a comment

    Non-yielding scheduler エラーの調査を実施する際の参考情報 の続きの投稿となるのですが、SQL Server で Non-yielding scheduler となる状態を作り出すため、スレッドと強制的に中断状態にして

    • リングバッファーに RING_BUFFER_NONYIELD_COPIEDSTACK を出力
    • 拡張イベントに scheduler_monitor_non_yielding_ring_buffer_recorded を出力

    させるための方法のメモです。

    本来は、スケジューラーモニターで次の状態を検知させ、ダンプを出力させるところまで再現したかったのですが、私の理解度が低く、そこまでは再現できていません。

     # Child-SP          RetAddr           Call Site
    00 00000006`b2ddbc28 00007ffd`db9185c3 ntdll!NtWaitForSingleObject+0x14
    01 00000006`b2ddbc30 00007ff6`cb98bb2e KERNELBASE!WaitForSingleObjectEx+0x93
    02 00000006`b2ddbcd0 00007ff6`cb98b8a3 sqlservr!CDmpDump::InvokeSqlDumper+0x1ee
    03 00000006`b2ddbdd0 00007ff6`cb98b5a4 sqlservr!CDmpDump::DumpInternal+0x1b3
    04 00000006`b2ddbe80 00007ffd`c356e743 sqlservr!CDmpDump::Dump+0x24
    05 00000006`b2ddbec0 00007ffd`c420d1b5 sqllang!SQLDumperLibraryInvoke+0x1f3
    06 00000006`b2ddbf00 00007ffd`c420e046 sqllang!SQLLangDumperLibraryInvoke+0x185
    07 00000006`b2ddbfc0 00007ffd`c41d8c42 sqllang!CImageHelper::DoMiniDump+0x6f6
    08 00000006`b2ddc1e0 00007ff6`cb963eb5 sqllang!stackTrace+0xa42
    09 00000006`b2dddc00 00007ffd`c5956840 sqlservr!SQL_SOSNonYieldSchedulerCallback+0x465
    0a 00000006`b2dfdea0 00007ffd`c592e59b sqldk!SOS_OS::ExecuteNonYieldSchedulerCallbacks+0xe0
    0b 00000006`b2dfe150 00007ffd`c58c54ef sqldk!SOS_Scheduler::ExecuteNonYieldSchedulerCallbacks+0x1ab
    0c 00000006`b2dfe330 00007ffd`c58c47b2 sqldk!SchedulerMonitor::CheckScheduler+0x25e
    0d 00000006`b2dfe4d0 00007ffd`c58c3d72 sqldk!SchedulerMonitor::CheckSchedulers+0x1ea
    0e 00000006`b2dfee40 00007ffd`c59c47c9 sqldk!SchedulerMonitor::Run+0xc2
    0f 00000006`b2dfef40 00007ffd`c58b9e53 sqldk!SchedulerMonitor::EntryPoint+0x9
    10 00000006`b2dfef70 00007ffd`c58ba28f sqldk!SOS_Task::Param::Execute+0x232
    11 00000006`b2dff570 00007ffd`c58ba05e sqldk!SOS_Scheduler::RunTask+0xbf
    12 00000006`b2dff5e0 00007ffd`c58d79a2 sqldk!SOS_Scheduler::ProcessTasks+0x39d
    13 00000006`b2dff700 00007ffd`c58d7b9f sqldk!SchedulerManager::WorkerEntryPoint+0x2a1
    14 00000006`b2dff7d0 00007ffd`c58d83fa sqldk!SystemThreadDispatcher::ProcessWorker+0x42a
    15 00000006`b2dffad0 00007ffd`df0c7974 sqldk!SchedulerManager::ThreadEntryPoint+0x406
    16 00000006`b2dffbc0 00007ffd`df7ea2f1 kernel32!BaseThreadInitThunk+0x14
    17 00000006`b2dffbf0 00000000`00000000 ntdll!RtlUserThreadStart+0x21
    

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    10月 30th, 2022 at 10:29 pm

    Posted in SQL Server

    Tagged with

    SQL Server 2022 RC1 + SSMS 19.0 Preview 3 環境で ostress を実行する際の注意点

    leave a comment

    Windows Server 2022 + SQL Server 2022 RC1 + SSMS 19.0 Preview 3 の環境で、ローカルの SQL Server に対して ostress.exe を実行した場合に、次のエラーが発生し、負荷をかけることができませんでした。

    10/27/22 09:20:01.124 [0x00000D2C] SQLState: 08001, Native Error: 18
    [DBNETLIB]SSL セキュリティ エラー
    
    10/27/22 09:20:01.125 [0x00000D2C] SQLState: 01S00, Native Error: 0
    接続文字列の属性が正しくありません。
    

     

    今まで見たことがないエラーだったので、なぜ発生しているのかを調べてみました。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    10月 27th, 2022 at 9:39 am

    Non-yielding scheduler エラーの調査を実施する際の参考情報

    leave a comment

    自分のメモとなるのですが SQL Server で Non-yielding scheduler のエラーが発生した場合に必要となる情報をまとめておきたいと思います。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    10月 21st, 2022 at 9:21 pm

    Posted in SQL Server

    Tagged with

    Ignite 2022 で発表された SQL Server ベースのアップデート

    leave a comment

    Ignite 2022 が開催されています。更新内容については、Book of News から確認することができます。

    SQL Server ベースの環境に関連するアップデートとしてどのようなものがあったかまとめておきたいと思います。

    Data Platform 関連のキーノートセッションは次のようなものがあるようです。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    10月 13th, 2022 at 7:12 am