Partilhar via


Criar um backup completo do banco de dados

Aplica-se a:SQL Server

Este artigo descreve como criar um backup de banco de dados completo no SQL Server usando o SQL Server Management Studio, Transact-SQL ou PowerShell.

Para obter mais informações, consulte Backup e restauração do SQL Server com o Armazenamento de Blob do Azure e Backup do SQL Server para URL para Armazenamento de Blobs do Azure.

Limitações

  • A declaração BACKUP não é permitida em uma transação explícita ou implícita.
  • Os backups criados por versões mais recentes do SQL Server não podem ser restaurados em versões anteriores do SQL Server.

Para obter uma visão geral e um aprofundamento dos conceitos e tarefas de backup, consulte Visão geral do backup (SQL Server) antes de prosseguir.

Recomendações

  • À medida que um banco de dados aumenta de tamanho, os backups completos do banco de dados levam mais tempo para serem concluídos e exigem mais espaço de armazenamento. Para bancos de dados grandes, considere complementar backups completos de bancos de dados com uma série de backups diferenciais de banco de dados .
  • Estime o tamanho de um backup de banco de dados completo usando o procedimento armazenado do sistema sp_spaceused.
  • Por padrão, cada operação de backup bem-sucedida adiciona uma entrada no log de erros do SQL Server e no log de eventos do sistema. Se você fizer backup com frequência, as mensagens de sucesso se acumulam rapidamente, resultando em enormes logs de erros, o que dificulta a localização de outras mensagens. Nesses casos, você pode suprimir essas entradas de log de backup usando o sinalizador de rastreamento 3226 se nenhum dos seus scripts depender dessas entradas. Para obter mais informações, consulte Definir sinalizadores de rastreamento com DBCC TRACEON.

Segurança

TRUSTWORTHY está definido como OFF em um backup de banco de dados. Para obter informações sobre como definir TRUSTWORTHY como ON, consulte Opções ALTER DATABASE SET.

A partir do SQL Server 2012 (11.x), as PASSWORD opções e MEDIAPASSWORD não estão disponíveis para criar backups. Você ainda pode restaurar backups criados com senhas.

Permissões

BACKUP DATABASE e BACKUP LOG as permissões padrão são para membros do sysadmin na função de servidor fixa e nas funções de base de dados fixas db_owner e db_backupoperator.

Problemas de propriedade e permissão no arquivo físico do dispositivo de backup podem interferir em uma operação de backup. O serviço SQL Server deve ler e gravar no dispositivo. A conta sob a qual o serviço do SQL Server é executado deve ter permissões de gravação para o dispositivo de backup. No entanto, sp_addumpdevice, que adiciona uma entrada para um dispositivo de backup nas tabelas do sistema, não verifica as permissões de acesso a arquivos. Problemas no arquivo físico do dispositivo de backup podem não aparecer até que o backup seja usado ou uma tentativa de restauração.

Usar o SQL Server Management Studio

Observação

Ao especificar uma tarefa de backup usando o SQL Server Management Studio, você pode gerar o script Transact-SQL BACKUP correspondente selecionando o botão Script e, em seguida, selecionando um destino de script.

  1. Depois de se conectar à instância apropriada do Mecanismo de Banco de Dados do SQL Server, no Pesquisador de Objetos, expanda a árvore do servidor.

  2. Expanda Bancos de Dadose selecione um banco de dados de usuário ou expanda Bancos de Dados do Sistema e selecione um banco de dados do sistema.

  3. Clique com o botão direito do mouse no banco de dados do qual deseja fazer backup, aponte para Tarefas e selecione Backup....

  4. Na caixa de diálogo Fazer Backup do Banco de Dados , o banco de dados selecionado aparece na lista suspensa. (Você pode alterar o banco de dados para qualquer outro banco de dados no servidor.)

  5. Na lista Tipo de backup , selecione um tipo de backup. O padrão é Full.

    Importante

    Você deve executar pelo menos um backup de banco de dados completo antes de poder executar um backup diferencial ou de log de transações.

  6. Em componente Backup, selecione Banco de Dados .

  7. Na seção de destino , reveja o local padrão para o arquivo de backup (na pasta de dados ../mssql).

    Você pode usar a lista Fazer backup em para selecionar um dispositivo diferente. Selecione Adicionar para adicionar objetos e/ou destinos de backup. Você pode distribuir o conjunto de backup em vários arquivos para aumentar a velocidade do backup.

    Para remover um destino de backup, selecione-o e, em seguida, selecione Remover. Para visualizar o conteúdo de um destino de backup existente, selecione-o e, em seguida, selecione Conteúdo.

  8. (Opcional) Analise as outras configurações disponíveis nas páginas Opções de mídia e Opções de backup .

    Para obter mais informações sobre as várias opções de backup, consulte Backup de banco de dados (página Geral),Backup de banco de dados (página Opções de mídia) e Backup de banco de dados (página Opções de backup).

  9. Selecione OK para iniciar o backup.

  10. Quando o backup for concluído com êxito, selecione OK para fechar a caixa de diálogo SQL Server Management Studio.

Informações adicionais

  • Depois de criar um backup de banco de dados completo, pode criar um backup de banco de dados diferencial ou um backup de log de transações .

  • (Opcional) Você pode marcar a caixa de seleção Backup somente cópia para criar um backup somente cópia. Um backup somente cópia é um backup do SQL Server independente da sequência de backups convencionais do SQL Server. Para obter mais informações, consulte Backups somente cópia. Um backup só de cópia não está disponível para o tipo de backup Diferencial .

  • A opção Substituir mídia está desabilitada na página Opções de Mídia se você estiver fazendo backup em uma URL.

Exemplos

Para os exemplos a seguir, crie um banco de dados de teste com o seguinte código Transact-SQL:

USE [master]
GO

CREATE DATABASE [SQLTestDB]
GO

USE [SQLTestDB]
GO
CREATE TABLE SQLTest
   (
      ID INT NOT NULL PRIMARY KEY,
      c1 VARCHAR(100) NOT NULL,
      dt1 DATETIME NOT NULL DEFAULT getdate()
   );
GO

USE [SQLTestDB]
GO

INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO

SELECT * FROM SQLTest
GO

Um. Backup completo em disco para o local padrão

Neste exemplo, o SQLTestDB backup do banco de dados é feito em disco no local de backup padrão.

  1. Depois de se conectar à instância apropriada do Mecanismo de Banco de Dados do SQL Server, no Pesquisador de Objetos, expanda a árvore do servidor.

  2. Expanda Bancos de Dados, clique com o botão direito do mouse em SQLTestDB, aponte para Tarefase, em seguida, selecione Fazer Backup....

  3. Selecione OK.

  4. Quando o backup for concluído com êxito, selecione OK para fechar a caixa de diálogo SQL Server Management Studio.

Captura de tela que mostra as etapas para criar um backup.

B. Backup completo em disco para um local não padrão

Neste exemplo, o SQLTestDB backup do banco de dados é feito em disco em um local que você escolher.

  1. Depois de se conectar à instância apropriada do Mecanismo de Banco de Dados do SQL Server, no Pesquisador de Objetos, expanda a árvore do servidor.

  2. Expanda Bancos de Dados, clique com o botão direito do mouse em SQLTestDB, aponte para Tarefase, em seguida, selecione Fazer Backup....

  3. Na página Geral na seção Destino , selecione Disco na lista Fazer backup em .

  4. Selecione Remover até que todos os arquivos de backup existentes sejam removidos.

  5. Selecione Adicionar. A caixa de diálogo Selecionar destino do backup é aberta.

  6. Insira um caminho e um nome de arquivo válidos na caixa Nome do arquivo . Use .bak como extensão para simplificar a classificação do arquivo.

  7. Selecione OK e, em seguida, selecione OK novamente para iniciar o backup.

  8. Quando o backup for concluído com êxito, selecione OK para fechar a caixa de diálogo SQL Server Management Studio.

Captura de tela que mostra como adicionar ou remover um local de backup.

C. Criar um backup criptografado

Neste exemplo, é feito backup do SQLTestDB banco de dados com criptografia para o local de backup padrão.

  1. Depois de se conectar à instância apropriada do Mecanismo de Banco de Dados do SQL Server, no Pesquisador de Objetos, expanda a árvore do servidor.

  2. Expanda Bancos de Dados, expanda Bancos de Dados do Sistema, clique com o masterbotão direito do mouse e selecione Nova Consulta para abrir uma janela de consulta com uma conexão com seu SQLTestDB banco de dados.

  3. Execute os comandos a seguir para criar uma chave mestra de banco de dados e um certificado dentro do master banco de dados.

    -- Create the master key.
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
    
    -- If the master key already exists, open it in the same session that you create the certificate. (See next step.)
    OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>'
    
    -- Create the certificate encrypted by the master key.
    CREATE CERTIFICATE MyCertificate
    WITH SUBJECT = 'Backup Cert', EXPIRY_DATE = '20201031';
    
  4. No Explorador de Objetos, no nó Bases de Dados, clique com o botão direito do rato em SQLTestDB, aponte para Tarefase selecione Cópia de Segurança....

  5. Na página Opções de Mídia , na seção Substituir mídia , selecione Fazer backup em um novo conjunto de mídia e apague todos os conjuntos de backup existentes.

  6. Na página Opções de Backup , na seção Criptografia , selecione Criptografar backup.

  7. Na lista Algoritmo , selecione AES 256.

  8. Na lista Certificado ou Chave assimétrica , selecione MyCertificate.

  9. Selecione OK.

Captura de ecrã que mostra os passos para criar uma cópia de segurança encriptada.

D. Fazer backup no Armazenamento de Blobs do Azure

Este exemplo cria um backup de banco de dados completo do Armazenamento de Blobs do SQLTestDB Azure. O exemplo é escrito com a suposição de que você já tem uma conta de armazenamento com um contêiner de blob. O exemplo cria uma assinatura de acesso compartilhado. O exemplo falhará se o contêiner tiver uma assinatura de acesso compartilhado existente.

Se você não tiver um contêiner de Armazenamento de Blob em uma conta de armazenamento, crie um antes de continuar. Consulte Criar uma conta de armazenamento de uso geral e Criar um contêiner.

  1. Depois de se conectar à instância apropriada do Mecanismo de Banco de Dados do SQL Server, no Pesquisador de Objetos, expanda a árvore do servidor.

  2. Expanda Bancos de Dados, clique com o botão direito do mouse em SQLTestDB, aponte para Tarefase, em seguida, selecione Fazer Backup....

  3. Na página Geral , na seção Destino , selecione URL na lista Fazer backup em .

  4. Selecione Adicionar. A caixa de diálogo Selecionar destino do backup é aberta.

  5. Se você registrou anteriormente o contêiner de armazenamento do Azure que deseja usar com o SQL Server Management Studio, selecione-o. Caso contrário, selecione Novo contêiner para registrar um novo contêiner.

  6. Na caixa de diálogo Ligar a uma Subscrição Microsoft , inicie sessão na sua conta.

  7. Na caixa Selecionar Conta de Armazenamento , selecione sua conta de armazenamento.

  8. Na caixa Selecionar Contêiner de Blob , selecione seu contêiner de blob.

  9. Na caixa Calendário de expiração da política de acesso compartilhado , selecione uma data de expiração para a política de acesso compartilhado criada neste exemplo.

  10. Selecione Criar credencial para gerar uma assinatura e credencial de acesso partilhado no SQL Server Management Studio.

  11. Selecione OK feche a caixa de diálogo Conectar a uma Assinatura Microsoft .

  12. Na caixa Arquivo de backup , altere o nome do arquivo de backup, se desejar.

  13. Selecione OK para fechar a caixa de diálogo Selecionar um destino de backup .

  14. Selecione OK para iniciar o backup.

  15. Quando o backup for concluído com êxito, selecione OK para fechar a caixa de diálogo SQL Server Management Studio.

Observação

Atualmente, não há suporte para backup no Armazenamento de Blob usando identidades gerenciadas.

Utilize o Transact-SQL

Crie um backup completo do banco de dados executando a BACKUP DATABASE instrução, especificando:

  • O nome do banco de dados do qual fazer backup.
  • O dispositivo de backup onde o backup completo do banco de dados é gravado.

A sintaxe Transact-SQL básica para um backup completo de banco de dados é:

BACKUP DATABASE <database>
TO <backup_device> [ , ...n ]
[ WITH <with_options> [ , ...o ] ];
Opção Descrição
<database> O banco de dados do qual será feito backup.
<backup_device> [ , ...n ] Especifica uma lista de entre 1 e 64 dispositivos de backup a serem usados para a operação de backup. Você pode especificar um dispositivo de backup físico ou pode especificar um dispositivo de backup lógico correspondente, se já estiver definido. Para especificar um dispositivo de backup físico, use a DISK opção ou TAPE :

DISK | TAPE{ } =physical_backup_device_name

Para obter mais informações, consulte Dispositivos de Backup (SQL Server).
WITH <with_options> [ , ...o ] Usado para especificar uma ou mais opções, o. Seguem-se informações sobre algumas das opções básicas WITH .

Opcionalmente, especifique uma ou mais WITH opções. Algumas opções básicas WITH são descritas aqui. Para obter informações sobre todas as WITH opções, consulte BACKUP.

Opções básicas do conjunto WITH de backup:

  • { COMPRESSÃO | NO_COMPRESSION }. No SQL Server 2008 (10.0.x) Enterprise e somente posterior, especifica se a compactação de backup é executada no backup, substituindo o padrão no nível do servidor.
  • ENCRIPTAÇÃO (ALGORITMO, CERTIFICADO DO SERVIDOR | CHAVE ASSIMÉTRICA). Somente no SQL Server 2014 ou posterior, especifica o algoritmo de criptografia a ser usado e o certificado ou a chave assimétrica a ser usada para proteger a criptografia.
  • DESCRIÇÃO = { 'texto' | @text_variable }. Especifica o texto de forma livre que descreve o conjunto de backup. A cadeia de caracteres pode ter no máximo 255 caracteres.
  • NOME = { backup_set_name | @backup_set_name_var }. Especifica o nome do conjunto de backup. Os nomes podem ter no máximo 128 caracteres. Se NAME não for especificado, ficará em branco.

Por padrão, o BACKUP acrescenta o backup a um conjunto de mídia existente, preservando os conjuntos de backup existentes. Para especificar explicitamente essa configuração, use a NOINIT opção. Para obter informações sobre como anexar a conjuntos de backup existentes, consulte Conjuntos de mídia, famílias de mídia e conjuntos de backup (SQL Server).

Para formatar a mídia de backup, use a FORMAT opção:

FORMATO [ , MEDIANAME = { media_name | @media_name_variable } ] [ , MEDIADESCRIPTION = { texto | @text_variable } ]

Use a FORMAT cláusula quando estiver usando mídia pela primeira vez ou quando quiser substituir todos os dados existentes. Opcionalmente, atribua à nova mídia um nome de mídia e uma descrição.

Importante

Tenha cuidado ao usar a FORMAT cláusula da instrução, BACKUP pois essa opção destrói todos os backups que foram armazenados anteriormente na mídia de backup.

Exemplos

Para os exemplos a seguir, crie um banco de dados de teste com o seguinte código Transact-SQL:

USE [master]
GO

CREATE DATABASE [SQLTestDB]
GO

USE [SQLTestDB]
GO
CREATE TABLE SQLTest (
   ID INT NOT NULL PRIMARY KEY,
   c1 VARCHAR(100) NOT NULL,
   dt1 DATETIME NOT NULL DEFAULT GETDATE()
)
GO

USE [SQLTestDB]
GO

INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO

SELECT * FROM SQLTest
GO

Um. Fazer backup em um dispositivo de disco

O exemplo a seguir faz backup do banco de dados completo SQLTestDB em disco. Ele usa FORMAT para criar um novo conjunto de mídia.

USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO DISK = 'c:\tmp\SQLTestDB.bak'
   WITH FORMAT,
      MEDIANAME = 'SQLServerBackups',
      NAME = 'Full Backup of SQLTestDB';
GO

B. Fazer backup em um dispositivo de fita

O exemplo a seguir faz backup do banco de dados completo SQLTestDB em fita. Ele acrescenta o backup aos backups anteriores.

USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
   TO TAPE = '\\.\Tape0'
   WITH NOINIT,
      NAME = 'Full Backup of SQLTestDB';
GO

C. Backup em um dispositivo de fita lógica

O exemplo a seguir cria um dispositivo de backup lógico para uma unidade de fita. Em seguida, o exemplo faz backup do banco de dados completo SQLTestDB para esse dispositivo.

-- Create a logical backup device,
-- SQLTestDB_Bak_Tape, for tape device \\.\tape0.
USE master;
GO
EXEC sp_addumpdevice 'tape', 'SQLTestDB_Bak_Tape', '\\.\tape0'; USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
   TO SQLTestDB_Bak_Tape
   WITH FORMAT,
      MEDIANAME = 'SQLTestDB_Bak_Tape',
      MEDIADESCRIPTION = '\\.\tape0',
      NAME = 'Full Backup of SQLTestDB';
GO

Utilizar o PowerShell

Use o Backup-SqlDatabase cmdlet. Para indicar explicitamente um backup completo do banco de dados, especifique o -BackupAction parâmetro com seu valor padrão, Database. Esse parâmetro é opcional para backups completos de banco de dados.

Observação

Esses exemplos exigem o módulo SqlServer. Para determinar se está instalado, execute Get-Module -Name SqlServer. Para instalá-lo, execute Install-Module -Name SqlServer em uma sessão de administrador do PowerShell.

Para obter mais informações, consulte SQL Server PowerShell Provider.

Importante

Se você estiver abrindo uma janela do PowerShell de dentro do SQL Server Management Studio (SSMS) para se conectar a uma instância do SQL Server, poderá omitir a parte da credencial porque sua credencial no SSMS é usada automaticamente para estabelecer a conexão entre o PowerShell e sua instância do SQL Server.

Exemplos

Um. Backup completo (local)

O exemplo a seguir cria um backup de banco de dados completo do banco de dados <myDatabase> para o local de backup padrão da instância do servidor Computer\Instance. Opcionalmente, este exemplo especifica -BackupAction Database.

Para obter exemplos completos de sintaxe, consulte Backup-SqlDatabase.

$credential = Get-Credential

Backup-SqlDatabase -ServerInstance Computer[\Instance] -Database <myDatabase> -BackupAction Database -Credential $credential

B. Backup completo para o Azure

O exemplo a seguir cria um backup completo do banco de dados <myDatabase> na instância para o <myServer> Armazenamento de Blobs. Uma política de acesso armazenada foi criada com direitos de leitura, gravação e listar. A credencial do SQL Server, https://<myStorageAccount>.blob.core.windows.net/<myContainer>, foi criada usando uma assinatura de acesso compartilhado associada à política de acesso armazenado. O comando usa o $backupFile parâmetro para especificar o local (URL) e o nome do arquivo de backup.

$credential = Get-Credential
$container = 'https://<myStorageAccount>blob.core.windows.net/<myContainer>'
$fileName = '<myDatabase>.bak'
$server = '<myServer>'
$database = '<myDatabase>'
$backupFile = $container + '/' + $fileName

Backup-SqlDatabase -ServerInstance $server -Database $database -BackupFile $backupFile -Credential $credential