SE の雑記

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

Archive for the ‘SQL Server’ Category

SQL Server 2022 以降で別名を設定する方法

leave a comment

SQL Server では別名を作成する機能があり、リンクサーバーで別のサーバーに接続を行う場合などにサーバー名のエイリアスを作成して使用することができます。

SQL Server 2019 までは、SQL Server 構成マネージャーで設定を行うことができました。

image

SQL Server 2022 の構成マネージャーでも同様の UI が提供されているのですが、新しい別名を作成することはできなくなっています。(新規に別名を作成しようとしても、サーバー名の入力等ができなくなっています)

SQL Server 2022 以降でも別名を使用することはできますが、作成方法が変わっていますので、本投稿で触れておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 10th, 2024 at 2:47 pm

Posted in SQL Server

Tagged with

ログ配布の復元時に「ユーザーデータベースを切断する」を有効にしても、排他アクセスが取れなくなるケースがあることの原因について

leave a comment

SQL Server の ログ配布 のリストア時の設定として「バックアップの復元時にデータベースのユーザーを切断する」(disconnect_users=1) という設定があります。

image

この設定は、ログ配布でリストアをしているデータベースに対して「スタンバイ モード」を使用してリストアを行い読み取りが可能なデータベースに対して使用することができるオプションとなります。

読み取りが可能な状態でログ配布を使用している場合、ログをリストアする際にログ配布のプロセス (logship.exe) がデータベースを排他的に利用できない場合、リストアを行うことができないため上記のオプションを設定することでリストアの直前に既存の接続を切断することで、ログ配布が排他的にデータベースを設定することができます。

しかし、この設定を有効にしていてログ配布のプロセスが排他的にデータベースを利用することができず、「エラー: データベースは使用中なので、排他アクセスを獲得できませんでした。RESTORE LOG が異常終了しています。(.Net SqlClient Data Provider)」というエラーが発生するケースがあります。

本投稿では「バックアップの復元時にデータベースのユーザーを切断する」を有効にしていても、リストア時の上述の排他エラーが出る理由についてまとめておきたいと思います。

本事象は「スタンバイモード」を使用する場合に発生するものとなり、「復旧モード無し」にしている場合は、リストア状態のデータベースにアクセスすることはできないため、スタンバイモードを利用していない場合には発生しないはずです。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 8th, 2024 at 11:41 pm

Posted in SQL Server

Tagged with

クエリストアの検証のためクエリストアをエラー状態にする方法

leave a comment

クエリストアの状態については sys.database_query_store_options で情報が公開されています。

操作モードの中には「ERROR」という状態があり、ERROR を解消するためには「sp_query_store_consistency_check」を実行する必要があります。

このストアドプロシージャの動作確認を実状態と合わせて行う場合には、クエリストアの状態を ERROR にする必要があります。

イレギュラーな操作となりますが、クエリストアを意図的に ERROR にすることは可能ですので、操作方法を残しておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 25th, 2023 at 9:54 am

Posted in SQL Server

Tagged with

Azure Arc を使用した SQL Server のメトリック収集 (プレビュー機能)

leave a comment

Ignite / PASS で発表された Azure Arc 対応 SQL Server (Azure Arc Enabled SQL Server) の新機能となる、モニターによるメトリック収集 (パフォーマンスダッシュボード) について情報を残しておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 4th, 2023 at 9:52 am

Posted in Azure Arc,SQL Server

Tagged with ,

SQL Server / Azure SQL Update (2023/11: PASS 2023, Ignite 2023)

leave a comment

本日、PASS Data Community SUMMIT 2023 / Ignite 2023 が開催され、SQL Server / Azure SQL の様々な Update が発表されましたのでまとめておこうと思います。

発表の全体については、次の情報から参照することができます。

Ignite 2023

PASS Data Community SUMMIT 2023

Read the rest of this entry »

Written by Masayuki.Ozawa

11月 16th, 2023 at 9:11 am

Posted in Azure SQL,SQL Server

Tagged with ,

クエリストアで取得されるロックを確認する

leave a comment

クエリストアにより情報が取得される仕組みについては クエリ処理 で解説が行われています。

基本的な仕組みとしてはこのドキュメントで解説されている次の図となります。

 

クエリ実行実のいくつかのタイミングでクエリストアの情報にアクセスがされるのですが、処理のタイミングによってはクエリストアに対してロックの取得が行われます。

実行されているワークロードによりますが、クエリストアに対して取得されるロックが同時実行性に影響を与え、クエリストアに関係するロックの解析が必要となるケースがあります。

Read the rest of this entry »

Written by Masayuki.Ozawa

11月 13th, 2023 at 9:12 am

Posted in SQL Server

Tagged with

SQL Server 2022 の blocked_report の出力内容の強化

leave a comment

SQL Server ではブロッキング (ロック競合) 情報を取得する方法として Blocked Process Report イベント クラス の情報を拡張イベントで取得するという手法があります。

SQL Server 2022 では、この情報に出力される内容が強化されていることに先日気づきました。

Read the rest of this entry »

Written by Masayuki.Ozawa

11月 6th, 2023 at 9:41 am

ENABLE_PARALLEL_PLAN_PREFERENCE ヒントを使用した場合に確認しておきたいポイント

leave a comment

SQL Server では「ENABLE_PARALLEL_PLAN_PREFERENCE」という、クエリの並列化のコストを満たしていない状態でも、並列化の指示を出すための ヒント句 がアンドキュメントなクエリヒントとして提供されています。

このクエリヒントを使用すると、シングルスレッドで実行されているクエリを並列化することができる可能性があるのですが、並列化された際に確認をしておきたいポイントがあります。

Read the rest of this entry »

Written by Masayuki.Ozawa

10月 15th, 2023 at 11:43 pm

Posted in SQL Server

Tagged with

SQL Server / SQL Database Update (2023/08 中旬~9 末)

leave a comment

時間が取れず、直近の SQL Server ベースの環境のアップデートをまとめられていませんでしたので、SQL Server / SQL Database Update (2023/08 上旬) 以降に発表されたものをまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

10月 4th, 2023 at 4:44 pm

SQL Server 2016 で特定のクエリの実際の実行プランを容易な操作で取得する

leave a comment

現在の SQL Server では、軽量クエリプロファイリングが提供されており、様々なアプローチで「実行中のクエリの実際の実行プラン」を取得する方法が提供されています。

本機能は SQL Server 2014 SP2 / SQL Server 2016 から実装が行われ、Azure SQL Database / SQL Server 2019 以降では既定で有効になっています。

この機能を活用することで、冒頭に記載した「実行中のクエリの実際の実行プラン」を取得することができます。

Read the rest of this entry »

Written by Masayuki.Ozawa

9月 10th, 2023 at 2:25 pm