Вопрос: Можно ли автоматизировать процесс копирования полной базы данных каждую ночь в базу данных разработки на том же сервере?
Программное обеспечение: Windows Server, SQL, SQL Server Management Studio, ColdFusion
Задний план: У меня есть база данных разработки, которую я хотел бы обновить данными из производственной базы данных. Я бы хотел, чтобы это происходило каждый вечер, если возможно. Таким образом, сайт разработки будет отставать всего на один день, и любые изменения, внесенные в данные, будут перезаписываться каждый вечер.
Есть ли какая-то запланированная задача или хранимая обработка, которая может обрабатывать такого рода запросы?
Резервное копирование базы данных каждую ночь
У меня есть база данных разработки, которую я хотел бы обновить данными из производственной базы данных. Я бы хотел, чтобы это происходило каждый вечер, если возможно. Таким образом, сайт разработки будет отставать всего на один день, и любые изменения, внесенные в данные, будут перезаписываться каждый вечер.
Ниже приведены описанные шаги, которые должны работать нормально, хотя вам, очевидно, необходимо подключить переменные для вашей среды. Все это также можно сделать с помощью SQLCMD, если необходимо, но если у вас есть SQL Server и SSMS, я предполагаю, что у вас также есть задания агента SQL в этом экземпляре, и что вы в некоторой степени знакомы с ним.
Создайте устройство резервного копирования в SQL Server через SSMS:
EXEC master.dbo.sp_addumpdevice @devtype = N'disk', @logicalname = N'DBName', @physicalname = N'S:\MSSQL.1\MSSQL\Backup\DBName.bak'
Создайте задание агента SQL через SSMS и запланируйте запуск резервного копирования в назначенное время:
Backup database DBName to DBName with description = 'DBName Backup', skip, init
Создайте задание агента SQL через SSMS и запланируйте его для восстановления полной резервной копии БД в назначенное время:
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'
Вы можете сделать все это как одно задание агента SQL, используя следующую логику:
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'
Одно задание агента SQL без необходимости резервного устройства:
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'
НОТЫ