每晚备份数据库

每晚备份数据库

问题:是否可以将每晚将完整数据库复制到同一台服务器上的开发数据库中的过程自动化?

软件:Windows 服务器、SQL、SQL 服务器管理 Studio、ColdFusion

背景:我有一个开发数据库,​​我想用生产数据库中的数据来刷新它。如果可能的话,我希望每天晚上都这样做。这样,开发站点只会落后一天,并且对数据所做的任何更改都会在每天晚上被覆盖

是否存在某种计划任务或存储处理可以处理此类请求?

答案1

每晚备份数据库

我有一个开发数据库,​​我想用生产数据库中的数据来刷新它。如果可能的话,我希望每天晚上都这样做。这样,开发站点只会落后一天,并且对数据所做的任何更改都会在每天晚上被覆盖

下面列出的步骤应该可以正常工作,但您显然需要插入适合您环境的变量。如果需要,所有这些也可以使用 SQLCMD 完成,但假设您有 SQL Server 和 SSMS,我假设您在此实例上也有 SQL Agent 作业,并且您对它有点熟悉。

通过 SSMS 在 SQL Server 中创建备份设备:

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

通过 SSMS 创建 SQL 代理作业并安排其在指定时间运行备份:

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

通过 SSMS 创建 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. 这假设您正在创建一个新的完整备份文件,但如果您可以使用现有的文件,那么我建议使用完整的 DB 生产备份文件来完成 DB 刷新到 dev,并使其超时以确保没有重叠等。(如果需要,请与 DBA 联系)
  3. 如果您还没有这样做,或者您还不是 DBA,我建议您与数据库管理员讨论这个问题。DBA 可以通过授予您对 msdb 的访问权限来授予您创建您拥有的 SQL 代理作业的权限SQL 代理角色因此。

相关内容