最近、SQL Server 2016 Web Editionを使用して新しいWindows Server 2012 R2インスタンスを立ち上げ、Azureへの自動バックアップをセットアップしようとしていますが、うまくいきません。最初にAzureでストレージアカウントを作成し、次に共有アクセス署名(SAS)を作成しましたが、そこから迷子になります。ここから、私は試しました:
このスクリプトを使用してローカル資格情報を作成します。
_CREATE CREDENTIAL [BlobUrlWithContainerName]
WITH IDENTITY = '[FriendlyName]',
SECRET = '[SAS Token]'`
_
上記のスクリプトではエラーは報告されていませんが、URLにBACKUP DATABASEコマンドを発行すると、サポートされていないコマンドが発生します(完全なエラーはCannot open backup device 'https://[storagename].blob.core.windows.net/[containername]/AdventureWorks2016.bak'. Operating system error 50(The request is not supported.)
です。
次に、データベースを右クリックして_Tasks ==> Back Up..
_を選択し、Back Up ToをURLに変更して[追加]をクリックして、個々のデータベースバックアップオプションでSSMSを試してみました。それを行うと、次のメッセージが表示されます。
登録済みのコンテナが存在しない(登録方法の詳細も見つからない)ため、[新しいコンテナ]をクリックすると、_Connect to a Microsoft Subscription
_ダイアログが表示されます。 Azureアカウントでサインインし、2つのサブスクリプション(有効期限切れの無料試用版と正しいPay As You Go)を確認し、Pay As You Goを選択してから、ストレージアカウントの選択に移動すると、ダイアログが閉じ、「インデックスが範囲外でした」エラーが表示されます。これは、コンテナが見つからないことを意味します。関連するスクリーンショットは次のとおりです。
私はここからどこへ行くべきか途方に暮れています。何か案は?
2つのバックアップオプション:BACKUP DB TO URL WITH CREDENTIAL-BLOBを作成し、作成時にSASではなくトークンを使用するための認証情報が必要[複数のファイルにバックアップをストライプ化できない]
BACKUP DB TO URL [sans credential]-ブロックを作成し、資格情報名がURLと一致する必要があります[ストレージアカウント+コンテナー]、SAS秘密で、[CAN複数のファイルにバックアップをストライプ化]]
先頭の「?」を削除するこれまでほとんど言及されておらず、周りのみんなを詰め込んでいます。
すべてが正しい場合でも、オペレーティングシステムエラー50(Windows Server 2012 R2の場合はSQL Server SQL Server 2016)が発生する可能性があります:ファイルをまたがってAzureのストライピングにdbsをバックアップするジョブがあります-金曜日に1つのデータベースが失敗し、同じdbなしで成功しました土曜日に何かを変える...火に燃料を追加するだけです。
コンテナーを見つけられなかったのは、認証である可能性があります。
USE master
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] -- this name must match the container path, start with https and must not contain a trailing forward slash.
WITH IDENTITY='SHARED ACCESS SIGNATURE' -- this is a mandatory string and do not change it.
, SECRET = 'sharedaccesssignature' –- this is the shared access signature token
GO
ソース: https://docs.Microsoft.com/en-us/sql/t-sql/statements/create-credential-transact-sql 。
/ *これを歴史的なコンテキストとして残します*/REFER "MSDN:SQL Server Backup to URL Best Practices and Troubleshooting"
"MSDN:チュートリアル:SQL Server 2016データベースでのMicrosoft Azure Blobストレージサービスの使用" を読んだ後でも、私も50エラーに悩まされているため、あなたの投稿を見つけました。
http://portal.Azure.com にアクセスして、Azureサブスクリプションにログインする必要があると思います。画面の右上で「ディレクトリ」を試用から従量課金に変更します...
ところで、SQL 2016で共有アクセス署名が必要になる可能性があると思います。SQL2012スクリプト{CREDENTIAL Yを使用してDB Xをバックアップ}を2016インスタンスにコピーすると、資格情報を使用できると言って失敗します(禁止)。
また、オペレーティングシステムエラー50(リクエストはサポートされていません)により、サーバー2012 r2がエラーである可能性があると思います...現在、私のラップトップ(Windows 8)でテストすると、同じエラーが発生します。
幸運を。
私にとって、SASトークン以外はすべて正しかったです。SASトークンは「?」疑問符文字で始めることはできません。
例SASトークン(資格情報の秘密/パスワード)
sv=2017-01-02&ss=abcd&srt=abc&sp=rwdlacup&se=2027-09-11T05:00:00Z&st=2017-09-11T04:55:00Z&spr=https&sig=randomcharactersandnumbers
同様の問題(Operating System error 50 (The request is not supported)
)があり、SASキーの代わりにストレージアカウントIDとアクセスキーを使用するのに役立ちました。すべてのケースで最適というわけではありませんが、私のケースは解決しました。
資格情報の作成:
IF NOT EXISTS
(SELECT * FROM sys.credentials
WHERE name = '<mycredentialname>')
CREATE CREDENTIAL [<mycredentialname>] WITH IDENTITY = '<mystorageaccountname>'
,SECRET = '<mystorageaccountaccesskey>';
資格情報の使用:
BACKUP DATABASE AdventureWorks2016
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2016.bak'
WITH CREDENTIAL = '<mycredentialname>'
,COMPRESSION
,STATS = 5;
GO