SE の雑記

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

Archive for the ‘SQL Server’ Category

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

改めて SQL Server 2017 以降のライフサイクルサポートポリシー

leave a comment

SQL Server 2017 からは、Service Pack が廃止され、新しいサービスモデルによる更新プログラムの提供となりました。

SQL Server 2017 以降は、累積更新プログラム (Cumulative Update: CU) / 一般配布リリース (General distribution release: GDR) による更新プログラムの提供が行われるようになっています。

SQL Server の更新プログラムの提供状況については、SQL Serverの最新の更新プログラムとバージョン履歴 で全体を把握することができるようになっています。

ライフサイクルサポートポリシーは 固定ライフサイクル となっており、5 年間のメインストリームサポートと 5 年間の延長サポートの合計 10 年となっています。(最近は 拡張セキュリティ更新プログラム (ESU) でさらに 3 年間延長できますが)

各バージョンのサポート期限は 製品およびサービスのライフサイクル情報の検索 で確認することができます。

昨年の話になるのですが、SQL Server 2017 のメインストリームサポートが終了し、2017 は現在延長サポートのフェーズとなっています。

image

今年になり、GDR も提供が行われメインストリームサポート終了後の更新プログラムの提供について、実際の提供ベースで情報がまとまってきましたので、SQL Server 2017 以降のライフサイクルサポートポリシーを改めてまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

5月 15th, 2023 at 9:50 am

Posted in SQL Server

Tagged with

SQL Server 2022 hidden gems: query_abort を使用したクエリのエラー原因の取得

leave a comment

SQLBits 2023 の Bob Ward の SQL Server 2022 hidden gems で紹介されていたのですが、SQL Server 2022 で追加された query_abort という拡張イベントが、今後の SQL Server でエラーの原因を取得する際に活用できそうでしたので情報を残しておこうと思います。

この拡張イベントについては SQL Server 2022 Revealed でも触れられています。

Read the rest of this entry »

Written by Masayuki.Ozawa

5月 14th, 2023 at 9:57 pm

SQL Server 2022 / Managed Instance のリンクサーバーでの SQLNCLI の利用について

leave a comment

最近、SQL Server のリンクサーバーのプロバイダーを見ていて気づいたのですが、SQL Server 2022 では、SQLNCLI11 がリンクサーバーのプロバイダーから削除されていました。

左が SQL Server 2022 / 右がそれより前のバージョンの SQL Server のリンクサーバーのプロバイダーとなるのですが、2022 では SQLNCLI11 が削除されていますね。

image

最近、次のアナウンスが行われ、Managed Instance でも SQLNCLI (SNAC) に対しての対応が行われたようです。

Read the rest of this entry »

Written by Masayuki.Ozawa

5月 6th, 2023 at 9:50 pm

SQL Server を使用したモダンな開発のために把握しておきたいツールのメモ

leave a comment

この領域は情報のキャッチアップができていなかったのですが、そろそろ少しずつ把握しておかないとなと思い、後で思い出すためのメモを。

SQLBits 2023 の Keynote で紹介されていたツールになります。

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 26th, 2023 at 8:37 pm

Posted in SQL Server

Tagged with

SQL Server PowerShell モジュールをインストールして Microsoft.Data.SqlClient を利用可能にする

leave a comment

SQL Server の最新の機能を使用するためには、System.Data.SqlClient ではなく、Microsoft.Data.SqlClient を使用する必要があります。

以前、PowerShell (7.0.2) で Microsoft.Data.SqlClient 2.0 を使用する という投稿を書いたのですが、Windows PowerShell を使用していて、もう少しシンプルな方法で導入することはできないかと考えてみたところ、SQL Server PowerShell モジュール の存在を思い出しました。

2023/04/06 追記

Microsoft.Data.SqlClient が使用されている 22.x が GA リリースされました。

22.0.59 以降で Preview が外れましたので、現時点では GA 版を使用することができます。

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 26th, 2023 at 3:15 pm

Posted in SQL Server

Tagged with