SE の雑記

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

SQL Server の「NOLOCK」ヒントは単純なロックを取得しないという動作ではありません

leave a comment

SQL Server には「NOLOCK」というヒント句があります。

基本的な動作については ヒント (Transact-SQL) – Table に記述があり、このドキュメントには次のように記載されています。

READUNCOMMITTED ヒントと NOLOCK ヒントはデータのロックにのみ適用されます。 READUNCOMMITTED ヒントおよび NOLOCK ヒントを含むクエリを含め、すべてのクエリは、コンパイル中と実行中にスキーマ安定度 (Sch-S) ロックを取得します。 このため、同時実行トランザクションがテーブルの Sch-M (スキーマ修正) ロックを保持している場合、クエリはブロックされます。 たとえば、データ定義言語 (DDL) 操作では、テーブルのスキーマ情報を変更する前にスキーマ修正 (Sch-M) ロックを取得します。 READUNCOMMITTED ヒントまたは NOLOCK ヒントを指定して実行しているクエリを含め、すべての同時実行クエリは、スキーマ安定度 (Sch-S) ロックを取得しようとするとブロックされます。 一方、スキーマ安定度 (Sch-S) ロックを保持するクエリによって、スキーマ修正 (Sch-M) ロックを取得しようとする同時実行トランザクションはブロックされます。

ロックについては「Sch-S」のロックが取得され、それ以外のロックについては取られないという動作となる記述がありますが、これ以外の動作として「ダーティーリードを許可する」という動作については意識をしておく必要があります。

これについては、次の記事でも触れられています。

単純なパターンであれば、「コミット前のデータが読み取られるがロック競合を防ぎながらデータにアクセスができる」という用途で使うケースがありますが、それ以外のダーティーページが読み取られる可能性についても考慮しておく必要があります。

Read the rest of this entry »

Written by masayuki.ozawa

9月 11th, 2019 at 11:33 pm

Posted in SQL Server

Tagged with

Agent 1433: remote attack on Microsoft SQL Server を読んでみる

leave a comment

Twitter の TL を眺めていたところ、Agent 1433: remote attack on Microsoft SQL Server が話題になっていましたので、どのような内容なのかを軽く確認してみました。

日本語は、マイナビニュースさんの 世界中で攻撃を受けるMicrosoft SQL Server、パスワードの見直しを で情報を公開されていたようです。

今回の攻撃ですが「直近の数日間で発生した攻撃」ではなく、Kaspersky Lab から公開された、「2019年1月~7月」の期間で、SQL Server の SQL Server Agent を利用した攻撃についての情報となるようです。

「この攻撃がどのような期間で猛威を振るっていたの / 現在も振るっているのか?」は、どのように情報を読むかによって変わってくるのではないでしょうか。

Read the rest of this entry »

Written by masayuki.ozawa

8月 25th, 2019 at 2:44 pm

Posted in SQL Server

Tagged with

Accelerated Database Recovery を実現するために使用されている Persistent Version Store について

leave a comment

SQL Database / SQL Server 2019 では、Accelerated Database Recovery (ADR : 高速データベース復旧) という機能が追加されています。

この機能は、予測可能な一定時間でのデータベースの回復 (Constant Time Recovery : CTR) を実現するために実装されたものであり、次のようなことを実現することができるようになります。

  • 大量のトランザクションのロールバックの高速化
  • SQL Server サービス起動時のデータベース復旧の高速化
  • トランザクションログの積極的な切り捨て

ADR を実現するために、SQL Server では新しく次のような概念が入っています。

  • Persistent Version Store (永続化バージョンボリュームストア) : PVS
  • Secondary Log Stream : sLog

この中の PVS について、調べる機会がありましたので、調べた内容をまとめておきたいと思います。

ADR の詳細については、Accelerated Database Recovery in SQL Server 2019 か、Microsoft が公開している論文の Constant Time Recovery in Azure SQL Database で解説されています。
(論文の方はまだ半分ぐらいまでしか読めておらず…)

Read the rest of this entry »

Written by masayuki.ozawa

8月 24th, 2019 at 9:02 pm

Posted in SQL Server

Tagged with ,

SQL Server 2019 RC1 が公開されました

leave a comment

月次で公開されている SQL Server 2019 の新しい Preview ですが、CTP (Community Technical Preview) から RC (Release Candidate : 製品候補版) に変わり、First RC となる RC1 が公開されました。

アナウンスはこちらから

ドキュメントはこちらから

2019/8/29 に Big Data Cluster も RC1 がリリースされました。

Read the rest of this entry »

Written by masayuki.ozawa

8月 22nd, 2019 at 10:00 am

Posted in SQL Server

Tagged with ,

Hyperscale のトランザクションログの切り捨てタイミングについて

leave a comment

SQL Database の Single Database では、SQL Database バックアップとは に記載されているタイミングでトランザクションログのバックアップが取得され、ログの切り捨てが行われます。

Hyperscale の各種メトリクスを取得して分析すると気づくのですが、Hyperscale については、定期的な間隔ではなく、使用サイズによってトランザクションログの切り捨てが行われるような動作となっているように見えます。

このサイズが何によって決まっているのかを調べてみました。

Read the rest of this entry »

Written by masayuki.ozawa

8月 19th, 2019 at 12:36 am

Posted in SQL Database

Tagged with ,

SQL Data Warehouse のテーブルのデータの偏りによる性能影響

leave a comment

SQL Data Warehouse (SQL DW) は、60 のデータベースに分散してデータを格納した分散テーブルを使用して、透過的にデータを検索することで、効率よくデータを分析することができるアーキテクチャとなっています。

データの分散を適切に実施することがが性能を出す際の重要なポイントとなります。

「分散の方式を誤り、一つのデータベースにデータが極端に集中した場合、どのような性能的なデメリットが出るか」を数値的に取得したことがなかったため、確認をしてみました。

Read the rest of this entry »

Written by masayuki.ozawa

8月 17th, 2019 at 5:31 pm

コンピューターのグループポリシーの情報をレジストリから取得する

leave a comment

グループポリシーの適用状況を確認する際に「gpresult /R」や「rsop.msc」を使って情報の確認をすることがあるかと思います。

リモートからグループポリシーの適用状況を確認しようとした場合、これら以外の方法で取得できないかを考えたところ、「コンピューターのグループポリシー」であれば、レジストリからも情報が取得することができるようです。

Read the rest of this entry »

Written by masayuki.ozawa

8月 12th, 2019 at 3:52 pm

Posted in Windows Client,Windows Server

Tagged with ,

リリースが終え、ひと段落しての感想

leave a comment

リリース作業が終えて、ひと段落してきましたので、リリースからの感想を。
本投稿は、技術的な要素はないので本当に雑記です。

何のリリースなのかは本文を読んでいるとわかるかもしれませんし、わからないかもしれません。

Read the rest of this entry »

Written by masayuki.ozawa

8月 10th, 2019 at 10:49 pm

Posted in その他

Tagged with

直近の Windows Update の実行状態をスクリプトで取得する

leave a comment

Windows10でのWindows Update関連のレジストリについて に記載されている内容になるのですが、Windows 10 / Windows Server 2016 以降で、直近の Windows Update の実行状態を確認する方法を。

イメージとしては、「設定」の次の画面の表示に近い内容の取得方法です。

image

Read the rest of this entry »

Written by masayuki.ozawa

8月 10th, 2019 at 6:30 pm

Posted in Windows Client,Windows Server

Tagged with

アーティクルの追加 / 削除を実施する可能性があるレプリケーションの設定の考慮点

leave a comment

雰囲気でレプリケーションを使用していたので気づいていたなかったのですが、レプリケーションに対してアーティクルの追加を実施する場合、レプリケーションの作成時に考慮しておいた方が良い点がありますのでメモとして。 Read the rest of this entry »

Written by masayuki.ozawa

8月 5th, 2019 at 12:42 am

Posted in SQL Server

Tagged with