SE の雑記

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

Archive for the ‘SQL Server’ tag

sys.databases をカーソルで参照する場合は、Snashot ベースのカーソルを使用することで動作が安定するというお話

leave a comment

先日 SQL Server のカーソルの動作を把握する という投稿しましたが、sys.databases をカーソルで参照する際には、Snapshot ベース音カーソルを使用したほうが動作が安定するかと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

7月 19th, 2023 at 7:11 pm

Posted in SQL Server

Tagged with

ワークグループクラスター (ドメインに依存しないクラスター) では Failover Cluster Instance を構築することはできません (2023-07 時点)

leave a comment

Windows Server 2016 以降は、ドメインのメンバーでなくてもクラスターを構築することができるワークグループクラスターの機能が追加されました。

ワークグループ クラスター (ドメインに依存しないクラスター) の Windows Server での構築方法については、Workgroup and Multi-domain clusters in Windows Server 2016 に記載されており、この方法を使用することでワークグルプ環境でも Windows Failover Cluster (WSFC) を構築することができます。

ワークグループクラスターは SQL Server の可用性環境の構築でも活用することができるのですが、Always On Failover Cluster Instance (FCI) では使用することはできません。

現時点では、ワークグループクラスターで構築ができる可用性環境は Always On Availability Group (AG) のみとなります。

最近 TechNet フォーラムで 本件についての質問 があったのですが、ワークグループクラスターで FCI がサポートされてないことを明記した情報が探しづらいかなとも感じましたので情報をまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

7月 19th, 2023 at 10:56 am

Posted in SQL Server

Tagged with

SQL Server の Assertion のダンプについて

leave a comment

SQL Server ではダンプが出力されるエラーの種類としては、[A15] SQL Server Trouble Shooting Tips from Support Team by Takashi Honma で解説されている次のような種類があります。

  • Access Violation
  • Assertion
  • Latch Timeout
  • Non-yielding Scheduler
  • Deadllock Schedulers
  • Non-yielding Resource Monitor
  • Non-yielding IOCP Listener

この中で Assertion (アサーション) のダンプについてまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

7月 17th, 2023 at 9:09 pm

Posted in SQL Server

Tagged with

SQL Server のカーソルの動作を把握する

leave a comment

SQL Server のカーソルの動作について、理解が薄い個所がありましたので、調べた内容をまとめておこうと思います。

カーソルについては次の情報を参考にするのが最初のステップとなるかと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

7月 17th, 2023 at 2:10 pm

Posted in SQL Server

Tagged with

SQL Server エージェントのジョブ所有者がローカルアカウントを使用している場合の挙動について

leave a comment

以前、SQL Server エージェントで Transact-SQL を実行する際に使用されるログインについて という投稿を書きました。

この投稿の中では、sysadmin ロールに含まれていないログインをジョブの所有者に設定した場合の挙動に触れてみました。
ジョブの所有者が sysadmin ロール以外で、Windows 認証のログインを使用している場合、OS 側のログインが無効の状態になっている場合、どのような挙動となるかについて確認する必要がありましたので、その内容をまとめておきたいと思います。

ローカルアカウントではなく、ドメインアカウントを対象としたものについては、次の情報を確認してください。

Read the rest of this entry »

Written by Masayuki.Ozawa

7月 12th, 2023 at 10:38 pm

Posted in SQL Server

Tagged with

DBCC SHRINKFILE の WAIT_AT_LOWPRIORITY について

leave a comment

SQL Server 2022 / SQL Database / Managed Instance では、データベースのファイルサイズを削減するためのコマンドである、DBCC SHRINKFILEWAIT_AT_LOWPRIORITY というオプションが追加されました。

このオプションを使用した場合のデータファイルのサイズ縮小について動作を把握しておきたかったので、調べてみました。

Read the rest of this entry »

Written by Masayuki.Ozawa

6月 21st, 2023 at 11:25 pm

SQL Server で接続のプロセスの途中でコネクションタイムアウトを発生させる

leave a comment

SQL Server でコネクションタイムアウトを発生させる方法としては、

  • 存在しないサーバーに対しての接続
  • シングルユーザーモードのデータベースに対しての接続

を実行することでコネクションタイムアウトを発生させるという方法があります。

これらの方法では初期の接続ができないためエラーとなりますが、運用環境でコネクションタイムアウトが発生するケースとしては接続プロセスの途中で、タイムアウトの設定秒数に達したため、コネクションタイムアウトが発生するということがあります。

このコネクションタイムアウトの状態を意図的に発生させるための方法を残しておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

6月 19th, 2023 at 11:08 pm

Posted in SQL Server

Tagged with

SQL Server 2022 で追加された query_antipattern を使用したクエリ情報の取得

leave a comment

Bob Ward の SQL Server 2022 Hidden Gems で解説されているのですが、SQL Server 2022 ならびに Azure SQL Database では、query_antipattern という拡張イベントが追加されています。

MS のブログでも紹介されており、最近、新しい記事も公開されました。

この拡張イベントについて、本ブログでも触れておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

6月 18th, 2023 at 5:30 pm

Manaed Instance の TDE を無効化した DB を SQL Server 2022 にリストアする際の注意点

leave a comment

※Azure SQL Managed Instance から SQL Server 2022 へのリストアだけでなく、異なる SQL Server インスタンス間のリストアでも該当します。

Azure SQL Managed Instance (MI) で取得したバックアップについては、SQL Server 2022 にリストアすることができます。

MI からリストア可能なバックアップについては、ユーザーが任意のタイミングで取得したバックアップとなるので「COPY_ONLY」オプションを使用して取得したバックアップの必要があります。

MI で COPY_ONLY バックアップを取得するには条件があり、次のいずれかの条件を満たしている必要があります。

  1. TDE で暗号化されていないデータベース
  2. ユーザーマネージドキーを使用して TDE を設定している

「サービスマネージドキー」による TDE については、TDE のキーをユーザーが制御できないものとなるため、サービスマネージドキーを使用し TDE を実行している DB については、COPY_ONLY バックアップを取得することができません。

今回は「1.」で記載した TDE を無効にした状態のバックアップを SQL Server 2022 にリストアする際の注意点となります。

「2.」についても、SQL Server 2022 にリストアすることができるのですが、SQL Server 2022 では、Azure Key Vault を使用した SQL Server TDE 拡張キー管理を設定する の設定で、ユーザーマネージドキーの Key Vault へのアクセスをする必要があり、こちらはこちらで面倒ではあるのですが、それについては別の投稿で書こうと思います。

本投稿で対象としている TDE の無効化ですが、「TDE を有効にしている DB で、TDE を無効に変更」した場合が該当します。
「最初から TDE を無効の状態にしている DB」については、本投稿の事象は発生しません。

Read the rest of this entry »

Written by Masayuki.Ozawa

6月 10th, 2023 at 3:15 pm

go-sqlcmd で sqlconfig が設定されている場合のログイン名を指定した接続について

leave a comment

コマンドラインで SQL Server ベースの環境に接続するためのツールとしては従来の sqlcmd の他に、Go 言語を使用して作成されている go-sqlcmd があります。

go-sqlcmd は 従来の sqlcmd の同様のクエリを実行する機能 が含まれています。この機能のほかに、Use sqlcmd to create local SQL Server and Azure SQL Edge instances で解説されている SQL Server のコンテナーを作成する機能を使用することができます。

コンテナーの作成をするとユーザープロファイルのディレクトリに「.sqlcmd\sqlconfg」というファイルが作成されるのですが、このファイルの設定が影響して、go-sqlcmd の動作が従来の動作とは変わる可能性があります。

Read the rest of this entry »

Written by Masayuki.Ozawa

6月 6th, 2023 at 8:29 pm

Posted in SQL Server

Tagged with