SE の雑記

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

Archive for the ‘SQL Server’ Category

SQL Server のロール設定によるロック競合 / デッドロックについての情報

leave a comment

SQL Server のロール設定をした際のロック競合とデッドロックについての調査をしていた際に見つけた情報として、次のようなものがありました。

どちらも同一の情報がベースとなっており、HashiCorp の Vault と SQL Server の組み合わせた場合のデッドロックの発生となるようですが、情報としてはとても興味深い内容となっていました。

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 10th, 2022 at 11:23 pm

Posted in SQL Server

Tagged with

SQL Server 2022 で廃止となる機能の一部がアナウンスされました

leave a comment

The path forward for SQL Server analytics で発表されましたが、SQL Server 2022 で SQL Server 2019 までで実装されていた機能の一部の廃止 (Retirement) がアナウンスされています。

Today, we are announcing changes to SQL Server analytics which includes:

  • Customer feedback
  • Retirement of SQL Server 2019 Big Data Clusters
  • Retirement of PolyBase scale-out groups
  • Path forward

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 7th, 2022 at 9:38 am

統計情報を使用した非パーティションテーブルのエクスポートデータの分割

leave a comment

SQL Server のデータをエクスポートする場合、大規模データをエクスポートする場合はいくつかのデータに分割してエクスポートを行うことで、

  • ファイル当たりのエクスポートデータのサイズ調整
  • データに問題があった場合の再抽出
  • データの並列ローディング

というようなメリットがあるのではないでしょうか?

PolyBase のような機能では、パーティションテーブルに対してのアクセスについては、パーティション単位にスレッドを分散させてデータアクセスを行っており、何らかの論理空間で分割が行われている場合は、「パーティション単位でデータをエクスポートする」というように、複数のエクスポートデータを容易に生成することができます。

それでは「非パーティションテーブル」ではどのような方法を使用することで、エクスポートデータを分割することができるでしょうか?

以前投稿した、Database Migration Assistant (DMA) で SQL Server から SQL Database へのデータ移行方法について にも関連する内容となるのですが、非パーティションテーブルを複数のエクスポートデータに分割したい場合、「統計情報を使用する」というアプローチをとることができますので、本投稿で紹介させていただきます。

タイトルには、「非パーティションテーブル」と書きましたが「パーティションテーブル」でも使用できます。(パーティションと統計情報のヒストグラムを組み合わせるとさらに細かな単位でデータを分割できるかと)

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 2nd, 2022 at 6:22 pm

Posted in SQL Server

Tagged with

メモリプレッシャーによる SQL Server の AppDomain のアンロード

leave a comment

先日、SQL Server と AppDomain という投稿をしました。

SQL Server では、ユーザー定義の CLR を使用していなくても、

等を使用した場合、CLR による実装が行われているため、CLR がロードされ AppDomain (アプリケーション ドメイン) が生成されていることについて触れました。

前回の投稿では「ロード」部分が主内容となっていましたが、本投稿では「アンロード」部分について触れてみたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

2月 23rd, 2022 at 10:41 pm

Posted in SQL Server

Tagged with

SQL Server と AppDomain

leave a comment

SQL Server と AppDomain の関係について整理する必要があったので、情報を遺しておきたいと思います。

SQL Server は通常の使用を行っていても、一部の機能では、CLR (.NET 共通言語ランタイム) が使用されており、AppDomain が生成されている可能性があります。

Read the rest of this entry »

Written by Masayuki.Ozawa

2月 20th, 2022 at 10:25 pm

Posted in SQL Server

Tagged with

統計情報を更新してリコンパイルを誘発させるテストを実施する場合の注意点

leave a comment

SQL Server ではクエリのリコンパイルが発生する条件としては次のようなものがあります。

image

パラメータースニッフィング等で、実行プランが大多数のクエリで効率が悪くなってしまった場合の補正として、「統計情報を更新」することでリコンパイルを誘発させることがあるのではないでしょうか。

実稼働環境であれば、統計情報の更新を行うことでリコンパイルを誘発させるということを実施するのは、それほど難しくない気がしますが、負荷がかかっていない検証環境のようなものを使用して、検証を実施しようとすると、統計情報を更新してもリコンパイルが発生しないとう状態になることがあります。

これについては、2018 年の段階で Does Updating Statistics Cause a Recompile if No Data Has Changed? で解説が行われていますが、投稿を書いている時点の最新のバージョンである、SQL Server 2019 CU15 でも同様な状態になるのかと思って確認していた際の内容を遺しておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

2月 10th, 2022 at 9:30 am

Posted in SQL Server

Tagged with

SQL Server のクエリオプティマイザについての理解を深めるための技術情報

leave a comment

以前、SQL Server のクエリオプティマイザを学習する際に確認するドキュメント という投稿を書きました。

SQL Server のクエリオプティマイザを学習するためには、上記の投稿で触れている技術情報に加えて、SQL Server ディスク ベース テーブルに対するクエリ処理 の以下の図を意識する必要があります。

SQL Server のクエリ実行時の実行プランの生成については、

  1. Parser による構文解析
  2. Algebrizer によるオブジェクトのバインドと論理操作の出力
  3. クエリオプティマイザによる物理操作の選択
  4. クエリ実行

というような流れとなります。

「2.」の Algebrizer が論理操作 (論理ツリー) を出力する部分については、公開されている情報が少ないのですが、「3.」のクエリオプティマイザの動作については、様々な情報が公開されています。

本投稿ではどのような情報が公開されているのかについてまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 27th, 2022 at 10:57 pm

Posted in SQL Server

Tagged with

NOT NULL の列が含まれている場合に、bcp ユーティリティのネイティブ型を使用したエクスポートファイルがインポートできないケースについて

leave a comment

SQL Server でデータのエクスポート / インポートを行う場合、bcp ユーティリティ を使用しますが、ネイティブ型 (-n オプション) を使用したファイルをインポートしようとした際に、特定の条件下でエクスポートされたデータをインポートすることができず、理由を理解するのに時間がかかりました…。

その時の調査内容を残しておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 27th, 2022 at 9:20 pm

Posted in SQL Server

Tagged with

SQL Server の勉強の仕方というセッションの資料を公開しました

leave a comment

先日、How to learn SQL Server という SQL Server の勉強の仕方についてのセッションを担当させていただきました。

その際のセッション資料を How to learn SQL Server として PDF を公開させていただきました。

SQL Server の勉強をする際の参考になれば幸いです。

Written by Masayuki.Ozawa

1月 23rd, 2022 at 9:15 pm

Posted in SQL Server

Tagged with

SQL Server の VSS Writer の技術情報について

leave a comment

SQL Server のインストールを行うと、SQL Server VSS Writer (SQLWriter) サービスが合わせてインストールされ、Windows OS の Windows VSS インフラストラクチャと連携して、データベースのバックアップを行うことができます。

SQL Server 標準の BACKUP DATABASE を使用している場合は、VSS Writer との連携は意識しませんが、それ以外の方法、OS のバックアップ (Windows Server バックアップ) や、バックアップソフトのようなものを使用した場合は、SQL Server VSS Writer が透過的に使用されていることもあります。(SQL Server VSS Writer を使用したバックアップについては、BACKUP ステートメントを WITH SNAPSHOT オプションで実行しているケースがあり、厳密には BACKUP ステートメントと関連性はありますが)

この SQL Server の VSS Writer について確認する必要が出た場合、どのような技術情報が公開されているのかをまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 20th, 2022 at 11:49 pm

Posted in SQL Server

Tagged with