问题:是否有可能将每天晚上将完整数据库应用到同一服务器上的开发数据库的过程自动化?
软件: 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'
笔记