web-dev-qa-db-ja.com

OlaHallengrensデータベースバックアップを使用するとURLへのバックアップが機能しない

Ola Hallengrens DBバックアップを使用していて、URLパラメーターで機能させようとしています。

私は最初に次のSQLを使用してSQLで共有アクセス資格情報を設定しました

USE MASTER  
CREATE CREDENTIAL [https://exampleblob.blob.core.windows.net/backups] 
WITH IDENTITY='SHARED ACCESS SIGNATURE'
,SECRET = 'sv=2015-04-05&ss=bf&srt=sco&sp=rwd&se=2030-11-14T20:07:06Z&st=2016-11-13T12:07:06Z&spr=https&sig=KEY'
GO  

次に、ログバックアップのメンテナンスプランで次のものを使用してみました。

sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d DBATools -Q \
"EXECUTE [dbo].[DatabaseBackup] \
@Databases = 'USER_DATABASES', \
@BackupType = 'LOG', \
@Verify = 'Y', \
@Compress = 'Y', \
@CheckSum = 'Y', \
@LogToTable = 'Y', \
@ChangeBackupType='Y', \
@url='https://exampleblob.blob.core.windows.net/backups', \
@Credential='https://exampleblob.blob.core.windows.net/backups'" -b

ただし、ジョブを実行すると、次のエラーが発生します

WITH CREDENTIAL構文の使用は、共有アクセス署名を含む資格情報には無効です。

1
Peuge

この問題が発生し、SQLServerでメンテナンスプランを作成しました。デフォルトのバックアップ保守計画では、WITH CREDENTIALを含むスクリプトが作成されますが、そのデフォルトのタスクを削除すると、スクリプトを機能させることができました。そのため、T-SQLステートメントの実行タスクで次のコードを使用することになりました。

declare @backuptime as varchar(250);
set @backuptime = 'https://youraccountname.blob.core.windows.net/backups/mytestdb_' + CONVERT(VARCHAR(19), GETDATE(), 120) + '.bak';

BACKUP DATABASE yourdb   
    TO URL = @backuptime
1
Erik Jansen

「データベースタスクのバックアップ」のプロパティを開き、「CredentialName」を空に設定すると、プランを保存してジョブを実行することが実際に成功します。

SSMS13.0.16100.1で試してみました

1