SE の雑記

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

SQL Server on Azure VM の AlwaysOn 可用性グループで DNN がサポートされました

one comment

DNN については、以前、Lift and Shift Always On SQL Server Failover Cluster Instance (SQL FCI) to Azure VMs で、SQL Server 2019 CU2 を適用することで、Failover Cluster Instance のサポートが行われていました。

今回、Released: Support for Dynamic Network Names (DNN) Listeners for Always On Availability Groups でアナウンスがあり、SQL Server 2019 CU8 を適用することで、SQL Server on Azure VM で AlwaysOn 可用性グループを構築する際に、可用性グループのリスナーで DNN (Dynamic Network Names) Listeners がサポートされるようになりました。

これにより、AlwaysOn 可用性グループにアクセスする際にロードバランサーを使用することなくアクセスができるようになります。
関連情報は次のドキュメントとなります。(投稿を書いている時点では、英語版にのみ情報が公開されています)

Read the rest of this entry »

Written by Masayuki.Ozawa

10月 20th, 2020 at 9:34 pm

Synapse Link for Cosmos DB を SQL Ondemand で操作する場合のメモ

leave a comment

Synapse Link for Cosmos DB を SQL Ondemand (Serverless SQL Pool) で操作する場合のメモを。

SQL Ondemand なのか、Serverless SQL Pool なのかがよくわからないので、どちらでもヒットするようにしています (遠い目)

ドキュメントとしては次の内容をベースとしています。

Read the rest of this entry »

Written by Masayuki.Ozawa

10月 20th, 2020 at 8:51 am

Synapse Analytics の Serverless SQL Pool (SQL on-demand) でテキストを参照する際の文字コードの設定 (おまけで Synapse Link for Cosmos DB)

leave a comment

Synapse Analytics の Serverless SQL Pool (SQL on-demand) では、BLOB / ADL Gen2 上のファイルに対してクエリを実行することができます。

同様の内容を実現する機能としては、Azure Data Lake Storage のクエリ アクセラレーション があります。
こちらについては、しばやん先生が Azure Data Lake Storage の Query Acceleration が GA になったので試したら最高だった で機能の解説をされています。

この機能の比較をするために検証していたときに「そういえば、Serverless SQL Pool で、テキストを読むとき文字コードって何にする必要があったっけ?」と思い、軽く検証してみました。

今回は Shift-JIS / UTF8? / UTF16 LE の 3 パターンで検証しています。

使用しているデータは、本ブログのアクセスログを CSV に出力したものです。
image

シンプルな構成にするのであれば、次のような構成をしておけばいいのではないでしょうか。

  • ファイルは UTF8 のエンコードを使用する
  • データベースの照合順序は _UTF8 を使用する
    • 日本語環境の SQL Server の照合順序と同様にするのであれば、次の照合順序のいずれかを使用しておけば、最新のUnicode を考慮した文字コード体系になる
      • Japanese_XJIS_100_CI_AS_SC_UTF8
      • Japanese_XJIS_140_CI_AS_UTF8
    • 基本的な検索であれば、任意の照合順序に「_UTF8」を設定したものであれば、ある程度カバーできるはず
  • 検索条件で、文字列リテラルを使用する場合、「N’xxxxx’」の Unicde 変数で検索を行う。

Read the rest of this entry »

Written by Masayuki.Ozawa

10月 18th, 2020 at 12:20 am

Posted in Synapse Analytics

Tagged with

Windows Server 2019 でパフォーマンスモニターのログの世代管理を実施

leave a comment

インサイトテクノロジーさんの db tech showcase ONLINE 2020 で、次のセッションを担当させていただきます。

image

本セッションでは、パフォーマンスモニターや、動的管理ビュー (DMV) の情報を使用したベースライン取得の基本的なアプローチについてお話をさせていただく予定です。

セッション資料を作成していて「そういえば Windows Server 2019 でデータコレクションの自動起動が動かない件があったな」ということを思い出したので情報をまとめておこうかと。

基本的には、次の記事を把握しておけば問題ないはずです。

今回は、スクリプトは作成せずに、GUI からの操作でできる範囲で対応していますが、本来は、logman 等を使用したタイマー起動 / 終了と、スクリプトによるファイルの削除を実施したほうが良いかと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

10月 14th, 2020 at 5:04 pm

Windows Server 2008 の検証環境作成時についてのメモ

leave a comment

2020/10 時点で Windows Server 2008 の検証環境を構築(サポートが切れていても検証で環境を構築しないといけないときがあるのです)していた際に気づいた内容のメモを。

久しぶりに古い OS を Windows Server 2019 から触ろうとしたら、いろいろと設定忘れていました。

本投稿では、Windows Server 2008 SP2 インストール直後の環境にたいして、最新の Windows Update を適用している Windows Server 2019 で接続を行っています。

Read the rest of this entry »

Written by Masayuki.Ozawa

10月 12th, 2020 at 8:37 pm

Posted in Windows Server

Tagged with

「実行中のクエリ」で実行時のパラメーターを取得する

leave a comment

SQL Server でパラメーター化クエリ (パラメータークエリ) を使用した場合、「クエリコンパイル時のパラメーター」を意識することがあるかと思います。(パラメーター化クエリだけでなく、ストアドプロシージャも同様ですが)

これは、「パラメーター スニッフィング」という、クエリのコンパイルが発生した際に、コンパイル時に使用されたクエリのパラメーターを傍受し、オプティマイザーがクエリの最適化を行うためです。

次のクエリを実行したタイミングでコンパイルが発生したとします。

sp_executesql 
N'SELECT * FROM LINEITEM WHERE L_ORDERKEY >= @orderkey', 
N'@orderkey int',
@orderkey = 300000000

 

この場合、パラメーター スニッフィングにより、「@orderkey = 300000000」というパラメーターによって最適化されたクエリとしてコンパイルが行われます。。

今回は上記のクエリのハッシュ値がわかっているため、キャッシュされているクエリの情報を取得してみます。

SELECT 
    qp.query_plan
FROM 
    sys.dm_exec_query_stats AS qs
    OUTER APPLY sys.dm_exec_query_plan(plan_handle) AS qp
WHERE 
    query_hash = 0x3B2744F6B4DC1A74

 

キャッシュされているクエリの実行プランには、「パラメーター リスト」という情報が含まれています。

image

実行プランの XML で確認した場合には、次のような情報です。

            <parameterlist>
              <columnreference Column="@orderkey" ParameterDataType="int" ParameterCompiledValue="(300000000)"></columnreference>
            </parameterlist>

 

この情報から、キャッシュされているパラメーター化クエリの実行プランは、どのようなパラメーターによって、生成されたのかを確認することができます。

Read the rest of this entry »

Written by Masayuki.Ozawa

10月 6th, 2020 at 11:06 pm

「新しい仮想クラスターで作成された」Azure SQL Managed Instance でグローバル VNET ピアリングがサポートされました

leave a comment

Ingite 2020 でアナウンスが行われましたが、「新しく作成した」Azure SQL Managed Instance (MI) に関してはグローバル VNET ピアリングがサポートされるようになります。

Read the rest of this entry »

Written by Masayuki.Ozawa

9月 27th, 2020 at 1:45 pm

Posted in SQL Database

Tagged with

Ignite 2020 の SQL Server / SQL Database のセッション

leave a comment

Ignite 2020 で発表された SQL Server / SQL Database 関連の更新情報 はアナウンスのあった情報ですが、セッションについても確認できた内容から、少しずつまとめていこうかと。

Azure SQL Family の更新情報については、Azure SQL: What to use when and updates from the Product Group のセッションでまとめられており、最新のアップデートについて紹介が行われています。

imageimage
imageimage

 

Read the rest of this entry »

Written by Masayuki.Ozawa

9月 24th, 2020 at 2:13 pm

Ignite 2020 で発表された SQL Server / SQL Database 関連の更新情報

leave a comment

Ignite 2020 に合わせて SQL Server / SQL Database 関連の情報がアップデートされていますのでまとめて。

公式の情報は Microsoft Ignite 2020 Book of News から確認でき、日本語版 も公開されています。

 

データ関連の全体的なアナウンスについては、次の記事とセッションを見ると良いかと思います。

  • What’s new in Azure SQL Managed Instance at Ignite 2020
  • Azure SQL: What to use when and updates from the Product Group
  • Azure Synapse Analytics: Powering data exploration and data warehousing with new features
  • Making sense of Azure and Azure Arc deployment options for SQL Server
  • Microsoft Ignite Announcements 2020
  •  

    Making sense of Azure and Azure Arc deployment options for SQL Server で公開されていますが、Azure 上で動作する SQL Server ベースの環境もだいぶ増えましたね。

     

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    9月 23rd, 2020 at 12:17 am

    Synapse の BroadcastMove / ShuffleMove の動作について

    leave a comment

    Synapse Analytics では、データの移動について、

    • BroadcastMoveOperation
    • ShuffleMoveOperation

    という 2 種類の操作を目にする機会が多いかと思います。

    これらの動作については、次のドキュメントなどに情報が記載されています。

    Synapse の SQL Pool に関しては、Analytics Platform System (APS) という、以前は、Parallel Data Warehouse (PDW) と呼ばれていたシステムがベースになっており、基本的な考え方については、並列データウェアハウスコンポーネント-分析プラットフォームシステム の情報も参考になるケースがあります。

     

    クエリの操作については、Analytics Platform System Appliance Update 5 Documentation and Client Tools からダウンロードできるドキュメントが今でも一番情報が記載されているのではないでしょうか。

    このドキュメント内には、BroadcastMoveOperation と ShuffleMoveOperation についても記載されています。

    • BroadcastMoveOperation
      • 分散データをレプリケートされたテーブルに移動する
      • この操作は、ディストリビューションと互換性のない結合を実行しているときに使用される機会がある。
      • この操作を実行するために、各ディストリビューションは、該当の行をすべてのComputeノードにブロードキャストする。
      • その結果、各Computeノードは、自分の行に他のComputeノードから受け取ったすべての行を加えて、レプリケートされたテーブルを作成する。
    • ShuffleMoveOperation
      • 分散されたテーブルを再配布する。
      • 再配布されたテーブルは、元の分散テーブルとは異なる分散カラムを持ち、これは、互換性のない結合や互換性のない集約を実行している場合に使用されることがある。
      • この操作を実行するために、DMSは、各行を分散先のテーブルの分布列に従って正しい計算ノードに移動する。
      • 既に正しいComputeノードに格納されている行は、この操作中はコピーされない。

    というような記載があります。

     

    基本的には、ディストリビューションに格納されていないデータ間での結合や集計が発生した際に、他のディストリビューションのデータを再配布することで必要なデータをコピーする処理となるのですが、どのような動作が実行されているかについて、まとめたことがなかったので、この機会にまとめておこうかと思います。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    9月 22nd, 2020 at 11:57 pm

    Posted in Synapse Analytics

    Tagged with