Faça backup de um banco de dados todas as noites

5

Pergunta: É possível automatizar o processo de lidar com um banco de dados completo todas as noites no banco de dados de desenvolvimento no mesmo servidor?

Software: Windows Server, SQL, SQL Server Management Studio, ColdFusion

Plano de fundo: Eu tenho um banco de dados de desenvolvimento que gostaria de atualizar com os dados do banco de dados de produção. Eu gostaria que isso acontecesse todas as noites, se possível. Desta forma, o site de desenvolvimento estará apenas um dia atrasado e quaisquer alterações feitas nos dados serão sobrescritas todas as noites

Existe algum tipo de tarefa agendada ou armazenada processada que possa lidar com esse tipo de solicitação?

    
por shA.t 19.01.2016 / 15:34

1 resposta

6

Back up a database nightly

I have a development database that I would like to refresh with the data from the Production database. I would like for this to happen every evening if possible. This way the development site will only be one day behind and any changes made to the data will be overwritten every evening

Abaixo estão os passos descritos que devem funcionar bem, você obviamente precisa conectar as variáveis para o seu ambiente. Tudo isso também pode ser feito com SQLCMD, se necessário, mas supondo que você tenha SQL Server e SSMS, vou assumir que você também tem trabalhos do SQL Agent nesta instância, e que você está familiarizado com isso.

Crie um dispositivo de backup no SQL Server via SSMS:

EXEC master.dbo.sp_addumpdevice  @devtype = N'disk', @logicalname = N'DBName', @physicalname = N'S:\MSSQL.1\MSSQL\Backup\DBName.bak'

Crie um trabalho do SQL Agent por meio do SSMS e programe-o para executar o backup no horário designado:

Backup database DBName to DBName with description = 'DBName Backup', skip, init

Crie um trabalho do SQL Agent por meio do SSMS e programe-o para restaurar a hora designada do banco de dados com backup completo:

ALTER DATABASE DB_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DB_Name SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO

RESTORE DATABASE [DB_Name]
FROM DISK =N'S:\MSSQL.1\MSSQL\Backup\DBName.bak' WITH REPLACE,  
MOVE N'LogicalLogFileName'  TO N'L:\Path\Log\PhysicalLogFileName.ldf',
MOVE N'LogicalDataFileName' TO N'X:\Path\Data\PhysicalDataFileName.mdf'

Você pode fazer tudo como um trabalho do SQL Agent com a lógica abaixo também:

Backup database DBName to DBName with description = 'DBName Backup', skip, init

ALTER DATABASE DBName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DBName SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO

RESTORE DATABASE [DB_Name]
FROM DISK =N'S:\MSSQL.1\MSSQL\Backup\DBName.bak' WITH REPLACE,  
MOVE N'LogicalLogFileName'  TO N'L:\Path\Log\PhysicalLogFileName.ldf',
MOVE N'LogicalDataFileName' TO N'X:\Path\Data\PhysicalDataFileName.mdf'

Um trabalho do SQL Agent sem necessidade de dispositivo de backup:

DECLARE @BackupFileName varchar(256)
SET @BackupFileName = 'S:\MSSQL.1\MSSQL\Backup\DBName.bak'
BACKUP DATABASE [DBName] TO DISK=@BackupFileName WITH skip, init
GO

ALTER DATABASE DBName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DBName SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO

RESTORE DATABASE [DB_Name]
FROM DISK =N'S:\MSSQL.1\MSSQL\Backup\DBName.bak' WITH REPLACE,  
MOVE N'LogicalLogFileName'  TO N'L:\Path\Log\PhysicalLogFileName.ldf',
MOVE N'LogicalDataFileName' TO N'X:\Path\Data\PhysicalDataFileName.mdf'

NOTAS

  1. Isso pressupõe que você tenha permissões para concluir um backup de banco de dados na instância do SQL Server (use seu DBA de outra forma).
  2. Isso pressupõe que você esteja criando um novo arquivo de backup completo, mas se você puder usar um existente, sugiro usar o arquivo de backup completo de produção do DB para concluir a atualização do banco de dados para dev e expirar para garantir que não haja sobreposição , etc. (obtenha DBA, se necessário)
  3. Eu sugiro que você entre em contato com o administrador do banco de dados, independentemente de falar sobre isso, se ainda não tiver feito isso, ou se não for também o DBA. O DBA pode conceder acesso a você para criar trabalhos do SQL Agent que você possui concedendo acesso ao msdb Funções do SQL Agent de acordo.
por 19.01.2016 / 16:28