SE の雑記

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

SQL Server と Azure ストレージを組み合わせたデータベースの利用について (2018/2 版)

leave a comment

SQL Server はバージョンアップによって、Azure ストレージを使用して DB の領域として使用することができる機能が増えています。

  • SQL Server 2012 SP1 CU2 以降 : バックアップの取得先として利用可能 (ブロック BLOB)
  • SQL Server 2014 以降 : データベースのファイル格納先として利用可能
  • SQL Server 2016 以降 : ページ BLOB を使用してバックアップを取得可能
  • SQL Server 2017 以降 : メモリ最適化グループ用のファイルグループとして利用可能

Azure のストレージも、

  • 汎用ストレージ v1
  • 汎用ストレージ v2
  • BLOB ストレージ

と様々なものがあります。

SQL Server のデータベースとしてどのようなものが使うことができるか一度整理してみました。

データベース用途としては、BLOB ストレージ / Azure Files を使用することになるかと思いますが、私が検証してみたところ次のようになっていました。

BLOB ストレージ

 

DB の作成

バックアップ
(ブロック BLOB)

バックアップ
(ページ BLOB)

スナップショット
バックアップ

FILESTREAM

In-Memory OLTP

汎用Storage v1

  • Standard


(SoL 2017 CU3 NG )

×


(2017 以降)

汎用Storage v1

  • Premium

×

×


(.bak の作成先は Standard を指定)

×


(2017 以降)

汎用Storage v2

  • Standard


(SoL 2017 CU3 NG )

×


(2017 以降)

汎用Storage v2

  • Premium

×

×


(.bak の作成先は Standard を指定)

×


(2017 以降)

BLOB ストレージ

  • Standard

×

×

×

×

×

Azure Files

 

DB の作成

バックアップ

スナップショット
バックアップ

FILESTREAM

In-Memory OLTP

Storage (汎用 v1)

  • Standard

×

Storage (汎用 v1)

  • Premium

 

 

 

 

 

StorageV2 (汎用 v2)

  • Standard

×

StorageV2 (汎用 v2)

  • Premium

 

 

 

 

 

BLOB ストレージ

  • Standard

 

 

 

 

 

 

汎用ストレージ v1 / v2 については、SQL Server 2017 で、In-Memory OLTP 用の領域として使用できるようになったため、ファイル保存用途の FILESTREAM 以外のデータ格納領域として、Azure ストレージを利用できるようになっています。

Azure Files については、BLOB ストレージ上の配置ですが、直接の DB ファイル配置とは異なり、スナップショットバックアップ (BACKUP DATABASE を、WITH FILE_SNAPSHOT で取得) を取得することができません。

汎用ストレージについては、バックアップの取得先としてしか使用できないようで、基本的には汎用ストレージを使用しておけばよさそうです。

バックアップについて注意しておきたい点としては、「SQL Server 2017 CU3 on Linux」では、ブロック BLOB へのバックアップは取得できるのですが、ページ BLOB については取得できないようです。

ページ BLOB にバックアップを取得する際は、「BackupToUrl.exe」が使用されていますが、これが、on Linux にはまだ実装されていないようで、エラーとなってしまうようです。

SQL Server 2017 では、「sys.dm_os_enumerate_filesystem」というDMF が追加されており、SQL からファイルの情報を取得することができます。

Windows の環境で、次のクエリを実行すると情報が取得できます。

SELECT * FROM sys.dm_os_enumerate_filesystem('C:\Program Files\Microsoft SQL Server\', 'BackuptoURL.exe') order by 1

image

Linux の環境ではパスが異なるので、次のように実行してみます。

SELECT * FROM sys.dm_os_enumerate_filesystem('/binn', 'BackuptoURL.exe') 

この場合、取得結果がなく、「BackuptoURL.exe」が含まれていないことが確認できます。

SQL Server がバージョンアップすると、対応状況が変わってくると思いますので、随時更新した投稿を書いていきたいと思います。

Written by masayuki.ozawa

2月 12th, 2018 at 7:39 pm

Posted in SQL Server

Tagged with

Leave a Reply

*