SE の雑記

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

Archive for the ‘SQL Server’ Category

SQL Database の JSON データ型のデータ格納効率を確認してみる

leave a comment

Build 2024 のタイミングで次のアナウンスがありました。

Public Preview として、JSON データ型が発表されており、最近、実際に使用することができるようになりました。

image

JSON データ型の特徴としては次のドキュメント / ドキュメントツリーに記載されています。

従来まで JSON フォーマットのデータを格納する際には、「nvarchar(max)」のようなテキストデータとして格納をしていましたが、JSON データ型を使用することで JSON フォーマットのデータをネイティブに格納することができるようになります。

特徴としては次のような内容があります。

  • 格納されているデータが JSON フォーマットであることが保証される
  • nvarchar を使用している場合は、ISJSON を使用して JSON として妥当かどうかを判断する必要があった
  • JSON データ型の場合、データ登録時に JSON フォーマットであるかの検証が自動的に行われる
  • 圧縮されてデータが格納される
  • JSON データ型ではデータが圧縮され格納が行われるため、従来の nvarchar にデータを格納する方法より、効率的にデータを格納することができることになっています。

    利用可能な機能 に記載されていますが、すべての互換性レベルで使用することができるため、最新のデータベース互換性レベルを使用していない環境でも利用することができます。

     

    実際にどの程度データを効率的に格納することができるのかを確認してみました。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    6月 12th, 2024 at 8:52 pm

    データベース (データストア) 内での AI 関連の機能の利用について (2024/06 版)

    leave a comment

    データベース (データストア) 内で AI に関連する機能の利用が様々なデータベース時で実施することができるようになっています。

    私が確認した範囲でのデータベース (またデータベースに関連するサービス) になりますが、どのように AI の機能を利用することができるのかをまとめておきたいと思います。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    6月 9th, 2024 at 3:46 pm

    Posted in AI,SQL Server

    Tagged with ,

    SQL Server on Azure VM の SQL Server 日本語化後の IaaS Agent の導入を Bicep で実施する

    leave a comment

    Azure では、Marketplace から SQL Server インストール済みの VM イメージが公開されており、Azure VM で SQL Server を使用する場合は、このイメージで展開して PAYG で利用するのが一般的かと思います。

    イメージは英語版を使用して構築されているため、日本語化する場合には、当ブログで書いた SQL Server on Azure VM (インストール済みイメージ) の日本語化 (2021/1 版) の方法や、SQL Server Support Blog で公開されている次の記事の対応を行う必要があります。

    基本的な作業としては、次の流れとなるのではないでしょうか。

    1. OS に日本語の言語パックをインストールし、各種言語設定を日本向けに設定
    2. 導入済みの英語版 SQL Server / SSMS をアンインストール
    3. SQL Server の日本語版評価版メディアをダウンロードして「C:\SQLServerFull」内のプロダクトキーでインストール
    4. 日本語版の SSMS をインストール
    5. SQL Server IaaS Agent 拡張機能を Remove-AzSqlVM 等で登録解除
    6. New-AzSqlVM で SQL Server IaaS Agent 拡張機能を登録

    基本的な作業の流れとしてはこのようになりますが、この手順だけでは、VM の展開時に指定した SQL Server 構成の設定はクリアされた状態となってしまっています。

    展開時に指定した内容と同等の設定で IaaS Agent を導入するためには、New-AzSqlVM で様々なオプションを指定して再導入をする必要があるのですが、オプションを一つ一つ設定するのは手間がかかるため、今回はその設定を Bicep で実施してしまおうというのが今回の趣旨となります。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    6月 5th, 2024 at 9:23 pm

    Posted in Azure,SQL Server

    Tagged with ,

    JDBC で HikariCP を使用した SQL Server (SQL Database) への接続について調べてみる

    leave a comment

    JDBC で接続をする際のコネクションプールで使用するライブラリとして HikariCP があります。

    HikariCP を使用して SQL Server に接続をする際の挙動について、いくつか調査する必要があったのでその時に確認した内容を残しておきたいと思います。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    5月 25th, 2024 at 11:23 pm

    Posted in JDBC,SQL Server

    Tagged with ,

    Build 2024 のタイミングで発表された SQL Database に関連するアップデート

    leave a comment

    Build 2024 が開催されています。

    キーノートについては次の情報から確認できます。

     

    SQL Server についてはアップデートはなかったのですが、Azure SQL Database についてはアップデートがアナウンスされていますのでまとめておきたいと思います。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    5月 22nd, 2024 at 3:18 pm

    Dev Container を使用して SqlPackage の実行環境を作成する

    leave a comment

    SQL Server ベースの環境に対しての CI/CD で活用できるツールとして SqlPackage があります。

    Visual Studio Code の Dev Container (開発コンテナー) 上に SqlPackage の実行環境を作成しようかなと思って試してみました。

    SqlPackage に問題がある場合は DacFx のリポジトリ から Issue で報告ができます。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    5月 20th, 2024 at 12:14 am

    Posted in SQL Server

    Tagged with

    SQL Server / SQL Database Update (2024/03/04~2024/05/12)

    leave a comment

    前回の Update: SQL Server / SQL Database Update (2024/01~2024/03/03)

    前回の投稿以降の Update をまとめておきたいと思います。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    5月 12th, 2024 at 8:05 pm

    クエリストアのカスタムキャプチャの設定を行う場合の考慮点

    leave a comment

    SQL Server 2019 以降のクエリストアでは、カスタムキャプチャの設定を行うことができるようになりました。これにより、クエリのキャプチャモードを「ALL」「AUTO」以外に「CUSTOM」で設定することができるようになります。

    「CUSTOM」を使用した場合、キャプチャされるクエリの条件を従来より柔軟に設定することができます。

    「CUSTOM」を設定した場合の設定観点について少しふれておきたいと思います。

    クエリストアの活用については次のドキュメントが参考になります。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    5月 4th, 2024 at 11:51 pm

    Posted in SQL Server

    Tagged with

    SSMS の接続情報を整理する

    leave a comment

    SSMS は接続情報として入力した内容が保存されており、接続を行おうとした場合に再利用することができます。

    image

    自サーバー上の SQL Server にのみ接続をしているのであれば、この情報が増えるということはあまりないですが、クライアントからいくつかのサーバーに接続している場合にはこの情報が増えていき、今は接続が不要になったサーバーの情報も残った状態となっていることがあります。

    接続の情報は SSMS の構成ファイルである 「UserSettings.xml」に記録が行われており、この XML から接続情報を削除することで、表示が行われなくなります。

    ファイルは「%USERPROFILE%\AppData\Roaming\Microsoft\SQL Server Management Studio」に SSMS のバージョンごと (18.0 / 19.0 / 20.0 等のディレクトリ) に保存されています。

    不要となった情報は

    1. SSMS を起動していない状態にする
      • SSMS を起動していると、SSMS を閉じた場合に修正した情報が初期化されてしまう可能性があるため
    2. UserSettings.xml を直接編集し、不要となったサーバーの接続情報を削除

    することでクリアすることができます。

    XML の階層としては「SqlStudio > SSMS > ConnectionOptions > ServerTyes > Element」配下に保存されています。

    image

    UserSettings.xml は情報量が多い XML ですので、メモ帳で修正するよりは、Visual Studio Code で XML を編集して、不要となったサーバー情報の Element をブロック単位で削除したほうが効率が良いかと。

    Written by Masayuki.Ozawa

    5月 4th, 2024 at 11:36 am

    Posted in SQL Server

    Tagged with

    SQL Server のフィルター選択されたインデックスの利用について

    leave a comment

    SQL Server では フィルター選択されたインデックス (フィルター化インデックス) というインデックスを作成することができます。

    このインデックスはインデックスの作成を行う際に、以下のクエリのように、インデックス作成時に WHERE 句を指定することで、特定の範囲のデータのみが含まれたインデックスを作成することができます。

    CREATE NONCLUSTERED INDEX [NCIX_accesslog2_01] ON [frontdoor].[accesslog2]
    (
    	[time] ASC
    )
    WHERE ([time]>='2020-01-01' AND [time]<'2021-01-01')
    

    フィルター選択されたインデックスは、特定のデータ範囲のみがインデックスに含まれますので次のようなメリットがあります。

    • インデックスで使用されるストレージサイズの削減
    • フィルター外のデータを追加 / 変更する場合のインデックス更新コストの削減
    • 該当データ範囲で Index Scan が発生した場合の、Scan コストの削減

    特定のデータ範囲の検索向けに作成するインデックスとして便利な機能となるのですが、作成したインデックスが使用されるかどうかについては考慮が必要な点がありますので、本投稿で触れておきたいと思います。

    フィルター選択されたインデックスの詳細な情報については次のドキュメントが参考となります。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    4月 25th, 2024 at 10:34 pm

    Posted in SQL Server

    Tagged with