Criar um backup completo do banco de dados

Aplica-se a:SQL Server

Este artigo descreve como criar um backup completo de base de dados no SQL Server utilizando o SQL Server Management Studio (SSMS), Transact-SQL ou PowerShell.

Para obter mais informações, consulte Cópia de segurança e restauro do SQL Server com o Armazenamento de Blobs do Azure e Cópia de segurança do SQL Server para URL no Armazenamento de Blobs do Azure. Para uma visão geral dos conceitos e tarefas de backup, veja Visão geral de Backup (SQL Server).

Recomendações

  • À medida que uma base de dados cresce, as cópias de segurança completas da base de dados demoram mais tempo e requerem mais armazenamento. Para bases de dados grandes, complemente backups completos com uma série de backups diferenciais de bases de dados.

  • Estime o tamanho de uma cópia de segurança completa da base de dados com o procedimento armazenado de sistema sp_spaceused.

  • Por defeito, cada backup bem-sucedido adiciona uma entrada ao registo de erros do SQL Server e ao registo de eventos do sistema. Cópias de segurança frequentes podem preencher estes registos e tornar outras mensagens difíceis de encontrar.

    Para suprimir entradas de registo de cópias de segurança, utilize o sinalizador de rastreio 3226, desde que os seus scripts não dependam dessas entradas.

Limitações

Não pode usar a BACKUP instrução numa transação explícita ou implícita.

Não é possível restaurar backups de versões mais recentes do SQL Server em versões anteriores. Por exemplo, não pode restaurar um backup do SQL Server 2025 (17.x) no SQL Server 2022 (16.x).

Segurança

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

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

As permissões BACKUP DATABASE e BACKUP LOG, por predefinição, pertencem aos membros da função fixa de servidor sysadmin e das funções fixas de base de dados db_owner e db_backupoperator.

A conta do serviço SQL Server deve ter permissões de leitura e escrita no ficheiro físico do dispositivo de backup. Problemas de propriedade ou permissões desse ficheiro impedem as operações de backup e restauro, e só aparecem quando a operação de backup ou restauro é executada.

Por exemplo, o procedimento armazenado do sistema sp_addumpdevice , que adiciona uma entrada de dispositivo de backup às tabelas do sistema, não valida o acesso a ficheiros.

Usar o SQL Server Management Studio

  1. No Object Explorer, liga-te ao Database Engine e depois expande a árvore de servidores.

  2. Expanda Bases de Dados e depois selecione uma base de dados de utilizadores. Ou, expanda as Bases de Dados do Sistema e selecione uma base de dados do sistema.

  3. Clique com o botão direito na base de dados que quer fazer backup, aponte para Tarefas e depois selecione Backup....

  4. Na caixa de diálogo Cópia de Segurança da Base de Dados, a base de dados que selecionou aparece na lista pendente. Podes mudar a base de dados para qualquer outra base 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).

    Usa a lista Backup to para selecionar outro dispositivo. Selecione Adicionar para adicionar objetos ou destinos de backup. Podes distribuir o conjunto de backup em vários ficheiros para aumentar a velocidade do backup.

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

  8. Opcionalmente, revê as outras definições nas páginas de Opções de Media e Opções de Backup .

    Para mais informações sobre opções de backup, consulte Backup Database (Página Geral),Backup Database (página de Opções de Media) e Backup Backup Database (Página de Opções de Backup).

  9. Selecione OK para iniciar o backup.

  10. Quando o backup for concluído com sucesso, selecione OK para fechar o diálogo.

Remarks

  • Quando especificas uma tarefa de backup em SQL Server Management Studio, podes gerar o script de Transact-SQL BACKUP correspondente selecionando o botão Script e depois escolhendo um destino de script.

  • Depois de criar um backup completo da base de dados, pode fazer um backup diferencial da base de dados ou um backup do registo de transações.

  • Opcionalmente, selecione a caixa de seleção Cópia de segurança apenas de cópia para criar uma cópia de segurança apenas de 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. Backups apenas com cópia não estão disponíveis para o tipo de backup Diferencial .

  • A opção Sobreescrever media está desativada na página de Opções de Media quando fazes backup para um URL.

Exemplos

Para os exemplos seguintes, crie uma base de dados de teste utilizando 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 DEFAULT getdate() NOT NULL
);
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

Este exemplo faz backup da SQLTestDB base de dados para o disco no local de backup predefinido.

  1. No Object Explorer, liga-te ao Database Engine e depois expande a árvore de servidores.

  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 sucesso, selecione OK para fechar o diálogo.

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

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

Este exemplo faz backup da SQLTestDB base de dados para o disco numa localização que escolheres.

  1. No Object Explorer, liga-te ao Database Engine e depois expande a árvore de servidores.

  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 secção Destino, selecione Disco na lista Fazer cópia de segurança para.

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

  5. Selecione Adicionar. A caixa de diálogo Selecionar Destino de Backup abre-se.

  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 dos ficheiros.

  7. Selecione OK e depois selecione OK novamente para iniciar a cópia de segurança.

  8. Quando o backup for concluído com sucesso, selecione OK para fechar o diálogo.

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

C. Criar um backup criptografado

Este exemplo faz backup da SQLTestDB base de dados com encriptação para o local de backup predefinido.

  1. No Object Explorer, liga-te ao Database Engine e depois expande a árvore de servidores.

  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 seguintes comandos para criar uma chave mestra da base de dados e um certificado na master base 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 uma cópia de segurança completa da base de dados de SQLTestDB para o Armazenamento de Blobs do Azure. O exemplo assume que já tens uma conta de armazenamento com um contentor de blobs. O exemplo cria uma assinatura de acesso partilhada e falha se o contentor tiver uma assinatura de acesso partilhada existente.

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

  1. No Object Explorer, liga-te ao Database Engine e depois expande a árvore de servidores.

  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 de Backup abre-se.

  5. Se já registou anteriormente o contentor de armazenamento Azure que pretende usar com o SSMS, selecione-o. Caso contrário, selecione Novo contêiner para registrar um novo contêiner.

  6. Na caixa de diálogo Ligar-se a uma subscrição da 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 do calendário de Expiração da Política de Acesso Partilhado , selecione uma data de expiração para a política de acesso partilhado que este exemplo cria.

  10. Selecione Criar Credencial para gerar uma assinatura e credencial de acesso partilhado no SSMS.

  11. Selecione OK para fechar a caixa de diálogo Ligar a uma Subscrição 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 sucesso, selecione OK para fechar o diálogo.

Observação

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

Utilize o Transact-SQL

Crie uma cópia de segurança completa da base de dados executando a BACKUP DATABASE instrução. Especificar:

  • 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> A base de dados para fazer backups.
<backup_device> [ , ...n ] Especifica de 1 a 64 dispositivos de backup para usar na operação de backup. Especifique um dispositivo de backup físico, ou especifique um dispositivo lógico de backup correspondente, se já estiver definido. Para especificar um dispositivo físico de cópia de segurança, utilize a opção DISK, TAPE ou URL:

{ DISK | URL | TAPE} = physical_backup_device_name

Use URL para fazer backup no Armazenamento de Blobs do Azure ou no object storage compatível com S3. Para obter mais informações, consulte Dispositivos de Backup (SQL Server).
WITH <with_options> [ , ...n ] Usado para especificar uma ou mais opções, n. Algumas das opções básicas WITH são descritas na lista seguinte.

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

Opções do conjunto básico WITH de cópias de segurança:

  • { COMPRESSION | NO_COMPRESSION }. O SQL Server especifica se a compressão de backup é realizada no backup, sobrepondo-se ao padrão ao nível do servidor.

  • ENCRIPTAÇÃO (ALGORITMO, SERVIDOR | CERTIFICATE)ASYMMETRIC KEY. No SQL Server 2014 ou posterior, especifica o algoritmo de encriptação a usar e o certificado ou chave assimétrica a usar para garantir a encriptação.

  • DESCRIÇÃO = { 'texto' | @text_variable }. Especifica o texto livre que descreve o conjunto de cópias de segurança. 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 não especificar NAME, está 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 usar media pela primeira vez, ou quando quiser sobrescrever todos os dados existentes. Opcionalmente, atribua à nova mídia um nome de mídia e uma descrição.

Importante

Tenha cuidado ao utilizar a cláusula FORMAT da instrução BACKUP, porque esta opção destrói todas as cópias de segurança previamente armazenadas no suporte de cópia de segurança.

Exemplos

Para os exemplos seguintes, crie uma base de dados de teste utilizando 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 DEFAULT GETDATE() NOT NULL
);
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. Utiliza FORMAT para criar um novo conjunto de multimé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. Anexa a cópia de segurança às cópias de segurança 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

EXECUTE 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

PowerShell

Utilize o cmdlet Backup-SqlDatabase. 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.

Se abrir uma janela PowerShell dentro do SSMS para se ligar ao Mecanismo de Banco de Dados do SQL Server, pode omitir a parte das credenciais porque a sua credencial no SSMS estabelece automaticamente a ligação entre o PowerShell e o Database Engine.

Observação

Este exemplo requer o SqlServer módulo. Para obter mais informações, consulte SQL Server PowerShell Provider.

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 seguinte cria uma cópia de segurança completa da base de dados <myDatabase> na instância <myServer> no Armazenamento de Blobs. É criada uma política de acesso guardada com permissões de leitura, escrita e listagem. A credencial do SQL Server, https://<myStorageAccount>.blob.core.windows.net/<myContainer>, é criada utilizando uma assinatura de acesso partilhada 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