Azure Stack ではストレージアカウントも作成できますので、このストレージアカウントと SQL Server の連携機能についても少し試してみました。
Azure Stack のストレージアカウントの作成については、次のような設定となっています。
■ストレージの操作
Azure Stack のストレージですが、Storage Explorer で接続することができるようになっているようです。
Connect to an Azure Stack subscription
使っている環境でうまく接続できなかったので、最終的な動作は未確認ですが…。
■バックアップ先として Azure Stack のストレージを利用
Windows Server 2016 以降で使用できるようになった「ブロック BLOB」に対してのバックアップについては、Azure Stack のストレージをバックアップ先として使用することができそうです。
チュートリアル: Azure Blob Storage サービスと SQL Server 2016 データベースの使用
ただし、資格情報の作成は master データベースに対して実施するため、SQL Server に対しての管理者アカウントで作業をする必要があり、データベースの利用ユーザーでは作業はできないかと。
ページ BLOB のバックアップについては、ストレージアカウントしか設定することができないのですが、ブロック BLOB へのバックアップについては、ストレージアカウントの FQDN を資格情報として登録することができるため、Azure Stack を保存先として使用できるようです。
今回は「sqlserverstorage」というストレージアカウントと、そのアカウント内に「backup」というコンテナーを作っているのですが、その場合は、以下のようなクエリで資格情報を作成します。
USE master GO CREATE CREDENTIAL [https://sqlserverstorage.blob.local.azurestack.external/backup] WITH IDENTITY='SHARED ACCESS SIGNATURE' , SECRET = 'sv=~ の SAS トークン' GO
これで、ストレージに対してバックアップを取得することができます。
リストアについても実施できたので、バックアップの保存先として利用することはできそうですね。
BACKUP DATABASE [DB001] TO URL = 'https://sqlserverstorage.blob.local.azurestack.external/backup/DB001.bak' WITH COMPRESSION, STATS = 5 USE [master] ALTER DATABASE [DB001] SET SINGLE_USER WITH ROLLBACK IMMEDIATE BACKUP LOG [DB001] TO URL = N'https://sqlserverstorage.blob.local.azurestack.external/backup/DB001_LogBackup_2017-07-08_10-22-12.bak' WITH NOFORMAT, NOINIT, NAME = N'DB001_LogBackup_2017-07-08_10-22-12', NOSKIP, NOREWIND, NOUNLOAD, NORECOVERY , STATS = 5 RESTORE DATABASE [DB001] FROM URL = N'https://sqlserverstorage.blob.local.azurestack.external/backup/DB001.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5 ALTER DATABASE [DB001] SET MULTI_USER GO
■データベースの作成先として Azure Stack のストレージを使用
Azure ストレージについてはデータベースの作成先としても使用することが可能です。
チュートリアル: Windows Azure ストレージ サービス内の SQL Server データ ファイル
バックアップで使用した資格情報の作成と同じ形式で、データベースの作成先としての Azure ストレージの資格情報を作成することができます。
データベースの作成先として使用したコンテナーに対しての資格情報が作成されていれば、データベースの作成先として Azure Stack の領域を使用することが可能なようです。
CREATE DATABASE TestDB1 ON (NAME = TestDB1_data, FILENAME = 'https://sqlserverstorage.blob.local.azurestack.external/database/TestDB1Data.mdf') LOG ON (NAME = TestDB1_log, FILENAME = 'https://sqlserverstorage.blob.local.azurestack.external/database/TestDB1Log.ldf') GO