Criar backup database SQL SERVER
- Amanda Nascimento

- 27 de mai. de 2024
- 4 min de leitura
Atualizado: 29 de ago.
Abra o cmd (Prompt de Comando)
Crie a pasta Backup
mkdir C:\Backup
Retorne para o SQLSERVER e execute o script abaixo, dentro do seu banco de dados:

BACKUP DATABASE nomedoseubanco
TO DISK = 'C:\Backup\nomedoseubanco.bak'
WITH FORMAT,
MEDIANAME = 'SQLServerBackups',
NAME = 'Full Backup of nomedoseubanco';
Ao ser processado aparecerá a seguinte mensagem:

E a partir de agora, terá um arquivo .bak dentro da sua pasta. Faça o backup regulamente.
É possível também criar um backup clicando com o botão direito, tarefas, fazer backup

Criando uma procedure para gerar o backup
Procedure parametrizada (melhor prática), pois assim podemos usar para qualquer banco sem editar o corpo.
➡️Criando a procedure
IF OBJECT_ID('dbo.sp_BackupDatabase', 'P') IS NOT NULL
DROP PROCEDURE dbo.sp_BackupDatabase;
GO
CREATE PROCEDURE dbo.sp_BackupDatabase
@DatabaseName SYSNAME, -- ex.: 'stage', 'ods', etc.
@BackupFolder NVARCHAR(4000) = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup',
@UseCompression BIT = 1
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
-- Valida se o banco existe e está ONLINE
IF NOT EXISTS (SELECT 1 FROM sys.databases WHERE name = @DatabaseName AND state_desc = 'ONLINE')
THROW 51010, 'Banco informado não existe ou não está ONLINE.', 1;
IF @DatabaseName = 'tempdb'
THROW 51011, 'Não é permitido fazer backup de tempdb.', 1;
-- Normaliza pasta (remove barra final)
IF RIGHT(@BackupFolder,1) IN ('\','/')
SET @BackupFolder = LEFT(@BackupFolder, LEN(@BackupFolder)-1);
DECLARE @File NVARCHAR(4000) =
@BackupFolder + N'\' + @DatabaseName + N'_' +
CONVERT(char(8), GETDATE(), 112) + N'_' +
REPLACE(CONVERT(char(8), GETDATE(),108),':','') + N'.bak';
DECLARE @sql NVARCHAR(MAX) =
N'BACKUP DATABASE ' + QUOTENAME(@DatabaseName) + N'
TO DISK = @p1
WITH INIT, STATS = 5' +
CASE WHEN @UseCompression = 1 THEN N', COMPRESSION' ELSE N'' END + N',
NAME = N''Full Backup of ' + REPLACE(@DatabaseName,'''','''''') + N'''';
EXEC sp_executesql @sql, N'@p1 NVARCHAR(4000)', @p1 = @File;
PRINT 'Backup realizado com sucesso em ' + @File;
END TRY
BEGIN CATCH
DECLARE @Msg NVARCHAR(2048) = ERROR_MESSAGE();
RAISERROR(@Msg, 16, 1);
END CATCH
END
GO
➡️Chamando a procedure
EXEC dbo.sp_BackupDatabase @DatabaseName = N'nomedoseubancoaqui';
➡️Especificando uma pasta para a procedure
-- ou, explicitando a pasta padrão:
EXEC dbo.sp_BackupDatabase
@DatabaseName = N'nomedoseubancoaqui',
@BackupFolder = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup';
O SQL possui uma pasta para backup padrão, que podemos checar o endereço executando o script abaixo:
EXEC master.dbo.xp_instance_regread
N'HKEY_LOCAL_MACHINE',
N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',
N'BackupDirectory';
Saída: BackupDirectory C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup
Se tiver com algum problema quando ao acesso a pasta, altere o caminho para uma pasta pública: C:\Users\Public\Backup somente para fazer o backup e copiar o arquivo .bak posteriormente.
Criar um backup de um banco SQL Server com Python
No terminal do VScode, instale: pip install pyodbc
# Backup Banco SQL Server com Python
# Script 1 — Autenticação SQL Server (login/senha)
import pyodbc
# Configurações da conexão
server = 'SEU_SERVIDOR_SQL_SERVER' # Substitua pelo nome ou endereço IP do seu servidor SQL
database = 'nomedasuadatabase'
username = 'SEU_USUARIO' # Substitua pelo seu nome de usuário do SQL Server
password = 'SUA_SENHA' # Substitua pela sua senha do SQL Server
# String de conexão
conn_str = (
'DRIVER={ODBC Driver 17 for SQL Server};'
'SERVER=' + server + ';'
'DATABASE=' + database + ';'
'UID=' + username + ';'
'PWD=' + password
)
# Comando SQL para fazer o backup
backup_file = r'C:\Backup\nomedasuadatabase.bak'
backup_sql = f"""
BACKUP DATABASE {database}
TO DISK = '{backup_file}'
WITH FORMAT,
NAME = 'Backup Completo do Banco de Dados XXXXXXXX'
"""
try:
# Conectar ao banco de dados
with pyodbc.connect(conn_str) as conn:
with conn.cursor() as cursor:
# Executar o comando de backup
cursor.execute(backup_sql)
print(f"Backup do banco de dados '{database}' foi salvo em: {backup_file}")
except Exception as e:
print(f"Ocorreu um erro ao fazer o backup: {e}")
##########################################################################
# Backup Banco SQL Server com Python
# Script 2 — Autenticação do Windows (Trusted_Connection)
import pyodbc
# Configurações da conexão
server = 'localhost\\SQLEXPRESS' # Nome do servidor
database = 'nomedatabase'
# String de conexão com autenticação do Windows
conn_str = (
'DRIVER={ODBC Driver 17 for SQL Server};'
'SERVER=' + server + ';'
'DATABASE=' + database + ';'
'Trusted_Connection=yes;'
)
# Comando SQL para fazer o backup
backup_file = r'C:\Backup\ouvidoria.bak'
backup_sql = f"""
BACKUP DATABASE {database}
TO DISK = '{backup_file}'
WITH FORMAT,
NAME = 'Backup Completo do Banco de Dados Ouvidoria'
"""
try:
# Conectar ao banco de dados
with pyodbc.connect(conn_str) as conn:
with conn.cursor() as cursor:
# Executar o comando de backup
cursor.execute(backup_sql)
print(f"Backup do banco de dados '{database}' foi salvo em: {backup_file}")
except Exception as e:
print(f"Ocorreu um erro ao fazer o backup: {e}")

