使用SQL Server备份脚本 T-SQL的优势

使用 SSMS GUI 备份一个或两个数据库可能不是一个坏主意。但是,如果您在SQL Server中有大量数据库,或者对备份结果有特定要求(例如,在文件名中包含日期/时间),那么 T-SQL 可以成为处理重复性任务的救命稻草。

在下面的文章中,我将分享我用来执行基本数据库备份和一些更高级任务的SQL Server备份脚本。

SQL Server 中的基本数据库备份脚本

在继续使用更复杂的脚本之前,让我们先看一下基本的 DATABASE BACKUP 命令,这是使用脚本备份SQL Server的基础。

连接到您的服务器,单击“新建查询”以打开 SQLQuery 窗口,然后输入命令以“执行”它。

数据库备份命令

对数据库进行完整备份:

BACKUP DATABASE databasename
TO DISK = 'path\name.bak'
GO

对数据库进行差异备份:

BACKUP DATABASE databasename
TO DISK = 'path\name.bak'
WITH DIFFERENTIAL
GO

*创建差异备份需要先前的完整备份。

制作数据库的事务日志备份:

BACKUP LOG databasename
TO DISK = 'path\filename.trn'
GO

对于数据库恢复,您可以参考从 bak 文件恢复 SQL 数据库.

使用日期备份 SQL Server数据库的脚本

有时你可能希望经常备份一个数据库,并保留不同的版本以备恢复需要,如果bak文件名可以由数据库名和备份日期组成,就很方便了。

下面是带有日期的SQL Server备份脚本示例:

DECLARE@FileName varchar(1000)
SELECT @FileName = (SELECT 'filepath\databasename' + convert(varchar(500), GetDate(),112) + '.bak')
BACKUP DATABASE databasename TO DISK = @FileName

填写你自己的备份路径和数据库名称,你会得到一个带日期的bak文件。

带日期的备份脚本

备份实例所有数据库的脚本

当您需要备份SQL Server的所有数据库时,一个合适的 T-SQL 脚本可以大大减轻您的负担。有了它,你不需要指定你要备份的数据库,只需要排除那些你不想备份的(比如系统数据库)。并且创建的备份文件将自动命名为数据库名称加日期。

这是一个例子:

DECLARE @name VARCHAR(50) -- 数据库名
DECLARE @path VARCHAR(256) -- 备份文件路径
DECLARE @fileName VARCHAR(256) -- 备份文件名
DECLARE @fileDate VARCHAR(20) -- 用于文件名

- - 指定数据库备份目录 eg 'D:\backup\'
SET @path = 'backuppath'

-- 指定文件名格式
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) + '_' + REPLACE(CONVERT (VARCHAR(20),GETDATE(),108),':','')

DECLARE db_cursor CURSOR READ_ONLY FOR
SELECT name
FROM master.sys.databases
WHERE name NOT IN ('master','model','msdb', '临时数据库') -- 排除这些数据库
AND state = 0 -- 数据库在线
AND is_in_standby = 0 -- 数据库不是只读日志传送

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName

FETCH NEXT FROM db_cursor INTO @name
END

CLOSE db_cursor
DEALLOCATE db_cursor

脚本备份所有数据库

如何自动化 SQL Server备份脚本?

现在您已经有了SQL Server备份数据库脚本,您可以随时执行它。但是,如果您需要经常执行它,最好使用 SQL Server 代理 自动执行 MSSQL 备份脚本。

“注意:”此功能仅在非 Express 版本中可用。如果您是 SQL Express 用户,请尝试使用自动地用于备份 SQL 数据库的批处理文件

1. 右击“SQL Server 代理”,选择“新建” > “作业”

确保SQL Server 代理 已启用,否则,请右键单击它并选择“开始”

新工作

2. 在“新建作业”窗口的“常规”选项卡中,输入作业的名称和描述。

3. 单击“步骤”选项卡,单击“新建...”并为其“命名“步骤”,然后将备份脚本复制到“命令”部分并单击“确定”

输入命令

4. 移动到计划选项卡,您可以单击“新建”设置自动执行脚本的计划。

创建时间表

5. 然后,单击“确定”创建作业。如果没有问题,您可以在“SQL Server 代理” > “作业”下找到新作业。它会在您设置的时间自动执行操作,但您也可以右键单击它并选择“作业开始步骤”立即执行。

“注意”:如果要在不更改脚本的情况下更改存储备份的目标路径,可以在备份之前指定一个逻辑sql server 中的备份设备,然后在要更改它时重新定义它。

轻松备份 SQL 数据库的强大替代方案

一旦你有了一个有效的脚本,SQL Server数据库的备份工作就会变得容易得多。但是,此方法也有一些限制:

  • 自动化备份任务不是很方便。
  • 脚本中的任何小错误都会导致操作失败。
  • 您仍然需要一个还原脚本来还原SQL Server的数据库……

为了弥补这些不足,可以使用SQL数据库备份软件,如傲梅企业备份网络版. 操作非常简单,具有同时备份多个数据库、定时自动备份、恢复多个数据库等功能。

下载180天免费试用版试用:

1. 企业备份网络版设置完成后,您可以使用它在客户端安装“代理程序包,并”“请求控制”您要管理的计算机。

请求控制

然后,切换到“主页”选项卡并选择SQL Server备份开始。

sql服务器备份

2、在“步骤1”中点击“+添加计算机”,检测到被SQL Server控制的客户端计算机,选择需要备份的计算机。

添加计算机

3. 在“步骤2”中,点击+ 添加以检测所选机器上的实例。在弹出的窗口中,您可以选择多个数据库甚至多个实例进行备份。

选择要备份的数据库

4. 在步骤 3中,单击“添加存储”指定目标路径。添加的网络共享或 NAS 将被保存以备后用。

选择网络共享

5. 或者,您可以设置一个“计划”来自动备份,并选择执行完整或差异备份。然后单击“开始备份”以执行任务。备份完成后,您可以直接选择要恢复的任务。

备份时间表

结论

与 SSMS GUI 相比,SQL Server备份脚本允许进行一些更复杂和自定义的备份操作。但如果您不熟悉T-SQL命令,或者想更直观地进行备份和恢复,您也可以使用傲梅企业备份网络版,集中数据管理解决方案。

它不仅适用于本地计算机,还适用于局域网内的所有台式机、笔记本电脑、工作站和服务器。所以你可以集中安排备份,并且将SQL 数据库恢复到另一台服务器随你便。