SE の雑記

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

Archive for the ‘SQL Database’ Category

SQL Database の異なるテナントに対しての Geo レプリケーションの設定について

leave a comment

SQL Database で異なるテナントに対して Geo レプリケーションを設定する場合のメモ。

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 16th, 2025 at 7:29 pm

Posted in SQL Database

Tagged with

SQL Server ベースの環境を操作するための MS 提供ツールの現状 (2025/03 時点)

leave a comment

SQL Server ベースの環境を操作するためには SQL Server Management Studio (SSMS) を使用することができますが、そのほかにも Microsoft からいくつかのツールが提供されています。

ここ数か月で MS が提供している SQL Server ベースの環境を操作するためのツールについて、いくつかのアナウンスがありましたので一度まとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 6th, 2025 at 9:56 am

Key Vault を使用した Always Encrypted の覚書

leave a comment

SQL Server / Azure SQL Database では、Always Encrypted という暗号化の機能があります。

この機能は、列マスターキー (CMK) と列暗号化キー (CEK) という 2 種類の暗号化のためのキーを使用して、データの暗号化を行います。

データは常に暗号化された状態で取り扱われ、暗号化を指定した列についてはディスク / メモリ / ネットワーク上で常に暗号化された状態となり、適切な暗号化キーにアクセスができない状態では、SQL Server の管理者であったとして、暗号化されたデータを複合化することができないという特徴があります。

本ブログでもこの機能について触れていたことはありますが、改めて思い出す必要がありましたので情報を残しておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 2nd, 2025 at 7:30 pm

SQL Database の JSON データ型の格納効率について

leave a comment

SQL Database / SQL Server 2025 では、JSON データ型  をサポートしており、JSON フォーマットのデータを格納するための専用のデータ型を使用することができます。

JSON データ型は「Latin1_General_100_BIN2_UTF8」の照合順序により UTF-8 のエンコードが使用されるという特徴の他に「圧縮用に最適化された、より効率的なストレージ」もメリットとして挙げられています。

通常の文字列データ型と比較して、JSON データ型がどの程度ストレージの格納効率が変化するのかが気になったので、SQL Database で確認してみました。

Read the rest of this entry »

Written by Masayuki.Ozawa

2月 19th, 2025 at 10:53 pm

SQL Server で統計情報の自動更新時の情報を取得するための方法

leave a comment

SQL Server ベースのデータベースエンジンで統計情報の自動更新が発生した際の情報を取得するための方法についてまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

2月 18th, 2025 at 10:33 pm

Database Watcher のデータストアに Free ADX を設定する (2025/01 版)

leave a comment

本投稿と同様の事象が発生した場合の 2025/01/27 時点の暫定対応方法です。SR で確認中のため今後、本投稿の対応は不要となる可能性があります。

Azure SQL のワークロード監視をする機能として、Database Watcher があります。

Database Watcher では、Azure Data Explorer (ADX) ベースの環境をデータストアとして使用し、Azure SQL の各種状態を保存します。

データベース ウォッチャーの価格 に記載されていますが、Database Watcher 自体は無償で利用でき、Free  Azure Data Explorer (ADX) Cluster を使用した場合、ADX には 機能の比較 に記載されている制限がありますが、データストアについても無償で使用することが可能です。

以前は Azure Portal から Free ADX Cluster を使用する設定ができていたのですが、私の環境では設定することができず、他の方法で設定する必要があったのでその際の作業内容を残しておきます。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 27th, 2025 at 11:38 pm

Data Migration Assistant (DMA) の後継機能

leave a comment

今まで、SQL Server のバージョンアップ / SQL Server ベースの環境間の移行に使用することができるツールとして、Data Migration Assistant (DMA) というツールが提供されていました。

しかし、2024/06/29 にドキュメントの更新が行われ、DMA は非推奨の機能となりました。

データベースの移行については Azure Data Studio の SQL Migration 拡張機能 で代替することが可能なのですが、データベースの評価については Azure Data Studio (ADS) の機能は DMA よりリッチな機能となっておらず、この部分を代替する機能が提供されていない状態となっていました。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 23rd, 2025 at 9:09 pm

SQL Server / SQL Database で設定可能な権限を把握する

leave a comment

SQL Server /SQL Database のような SQL Server ベースのデータベースエンジンで、設定可能な権限を確認する際には、権限 (データベース エンジン) / 権限の階層 (データベース エンジン) に記載されている Database Engine Permissions Poster を確認するのが定番の方法となるかと思います。

しかし、この情報は SQL Server 2017 ベースの情報となっており、数世代前の SQL Server の情報となります。

現在の SQL Server ベースの環境でもこの情報は有益ではあるのですが、最新バージョンで増えた権限については確認することはできません。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 22nd, 2025 at 9:53 pm

lock_aquired / lock_released の拡張イベントログで KEY ロックの対象を確認してみる

leave a comment

SQL Server で取得されたロックの情報を確認する方法として lock_aquired / lock_released イベントを拡張イベントで取得する方法があります。

取得されているロックを確認する方法としては sys.dm_tran_locks を参照する方法もあります。
この DMV から情報を取得した場合は、次の画像のように、resource_description から、どのロックリソース (%%lockres%%) のキーに対してロックが取得されているのかを確認することができます。

image

しかし、DMV の参照はトレースとして情報を時系列で取得することは難しく、ロックのような短時間で取得される内容が細かに変わっていくような特性のある情報については DMV を連続でダンプしても解析することは難しいです。

本投稿を各モチベーションとなったのは「キーに対してどのような順序でロックが取得されているか」を確認したかったのですが、このような情報については DMV で取得することは難しく、拡張イベントのようなイベント駆動のトレースの情報を取得する必要があります。

しかし拡張イベントで「取得されるロック」の情報を確認した場合 、上述の DMV のような resource_description のような可視性の高い情報が無く、次の画像のように、「resource_x」「associated_object_id」を使用して、情報を確認する必要があります。

image

これらの情報を使用して「どのキーに対してロックが取得されたのか?」を確認する方法を考えてみました。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 11th, 2025 at 7:57 pm

sp_invoke_external_rest_endpoint で text-embedding-3-large のモデルを使用する

leave a comment

SQL Database で T-SQL で Vector データ型用の埋め込みを作成する際には、sp_invoke_external_rest_endpoint で Azure Open AI の 埋め込みのモデル を使用して、ベクトルデータを作成するという方法があります。

SQL Database の Vector データ型 の次元の最大数は「1998」となっており、これを変更することはできません。

Azure Open AI の埋め込みのモデルとしては、次のモデルを使用することができます。

  • text-embedding-ada-002
  • text-embedding-3-small
  • text-embedding-3-large

ada / embedding-3-small であれば、1536 の次元となるため、Vector データ型にはそのまま登録することができるのですが、text-embedding-3-large については、単純に呼び出しただけでは 3072 の次元となるため、Vector データ型に登録することができません。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 22nd, 2024 at 10:58 pm