1.前提:
.Azure VMが作成済み。さらに中にSSMSがインストール済み。
.AzureにてSQL managed instance 作成済み。
.bakファイル保存のstorage account作成済み。(containerも作成済み)
2.目標
.SQL managed instanceに接続して、databaseのbackupとrestore作業を実施する。
3.作業実施
早速始めましょう。
3.1 MIはAzureVMから接続することです。SQL databaseのようにlocalから接続はできません。
Azure VMに接続することも苦労しました。NetworkingにDenyALLinBoundが設定されているため接続は拒否されました。仕方なく、High priorityでlocalPCのIPを接続できようにinbound ruleを追加しました。
これでようやくまずVMに接続できました。
3.2VMから接続。ここは安易に行きました。
3.3databaseには暗号化かけているかどうかを確認します。
SELECT
db.name,
db.is_encrypted,
dm.encryption_state,
dm.percent_complete,
dm.key_algorithm,
dm.key_length
FROM
sys.databases db
LEFT OUTER JOIN sys.dm_database_encryption_keys dm
ON db.database_id = dm.database_id;
encryption_stateは3です、つまり暗号化かけています。
3.4暗号化かけている場合、Backupはできないため、暗号化をOFFする必要があります。
ALTER DATABASE test1 SET ENCRYPTION OFF;
確認すると、stateは1なりました。
しかしここではまたBackup作業はできません。なぜなら、暗号Keyをも削除する必要があります。
DROP DATABASE ENCRYPTION KEY;
3.5 よし、Backup to storage accountをやってみよう。
BACKUP DATABASE test1 TO URL = N'https://tantestbkstorage.blob.core.windows.net/tanbackup/test11.bak' with copy_only, compression;
Oh errorがでました。
Msg 3201, Level 16, State 1, Line 9
Cannot open backup device 'https://tantestbkstorage.blob.core.windows.net/tanbackup/test11.bak'. Operating system error 50(The request is not supported.).
Msg 3013, Level 16, State 1, Line 9
BACKUP DATABASE is terminating abnormally.
忘れました。ここではまずdatabaseからstorageaccountに接続できる資格情報の登録が必要です。
早速Azure portalのStorage accountに行って、SAStokenを取ります。
そして、DBに下記のSQLで資格情報を登録します。
CREATE CREDENTIAL [https://tantestbkstorage.blob.core.windows.net/tanbackup]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE'
, SECRET = 'sv=2019-02-02&ss=bfqt&srt=sco&sp=rwdlacup&se=2020-04-16T02:50:17Z&st=2020-04-16T02:46:17Z&spr=https&sig=sI5pklF%2B07JTzUsXRaQL5FIaTgyxx9LSL8y8MqUcu%2Bc%3D'
BACKUP DATABASE test1 TO URL = N'https://tantestbkstorage.blob.core.windows.net/tanbackup/test11.bak' with copy_only, compression;
3.6 さっきbackupしたtest11.bakファイルでrestoreをやりました。
RESTORE DATABASE test11 FROM URL = N'https://tantestbkstorage.blob.core.windows.net/tanbackup/test11.bak'
もちろん成功しました。
では暗号化をONに戻しましょう。
ALTER DATABASE test1 SET ENCRYPTION ON;
追加質問:backup作業の場合、暗号化OFFする必要がありますが、restoreする場合、暗号化OFFにする必要もありますか。
回答は不要です。実機で自分でテストしてみましょうね。
ご清聴、どうもありがとうございました。