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 の作成 |
バックアップ |
バックアップ |
スナップショット |
FILESTREAM |
In-Memory OLTP |
汎用Storage v1
|
〇 |
〇 |
〇 |
〇 |
× |
○ |
汎用Storage v1
|
〇 |
× |
× |
〇 |
× |
○ |
汎用Storage v2
|
〇 |
〇 |
〇 |
〇 |
× |
○ |
汎用Storage v2
|
〇 |
× |
× |
〇 |
× |
○ |
BLOB ストレージ
|
× |
〇 |
× |
× |
× |
× |
Azure Files
|
DB の作成 |
バックアップ |
スナップショット |
FILESTREAM |
In-Memory OLTP |
Storage (汎用 v1)
|
〇 |
〇 |
× |
〇 |
〇 |
Storage (汎用 v1)
|
|
|
< /font> |
|
|
StorageV2 (汎用 v2)
|
〇 |
〇 |
× |
〇 |
〇 |
StorageV2 (汎用 v2)
|
|
|
|
|
|
BLOB ストレージ
< /td> |
|
|
|
|
|
汎用ストレージ 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
Linux の環境ではパスが異なるので、次のように実行してみます。
SELECT * FROM sys.dm_os_enumerate_filesystem('/binn', 'BackuptoURL.exe')
この場合、取得結果がなく、「BackuptoURL.exe」が含まれていないことが確認できます。
SQL Server がバージョンアップすると、対応状況が変わってくると思いますので、随時更新した投稿を書いていきたいと思います。