web-dev-qa-db-ja.com

SQL Server 2016 Web URLへのバックアップ

最近、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を試してみました。それを行うと、次のメッセージが表示されます。

    SQL Backup Prompt

    登録済みのコンテナが存在しない(登録方法の詳細も見つからない)ため、[新しいコンテナ]をクリックすると、_Connect to a Microsoft Subscription_ダイアログが表示されます。 Azureアカウントでサインインし、2つのサブスクリプション(有効期限切れの無料試用版と正しいPay As You Go)を確認し、Pay As You Goを選択してから、ストレージアカウントの選択に移動すると、ダイアログが閉じ、「インデックスが範囲外でした」エラーが表示されます。これは、コンテナが見つからないことを意味します。関連するスクリーンショットは次のとおりです。

    Microsoft Subscription Prompt

    Index out of range error

私はここからどこへ行くべきか途方に暮れています。何か案は?

4
RubyHaus

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)でテストすると、同じエラーが発生します。

幸運を。

2
Alocyte

私にとって、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
1
srsedate

同様の問題(Operating System error 50 (The request is not supported))があり、SASキーの代わりにストレージアカウントIDとアクセスキーを使用するのに役立ちました。すべてのケースで最適というわけではありませんが、私のケースは解決しました。

https://docs.Microsoft.com/en-us/sql/relational-databases/backup-restore/sql-server-backup-to-url#credential

資格情報の作成:

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   
0
Peter Örneholm