每晚备份数据库

问题:是否有可能将每天晚上将完整数据库应用到同一服务器上的开发数据库的过程自动化?

软件: Windows Server,SQL,SQL Server Management Studio,ColdFusion

背景:我有一个开发数据库,​​我想刷新生产数据库的数据。 如果可能的话,我想每天晚上都会发生这种情况。 这样发展网站只会落后一天,每天晚上对数据所做的任何更改都会被覆盖

是否有某种计划的任务或存储处理,可以处理这种请求?

每晚备份数据库

我有一个开发数据库,​​我想刷新生产数据库的数据。 如果可能的话,我想每天晚上都会发生这种情况。 这样发展网站只会落后一天,每天晚上对数据所做的任何更改都会被覆盖

下面是可以正常工作的概述步骤,但显然需要为您的环境插入variables。 如果需要的话,所有这些也可以用SQLCMD来完成,但是假设你有SQL Server和SSMS,我假设你在这个实例上也有SQL代理作业,而且你对它有一定的了解。

通过SSMS在SQL Server中创build一个备份设备:

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

通过SSMS创build一个SQL代理作业,并安排在指定的时间运行备份:

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

通过SSMS创build一个SQL代理作业,并计划在指定的时间恢复完整备份的数据库:

 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' 

笔记

  1. 这假定您有权在SQL Server实例上完成数据库备份(否则,请使用DBA)。
  2. 这假定你正在创build一个新的完全备份文件,但如果你可以使用现有的文件,那么我build议使用完整的数据库生产备份文件完成数据库刷新开发,只是时间,以确保没有重叠等。 (如果需要的话与DBA一起获得)
  3. 如果你还没有,或者你也不是DBA,我build议你和数据库pipe理员一起讨论。 DBA可授予您访问相应的msdb SQL代理angular色的权限,以创build您拥有的SQL代理作业。