Backup da Web do SQL Server 2016 para URL

4

Recentemente, criei uma nova instância do Windows Server 2012 R2 com o SQL Server 2016 Web Edition e estou tentando configurar backups automatizados para o Azure, mas não tendo qualquer sorte. Eu criei a conta de armazenamento no Azure primeiro e criei a SAS (Assinatura de Acesso Compartilhado) e é aí que eu começo a me perder. A partir daqui, tentei:

  • Criando credencial local usando este script:

    CREATE CREDENTIAL [BlobUrlWithContainerName]
    WITH IDENTITY = '[FriendlyName]', 
    SECRET = '[SAS Token]''
    

    Nenhum erro foi relatado com o script acima, no entanto, a emissão de um comando BACKUP DATABASE para uma URL resulta em um comando não suportado (o erro completo é: Cannot open backup device 'https://[storagename].blob.core.windows.net/[containername]/AdventureWorks2016.bak'. Operating system error 50(The request is not supported.) .

  • Eu tentei passar pelo SSMS em uma opção de backup de banco de dados individual, com o botão direito do mouse em um banco de dados, selecionando Tasks ==> Back Up.. , alterando o backup para um URL e clicando em Adicionar. Quando faço isso, sou solicitado com isso:

    Nãoexistemcontêineresregistrados(nempossoencontrardetalhessobrecomoregistrarum),entãoeuclicoemNewContainer,oquemedáumdiálogoConnecttoaMicrosoftSubscription.EuentreicomminhacontadoAzure,vejaduasassinaturas(AvaliaçãoGratuita,queexpirouePayAsYouGo,queéacorreta),selecionePayAsYouGoe,emseguida,quandovouselecionarminhacontadearmazenamento,acaixadediálogofechaereceboumerro"Índice estava fora do intervalo", o que significa que não é possível encontrar nenhum contêiner. Aqui estão as capturas de tela relevantes:

Eu estou em uma perda para onde ir a partir daqui. Alguma idéia?

    
por RubyHaus 09.08.2016 / 15:51

3 respostas

1

Para mim, tudo estava correto, EXCETO para o token SAS. O token SAS NÃO deve começar com o '?' ponto de interrogação.

Exemplo de Token SAS (Senha / Senha de Credencial)

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
    
por 11.09.2017 / 19:14
0

Eu tive um problema semelhante ( Operating System error 50 (The request is not supported) ) e, para mim, ajudou a usar a identidade da conta de armazenamento e a chave de acesso, em vez da chave do SAS. Não é o ideal em todos os casos, mas resolveu meu caso.

link

Criando as credenciais:

IF NOT EXISTS  
(SELECT * FROM sys.credentials   
WHERE name = '<mycredentialname>')  
CREATE CREDENTIAL [<mycredentialname>] WITH IDENTITY = '<mystorageaccountname>'  
,SECRET = '<mystorageaccountaccesskey>';

Usando as credenciais:

BACKUP DATABASE AdventureWorks2016  
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2016.bak'   
      WITH CREDENTIAL = '<mycredentialname>'   
     ,COMPRESSION  
     ,STATS = 5;  
GO   
    
por 10.04.2017 / 11:17
0

Duas opções de backup: BACKUP DB TO URL WITH CREDENCIAL - cria blob, requer credencial para usar token, não SAS, ao criar [Não é possível distribuir backups em vários arquivos]

BACKUP DB PARA URL [sans credential] - cria blocos, requer nome de credencial para corresponder à url [conta de armazenamento + container], SAS em segredo, [CAN tira backups em vários arquivos]

Removendo o entrelinhado '?' é raramente mencionado e enche todo mundo.

O erro do sistema operacional 50 (para mim no Windows Server 2012 R2; SQL Server 2016) é possível mesmo quando tudo está correto: Eu tenho um trabalho que faz backup de bancos de dados para o Azure distribuindo arquivos - falhei 1 banco de dados na sexta-feira mesmo db sem mudar nada no sábado ... só para adicionar combustível ao fogo.

Pode ser sua autenticação, que está causando sua falha na localização de contêineres.

   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    

Fonte: link .

/ * Deixando isso como contexto histórico * / REFER ["MSDN: Backup do SQL Server para Melhores Práticas e Resolução de Problemas de URL"] h ttps: //msdn.microsoft.com/en-us/library/jj919149.aspx {não é possível postar como link devido ao limite de reputação}

Encontrei seu post porque também estou impressionado com o erro 50, mesmo depois de ler o "MSDN: Tutorial : Usando o serviço de armazenamento do Microsoft Azure Blob com bancos de dados do SQL Server 2016 "

Acho que você deve acessar o link e fazer login na sua assinatura do Azure. Você muda os "diretórios" de Trial para Pay-as-you-go no canto superior direito da tela ...

BTW Eu acho que você pode precisar de assinatura de acesso compartilhado no SQL 2016 porque quando eu copiar um script do SQL 2012 {backup do banco de dados X usando CREDENCIAL Y} a instância de 2016, ele falha (FORBIDDEN) APESAR dizendo que você pode usar credenciais ...

Além disso, o erro do sistema operacional 50 (A solicitação não é suportada), leva-me a pensar que o servidor 2012 r2 pode ser o erro ... testar atualmente no meu laptop (windows 8) produz o mesmo erro.

Boa sorte.

    
por 24.11.2016 / 14:41