Partilhar via


Backup do SQL Server para URL do Armazenamento de Blobs do Azure

Aplica-se a: SQL ServerAzure SQL Managed Instance

Este artigo apresenta os conceitos, requisitos e componentes necessários para usar o Armazenamento de Blobs do Azure como destino de backup. As funcionalidades de backup e restauração são iguais ou semelhantes ao uso DISK ou TAPE, com algumas diferenças. Essas diferenças e alguns exemplos de código estão incluídos neste artigo.

Tip

A partir do SQL Server 2025 (17.x), podes fazer backup para URL com identidade gerida. Verificar Backup para URL com identidade gerida (pré-visualização) - SQL Server ativado por meio do Azure Arc.

Overview

O SQL Server 2012 Service Pack 1 CU2 e o SQL Server 2014 introduziram a capacidade de fazer backup para um URL apontado para o Armazenamento de Blobs do Azure, usando a sintaxe familiar do T-SQL para escrever backups de forma segura no armazenamento Azure. SQL Server 2016 (13.x) introduziu File-Snapshot Backups para Ficheiros de Base de Dados em Azure e segurança através de chaves de assinatura de acesso partilhado (SAS), uma forma segura e simples de autenticar certificados segundo Armazenamento do Azure política de segurança.

É importante compreender os componentes e a interação entre eles para fazer uma cópia de segurança ou restauração a partir do Armazenamento de Blobs do Azure.

Criar uma conta Armazenamento do Azure dentro da sua subscrição Azure é o primeiro passo neste processo. Essa conta de armazenamento é uma conta administrativa que tem permissões administrativas completas em todos os contêineres e objetos criados com a conta de armazenamento. O SQL Server pode usar o nome da conta de armazenamento Azure e o seu valor da chave de acesso para autenticar, escrever e ler blobs no Armazenamento de Blobs do Azure, ou usar um token de assinatura de acesso partilhado gerado em contentores específicos que lhe concedam direitos de leitura e escrita. Para mais informações sobre Contas de Armazenamento do Azure, veja Sobre Contas de Armazenamento do Azure e para mais informações sobre Assinaturas de Acesso Partilhado, veja Assinaturas de Acesso Partilhado, Parte 1: Compreender o Modelo SAS. A credencial SQL Server armazena esta informação de autenticação e é utilizada durante as operações de backup ou restauro.

Armazenamento do Azure e armazenamento compatível com S3

O SQL Server 2022 (16.x) introduz a capacidade de escrever backups para armazenamento de objetos compatível com S3, com funcionalidades de backup e restauro conceptualmente semelhantes a trabalhar com Backup para URL usando o Armazenamento de Blobs do Azure como tipo de dispositivo de backup. SQL Server 2022 (16.x) estende a sintaxe BACKUP/RESTORE TO/FROM URL adicionando suporte para um novo conector S3 usando a API REST.

Este artigo contém informações sobre o uso do Backup to URL para Armazenamento de Blobs do Azure. Para saber mais sobre o uso de Backup to URL para armazenamento compatível com S3, consulte Backup to URL do SQL Server para armazenamento de objetos compatível com S3.

Backup para o Armazenamento do Azure block blob versus page blob

Existem dois tipos de blobs que podem ser armazenados no Armazenamento de Blobs do Azure: blobs de bloco e de página. Para o SQL Server 2016 e posteriores, block blob é preferido.

Se a chave de armazenamento for utilizada na credencial, um blob de página será utilizado; se a Assinatura de Acesso Partilhado for utilizada, um blob de bloco será utilizado.

O backup para block blob está disponível apenas a partir do SQL Server 2016 ou em versões posteriores para backup no Armazenamento de Blobs do Azure. Faça backup para blocar blob em vez de page blob se estiver a usar SQL Server 2016 ou versão posterior.

As principais razões são:

  • A Assinatura de Acesso Compartilhado é uma maneira mais segura de autorizar o acesso de blob em comparação com a chave de armazenamento.
  • Você pode fazer backup em vários blobs de bloco para obter melhor desempenho de backup e restauração e dar suporte a backups de bancos de dados maiores.
  • O blob de bloco é mais barato do que o blob de página.
  • Os clientes que precisam fazer backup de blobs de página por meio de um servidor proxy precisam usar backuptourl.exe.

Efetuar o backup de uma grande base de dados para o Armazenamento de Blobs do Azure está sujeito às limitações listadas em diferenças, limitações e problemas conhecidos do Azure SQL Managed Instance T-SQL.

Se o banco de dados for muito grande:

  • Utilize compactação de backup ou
  • Fazer backup em múltiplos blobs de bloco

Suporte em Linux, containers e SQL Managed Instance ativado pelo Azure Arc

Se a instância do SQL Server estiver alojada no Linux, incluindo:

  • Sistema operativo autónomo
  • Contentores
  • SQL Managed Instance ativada pelo Azure Arc
  • Qualquer outro ambiente baseado em Linux

O único backup suportado para URL no Armazenamento de Blobs do Azure é bloquear blobs, usando a Assinatura de Acesso Partilhada.

Armazenamento de Blobs do Azure (Armazenamento de Blobs do Azure)

Conta de armazenamento: A conta de armazenamento é o ponto de partida para todos os serviços de armazenamento. Para aceder ao Armazenamento de Blobs do Azure, crie primeiro uma conta de armazenamento Azure. Para obter mais informações, consulte Criar uma conta de armazenamento

Contentor: Um contêiner fornece um agrupamento de um conjunto de blobs e pode armazenar um número ilimitado de blobs. Para escrever um backup do SQL Server para o Armazenamento de Blobs do Azure, deve ter pelo menos o contentor raiz criado. Você pode gerar um token de Assinatura de Acesso Compartilhado em um contêiner e conceder acesso a objetos somente em um contêiner específico.

Blob: Um arquivo de qualquer tipo e tamanho. Existem dois tipos de blobs que podem ser armazenados no Armazenamento de Blobs do Azure: blobs de bloco e de página. O backup do SQL Server pode usar qualquer tipo de blob, dependendo da sintaxe Transact-SQL utilizada. Os blobs podem ser endereçados usando o seguinte formato de URL: https://< storage account.blob.core.windows.net/>< container>/<blob>. Para mais informações sobre Armazenamento de Blobs do Azure, consulte Introdução ao Armazenamento de Blobs do Azure. Para obter mais informações sobre blobs de página e bloco, consulte Noções básicas sobre blobs de bloco e página.

Diagrama de contas de Armazenamento de Blobs do Azure, contentores e blobs.

Azure Snapshot: Um snapshot de um blob Azure tirado num dado momento. Para obter mais informações, consulte Criando um instantâneo de um Blob. O backup do SQL Server suporta agora backups snapshot Azure de ficheiros de base de dados armazenados no Armazenamento de Blobs do Azure. Para mais informações, consulte File-Snapshot Backups para Ficheiros de Base de Dados em Azure.

Componentes do SQL Server

Endereço URL: Uma URL especifica um URI (Uniform Resource Identifier) para um arquivo de backup exclusivo. O URL é usado para fornecer a localização e o nome do ficheiro de backup do SQL Server. A URL deve apontar para um blob real, não apenas para um contêiner. Se o blob não existir, ele é criado. Se um blob existente for especificado, BACKUP falhará, a menos que a WITH FORMAT opção seja especificada para substituir o arquivo de backup existente no blob.

Aqui está um exemplo de valor de URL: https://ACCOUNTNAME.blob.core.windows.net/<CONTAINER>/FILENAME.bak.

Note

O backup para URL usando HTTP não é suportado.

Credential: Uma credencial SQL Server é um objeto utilizado para armazenar a informação de autenticação necessária para se ligar a um recurso fora da SQL Server. Aqui, os processos de backup e restauro do SQL Server utilizam credenciais para autenticar no Armazenamento de Blobs do Azure e nos seus objetos contentor e blob. A Credencial armazena o nome da conta de armazenamento e os valores da chave de acesso da conta de armazenamento ou a URL do contêiner e seu token de Assinatura de Acesso Compartilhado. Depois de a credencial ser criada, a sintaxe das instruções BACKUP/RESTORE determina o tipo de blob e a credencial necessária.

Para um exemplo sobre como criar uma Assinatura de Acesso Partilhado, veja Criar uma Assinatura de Acesso Partilhado exemplos mais adiante neste artigo e, para criar uma Credencial SQL Server, veja Criar uma credencial exemplos mais adiante neste artigo.

Para mais informações sobre credenciais, consulte Credenciais (Database Engine).

Para informações sobre outros exemplos onde credenciais são usadas, veja Criar um Proxy SQL Server Agent.

Suporte de armazenamento imutável Azure

SQL Server 2025 (17.x) introduz suporte para armazenamento imutável Azure, que protege contra ataques de ransomware. Os arquivos gravados no armazenamento imutável não podem ser modificados ou excluídos, conforme definido pela imutabilidade.

Normalmente, os backups do SQL Server são criados em dois passos. Inicialmente, o .bak arquivo de backup é criado com zeros e, em seguida, o arquivo é atualizado com dados. Como a modificação de arquivo no armazenamento imutável não é permitida depois que o arquivo é gravado e confirmado, o processo de backup agora ignora a etapa inicial para criar o arquivo de backup com zeros. Em vez disso, todo o backup é criado em uma etapa quando gravado para bloquear blobs.

O armazenamento Azure oferece dois tipos de imutabilidade: nível de contentor e nível de versão. Atualmente, apenas o armazenamento imutável ao nível do contentor é suportado.

Para usar armazenamento imutável com backup do SQL Server 2025 (17.x) para URL, siga estes passos:

  1. Configura imutabilidade para o teu contentor de armazenamento Azure.

  2. Emita o BACKUP para fazer backup da sua base de dados no contentor de armazenamento Azure. Se você usar a WITH FORMAT opção em armazenamento imutável e já existir um backup com o mesmo nome, receberá um erro e o backup falhará.

    BACKUP DATABASE [<Database>] TO URL = '<url>';
    

Segurança para Armazenamento de Blobs do Azure

Seguem-se considerações e requisitos de segurança ao fazer backup ou restaurar a partir do Armazenamento de Blobs do Azure.

  • Ao criar um contentor para Armazenamento de Blobs do Azure, recomendamos que defina o acesso para private. Definir o acesso como privado restringe o acesso a utilizadores ou contas capazes de fornecer a informação necessária para autenticar na conta Azure.

    Important

    O SQL Server requer que um nome de conta e autenticação de chave de acesso no Azure, ou uma Assinatura de Acesso Partilhada e token de acesso, sejam armazenados numa credencial do SQL Server. Esta informação é usada para autenticar a conta Azure ao realizar operações de backup ou restauração.

    Warning

    Armazenamento do Azure suporta desativar a autorização de Chave Partilhada para uma conta de armazenamento. Se a autorização de Chave Partilhada estiver desativada, o SQL Server Backup To URL não funcionará.

  • A conta de usuário usada para emitir comandos BACKUP ou RESTORE deve estar na função de operador de banco de dados db_backup com permissões para alterar qualquer credencial .

Limitações do backup/restauro no Armazenamento de Blobs do Azure

  • O SQL Server limita o tamanho máximo de backup suportado usando um blob de páginas a 1 TB. O tamanho máximo de backup suportado com blocos de blocos está limitado a aproximadamente 195,3 GB (50.000 blocos * 4 MB MAXTRANSFERSIZE). Os blobs de bloco suportam striping para suportar tamanhos de backup substancialmente maiores - o limite é um máximo de 64 URLs, o que resulta na seguinte fórmula: 64 stripes * 50,000 blocks * 4MB maxtransfersize = 12.8 TB.

    Important

    Embora o tamanho máximo de backup suportado por um único bloco seja aproximadamente 195,3 GB, é possível que o SQL Server escreva em blocos de tamanho menor, o que pode levar o SQL Server a atingir o limite de 50.000 blocos antes de transferir todo o backup. Distribua backups (mesmo que sejam menores que 200 GB) para evitar o limite de blocos, especialmente quando você usa backups diferenciais ou não compactados.

  • As cópias de segurança do registo de transações ignoram o especificado MAXTRANSFERSIZE pelo utilizador ao efetuar cópias de segurança para vários ficheiros de cópia de segurança. Em vez disso, 64KB é usado se mais do que um ficheiro for especificado, independentemente do valor MAXTRANSFERSIZE no comando de backup. Portanto, o tamanho máximo de uma cópia de segurança de um registo de transações para URL é aproximadamente 195,3GB (50.000 blocos * 4 MB MAXTRANSFERSIZE * 1 ficheiro OU 50.000 blocos * 64 KB * 64 ficheiros). A compressão pode permitir que um log de transações maior seja efetuado o backup, mas as taxas de compressão variam.

  • Pode emitir instruções de backup ou restauro usando Transact-SQL, SMO, comandos PowerShell ou o assistente de Backup ou Restauro do SQL Server Management Studio.

  • Ao fazer backup para uma conta Armazenamento do Azure, o SQL Server só suporta autenticação com tokens de Assinatura de Acesso Partilhada (SAS) ou chaves de conta de armazenamento. Todos os outros métodos de autenticação, incluindo a autenticação com Microsoft Entra ID (anteriormente Azure Active Directory), não são suportados.

  • Não há suporte para a criação de um nome de dispositivo lógico. Portanto, adicionar URL como dispositivo de backup usando sp_dumpdevice ou através de SQL Server Management Studio não é suportado.

  • Não há suporte para a anexação a blobs de backup existentes. Os backups para um blob existente só podem ser sobrescritos usando a opção WITH FORMAT. No entanto, ao usar backups de instantâneo de arquivo (usando o WITH FILE_SNAPSHOT argumento), o WITH FORMAT argumento não tem permissão para evitar deixar instantâneos de arquivo órfãos que foram criados com o backup de instantâneo de arquivo original.

  • O backup para vários blobs numa única operação de cópia de segurança só é suportado utilizando blobs de bloco e utilizando um token SAS (Assinatura de Acesso Compartilhado) em vez da chave da conta de armazenamento para as credenciais do SQL.

  • A especificação BLOCKSIZE não é suportada para blobs de página.

  • Especificar MAXTRANSFERSIZE não é suportado para blobs de página.

  • Especificação de opções de conjunto de backup - RETAINDAYS e EXPIREDATE não são suportadas.

  • O SQL Server tem um limite máximo de 259 caracteres para o nome de um dispositivo de backup. O BACKUP TO URL consome 36 caracteres para os elementos necessários usados para especificar a URL https://.blob.core.windows.net//.bak, deixando 223 caracteres para nomes de conta, contêiner e blob juntos.

  • O SQL Server 2019 (15.x) e versões anteriores têm um limite de 256 caracteres para tokens de Assinatura de Acesso Partilhado (SAS), o que limita o tipo de tokens que podem ser usados (por exemplo, tokens de Chave de Delegação de Utilizador não são suportados).

  • Se o seu servidor acede ao Azure através de um servidor proxy, deve usar o traço flag 1819 e depois definir a configuração do proxy WinHTTP através de um dos seguintes métodos:

    • A ferramenta proxycfg.exe em Windows XP ou Windows Server 2003 e anteriores.
    • A ferramenta netsh.exe em Windows Vista e Windows Server 2008 ou posteriores.
  • O armazenamento imutável para o Armazenamento de Blobs do Azure não é suportado antes da versão SQL Server 2025. Defina a política de armazenamento imutável como false.

  • Para suporte no SQL Server 2025 e versões posteriores, consulte o suporte de armazenamento imutável do Azure.

    • O armazenamento Azure oferece dois tipos de imutabilidade: nível de contentor e nível de versão. Atualmente, apenas o armazenamento imutável ao nível do contentor é suportado.
  • O backup para URL não é suportado para armazenamento premium.

Argumentos e afirmações suportados no Armazenamento de Blobs do Azure

Suporte para instruções de backup/restauro no Armazenamento de Blobs do Azure

Declaração de backup/restauração Supported Exceptions Comments
BACKUP Yes BLOCKSIZE e MAXTRANSFERSIZE são suportados para blobs de bloco. Eles não são suportados para blobs de página. BACKUP para um blob de bloco requer uma Assinatura de Acesso Partilhada guardada numa credencial SQL Server. BACKUP to page blob requer que a chave da conta de armazenamento seja guardada numa credencial SQL Server e que o argumento WITH CREDENTIAL seja especificado.
RESTORE Yes Requer que uma credencial SQL Server seja definida, e exige que o argumento WITH CREDENTIAL seja especificado se a credencial SQL Server for definida usando a chave da conta de armazenamento como segredo
RESTORE FILELISTONLY Yes Requer que uma credencial SQL Server seja definida, e exige que o argumento WITH CREDENTIAL seja especificado se a credencial SQL Server for definida usando a chave da conta de armazenamento como segredo
RESTORE HEADERONLY Yes Requer que uma credencial SQL Server seja definida, e exige que o argumento WITH CREDENTIAL seja especificado se a credencial SQL Server for definida usando a chave da conta de armazenamento como segredo
RESTORE LABELONLY Yes Requer que uma credencial SQL Server seja definida, e exige que o argumento WITH CREDENTIAL seja especificado se a credencial SQL Server for definida usando a chave da conta de armazenamento como segredo
RESTORE VERIFYONLY Yes Requer que uma credencial SQL Server seja definida, e exige que o argumento WITH CREDENTIAL seja especificado se a credencial SQL Server for definida usando a chave da conta de armazenamento como segredo
RESTORE REWINDONLY No

Para obter sintaxe e informações gerais sobre instruções de backup, consulte BACKUP.

Para obter sintaxe e informações gerais sobre instruções de restauração, consulte Instruções RESTORE.

Suporte para argumentos de backup no Armazenamento de Blobs do Azure

Argument Supported Exception Comments
DATABASE Yes
LOG Yes
TO (URL) Yes Ao contrário de DISK e TAPE, a URL não suporta especificar ou criar um nome lógico. Esse argumento é usado para especificar o caminho da URL para o arquivo de backup.
MIRROR TO Yes
WITH Opções:
CREDENTIAL Yes WITH CREDENTIAL só é suportado quando se utiliza a opção BACKUP TO URL para fazer backup até Armazenamento de Blobs do Azure e só se a credencial de SQL Server estiver definida usando a chave da conta de armazenamento como segredo
FILE_SNAPSHOT Yes
ENCRYPTION Yes Quando o argumento WITH ENCRYPTION é especificado, o SQL Server File-Snapshot Backup assegura que toda a base de dados foi encriptada com TDE antes de fazer a cópia de segurança e, se sim, encripta a própria cópia de segurança do snapshot de ficheiro usando o algoritmo especificado para TDE na base de dados. Se todos os dados no banco de dados inteiro não estiverem criptografados, o backup falhará (por exemplo, o processo de criptografia ainda não foi concluído).
DIFFERENTIAL Yes
COPY_ONLY Yes
COMPRESSION|NO_COMPRESSION Yes Não suportado para backup de instantâneo de arquivo
DESCRIPTION Yes
NAME Yes
EXPIREDATE | RETAINDAYS No
NOINIT | INIT No Não é possível anexar a blobs. Para substituir um backup, use o argumento WITH FORMAT. No entanto, ao usar backups de instantâneos de arquivos (usando o argumento WITH FILE_SNAPSHOT), o argumento WITH FORMAT não é permitido, para evitar que sejam deixados instantâneos de arquivos órfãos criados com o backup original.
NOSKIP | SKIP No
NOFORMAT | FORMAT Yes Um backup realizado para um blob existente falha a menos que WITH FORMAT seja especificado. O blob existente é substituído quando WITH FORMAT é especificado. No entanto, ao usar backups de instantâneo de arquivo (usando o WITH FILE_SNAPSHOT argumento), o FORMAT argumento não tem permissão para evitar deixar instantâneos de arquivo órfãos que foram criados com o backup de instantâneo de arquivo original. No entanto, ao usar backups de instantâneos de arquivos (usando o argumento WITH FILE_SNAPSHOT), o argumento WITH FORMAT não é permitido, para evitar que sejam deixados instantâneos de arquivos órfãos criados com o backup original.
MEDIADESCRIPTION Yes
MEDIANAME Yes
BLOCKSIZE Yes Não há suporte para blob de página. Suportado para blob de blocos. Recomendo BLOCKSIZE=65536 otimizar o uso dos 50.000 blocos permitidos em um blob de bloco.
BUFFERCOUNT Yes
MAXTRANSFERSIZE Yes Não há suporte para blob de página. Suportado para blob de blocos. O padrão é 1048576. O valor pode variar até 4 MB em incrementos de 65.536 bytes.

Recomendo MAXTRANSFERSIZE=4194304 otimizar o uso dos 50.000 blocos permitidos em um blob de bloco.
NO_CHECKSUM | CHECKSUM Yes
STOP_ON_ERROR | CONTINUE_AFTER_ERROR Yes
STATS Yes
REWIND | NOREWIND No
UNLOAD | NOUNLOAD No
NORECOVERY | STANDBY Yes
NO_TRUNCATE Yes

Para obter mais informações sobre argumentos de backup, consulte BACKUP.

Suporte para argumentos de restauração em Armazenamento de Blobs do Azure

Argument Supported Exceptions Comments
DATABASE Yes
LOG Yes
FROM (URL) Yes O FROM URL argumento é usado para especificar o caminho da URL para o arquivo de backup.
WITH Opções:
CREDENTIAL Yes WITH CREDENTIAL só é suportado quando se usa a opção RESTORE FROM URL para restaurar a partir de Armazenamento de Blobs do Azure.
PARTIAL Yes
RECOVERY | NORECOVERY | STANDBY Yes
LOADHISTORY Yes
MOVE Yes
REPLACE Yes
RESTART Yes
RESTRICTED_USER Yes
FILE No
PASSWORD Yes
MEDIANAME Yes
MEDIAPASSWORD Yes
BLOCKSIZE Yes
BUFFERCOUNT No
MAXTRANSFERSIZE No
CHECKSUM | NO_CHECKSUM Yes
STOP_ON_ERROR | CONTINUE_AFTER_ERROR Yes
FILESTREAM Yes Não suportado para backup de captura instantânea
STATS Yes
REWIND | NOREWIND No
UNLOAD | NOUNLOAD No
KEEP_REPLICATION Yes
KEEP_CDC Yes
ENABLE_BROKER | ERROR_BROKER_CONVERSATIONS | NEW_BROKER Yes
STOPAT | STOPATMARK | STOPBEFOREMARK Yes

Para obter mais informações sobre os argumentos RESTORE, consulte Instruções RESTORE - Argumentos.

Backup com o SSMS

Pode fazer backup de uma base de dados para URL através da tarefa Backup no SQL Server Management Studio usando uma credencial do SQL Server.

Note

Para criar um backup de snapshot de ficheiro do SQL Server, ou sobrescrever um conjunto de mídia existente, deve usar Transact-SQL, PowerShell ou C# em vez da tarefa de Backup no SQL Server Management Studio.

Os passos seguintes descrevem as alterações feitas à tarefa de Backup Database no SQL Server Management Studio para permitir a cópia de segurança para o armazenamento Azure:

  1. Em Object Explorer, liga-te a uma instância do Mecanismo de Banco de Dados do SQL Server e depois expande essa instância.

  2. Expanda Bancos de Dados, clique com o botão direito do mouse no banco de dados desejado, aponte para Tarefas e selecione Fazer Backup....

  3. Na página Geral, na seção Destino, a opção URL está disponível na lista suspensa Fazer backup em:. A opção URL é usada para criar um backup para Azure armazenamento. Selecione Adicionar e a caixa de diálogo Selecionar Destino do Backup será aberta:

    1. Azure storage container: O nome do Azure contentor de armazenamento para armazenar os ficheiros de backup. Selecione um contêiner existente na lista suspensa ou insira manualmente o contêiner.

    2. Política de Acesso Compartilhado: Insira a Assinatura de Acesso Compartilhado para um contêiner inserido manualmente. Este campo não estará disponível se tiver sido escolhido um contentor existente.

    3. Arquivo de backup: Nome do arquivo de backup.

    4. Novo Contentor: Usado para registrar um contêiner existente para o qual você não tem uma Assinatura de Acesso Compartilhado. Veja Ligar-se a uma subscrição da Microsoft Azure (Backup para URL).

Note

O Add suporta vários arquivos de backup e contêineres de armazenamento para um único conjunto de mídias.

Quando você seleciona URL como destino, determinadas opções na página Opções de mídia são desabilitadas. Os seguintes artigos têm mais informações sobre a caixa de diálogo Backup de banco de dados:

Backup com plano de manutenção

Semelhante à tarefa de backup descrita anteriormente, o Assistente de Plano de Manutenção no SQL Server Management Studio inclui URL como uma das opções de destino, e outros objetos de suporte necessários, como a Credencial SQL, para fazer backup no armazenamento Azure. Tem o mesmo Para obter mais informações, consulte a seção Definir tarefas de backup em Usando o Assistente de Plano de Manutenção.

Note

Para criar um conjunto de backup listado, um backup de snapshot de ficheiros do SQL Server ou uma credencial SQL usando token de Acesso Partilhado, deve usar Transact-SQL, PowerShell ou C# em vez da tarefa de Backup no Assistente de Plano de Manutenção.

Restaurar com o SSMS

A tarefa Restaurar Banco de Dados inclui URL como um dispositivo a partir do qual restaurar. Os passos seguintes descrevem o uso da tarefa Restaurar para restaurar a partir do Armazenamento de Blobs do Azure:

  1. Clique com o botão direito do mouse em Bancos de Dados e selecione Restaurar Banco de Dados....

  2. Na página Geral , selecione Dispositivo na seção Origem .

  3. Selecione o botão Procurar (...) para abrir a caixa de diálogo Selecionar dispositivos de backup .

  4. Selecione URL na lista suspensa Tipo de mídia de backup: . Selecione Adicionar para abrir a caixa de diálogo Selecionar um local do arquivo de backup .

    1. Azure storage container: O nome totalmente qualificado do contentor de armazenamento Azure que contém os ficheiros de backup. Selecione um contentor existente na lista suspensa ou insira manualmente o nome completo do contentor.

    2. Assinatura de acesso compartilhado: Usado para inserir a Assinatura de Acesso Compartilhado para o contêiner designado.

    3. Adicione: Usado para registrar um contêiner existente para o qual você não tem uma Assinatura de Acesso Compartilhado. Veja Como ligar-se a uma subscrição da Microsoft Azure (backup para URL).

    4. OK: SQL Server liga-se ao armazenamento de Azure usando a informação de credenciais SQL que forneceu e abre a caixa de diálogo Localizar o Ficheiro de Backup no Microsoft Azure. Os arquivos de backup que residem no contêiner de armazenamento são exibidos nesta página. Selecione o arquivo que deseja usar para restaurar e selecione OK. Isso leva você de volta à caixa de diálogo Selecionar dispositivos de backup e selecionar OK nessa caixa de diálogo leva você de volta à caixa de diálogo principal Restaurar , onde você pode concluir a restauração.

Exemplos de código

Esta seção contém os seguintes exemplos.

Note

Para um tutorial sobre como usar SQL Server 2016 com Armazenamento de Blobs do Azure, veja Tutorial: Use Armazenamento de Blobs do Azure com SQL Server

Criar uma assinatura de acesso compartilhado

O exemplo seguinte cria Assinaturas de Acesso Partilhado que podem ser usadas para criar uma Credencial do SQL Server num contentor recém-criado. O script cria uma Assinatura de Acesso Compartilhado associada a uma Política de Acesso Armazenado. Para obter mais informações, consulte Assinaturas de acesso compartilhado, Parte 1: Noções básicas sobre o modelo SAS. O script também escreve o comando T-SQL necessário para criar a credencial no SQL Server.

Note

O exemplo requer Azure PowerShell. Para informações sobre como instalar e usar Azure PowerShell, consulte Como instalar e configurar Azure PowerShell. Estes scripts foram verificados usando Azure PowerShell 5.1.15063.

Assinatura de Acesso Compartilhado associada a uma Política de Acesso Armazenado

# Define global variables for the script
$prefixName = '<a prefix name>'  # used as the prefix for the name for various objects
$subscriptionName = '<your subscription name>'   # the name of subscription name you will use
$locationName = '<a data center location>'  # the data center region you will use
$storageAccountName = $prefixName + 'storage' # the storage account name you will create or use
$containerName = $prefixName + 'container'  # the storage container name to which you will attach the SAS policy with its SAS token
$policyName = $prefixName + 'policy' # the name of the SAS policy

# Set a variable for the name of the resource group you will create or use
$resourceGroupName = $prefixName + 'rg'

# adds an authenticated Azure account for use in the session
Connect-AzAccount

# set the tenant, subscription and environment for use in the rest of
Set-AzContext -SubscriptionName $subscriptionName

# create a new resource group - comment out this line to use an existing resource group
New-AzResourceGroup -Name $resourceGroupName -Location $locationName

# Create a new ARM storage account - comment out this line to use an existing ARM storage account
New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName

# Get the access keys for the ARM storage account
$accountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName

# Create a new storage account context using an ARM storage account
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].value

# Creates a new container in Azure Blob Storage
$container = New-AzStorageContainer -Context $storageContext -Name $containerName
$cbc = $container.CloudBlobContainer

# Sets up a Stored Access Policy and a Shared Access Signature for the new container
$policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission "rwld"
$sas = New-AzStorageContainerSASToken -Policy $policyName -Context $storageContext -Container $containerName
Write-Host 'Shared Access Signature= '$($sas.TrimStart('?'))''

# Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature
Write-Host 'Credential T-SQL'
$tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='Shared Access Signature', SECRET='{1}'" -f $cbc.Uri, $sas.TrimStart('?')
$tSql | clip
Write-Host $tSql

Depois de executar com sucesso o script, copie o comando CREATE CREDENTIAL para uma ferramenta de consulta, ligue-se a uma instância de SQL Server e execute o comando para criar a credencial com a Assinatura de Acesso Partilhada.

Criar uma credencial

Os exemplos seguintes criam credenciais do SQL Server para autenticação no Armazenamento de Blobs do Azure. Proceda de uma das seguintes formas.

  1. Usando a assinatura de acesso compartilhado

    Se executaste o script anterior para criar a Assinatura de Acesso Partilhada, copia o CREATE CREDENTIAL para um editor de consultas ligado à tua instância de SQL Server e executa o comando.

    O T-SQL a seguir é um exemplo que cria a credencial para usar uma assinatura de acesso compartilhado.

    IF NOT EXISTS (SELECT *
                   FROM sys.credentials
                   WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>')
        CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>]
            WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<SAS_TOKEN>';
    
  2. Usando a identidade da conta de armazenamento e a chave de acesso

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

Executar um backup completo do banco de dados

Os exemplos seguintes realizam uma cópia de segurança completa da base de dados AdventureWorks2025 para Armazenamento de Blobs do Azure. Use um dos seguintes exemplos:

  1. Para URL com uma Assinatura de Acesso Compartilhado

    BACKUP DATABASE AdventureWorks2022
        TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak';
    GO
    
  2. Para a URL usando a identidade da conta de armazenamento e a chave de acesso

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

Restaurar para um ponto no tempo usando STOPAT

O exemplo a seguir restaura o AdventureWorks2025 banco de dados de exemplo ao seu estado em um determinado momento e mostra uma operação de restauração.

Da URL com Assinatura de Acesso Partilhada

RESTORE DATABASE AdventureWorks2022
    FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_16_00_00.bak'
    WITH MOVE 'AdventureWorks2022_data' TO 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2022.mdf',
    MOVE 'AdventureWorks2022_log' TO 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2022.ldf',
    NORECOVERY, REPLACE, STATS = 5;
GO

RESTORE LOG AdventureWorks2022
    FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_18_00_00.trn'
    WITH RECOVERY, STOPAT = 'May 18, 2015 5:35 PM';
GO