SQLServer命令行备份如何操作?

SQL Server 提供了多种备份方式,其中命令行备份(主要通过 sqlcmdosql 工具结合 T-SQL 命令实现)是一种灵活且适用于自动化场景的方法,通过命令行,管理员可以编写脚本实现定时备份、差异备份、事务日志备份等操作,尤其适合在服务器无图形界面的环境下使用,以下是关于 SQL Server 命令行备份的详细说明。

sqlserver命令行备份
(图片来源网络,侵删)

命令行备份的基本语法

SQL Server 命令行备份的核心是通过 T-SQL 的 BACKUP DATABASEBACKUP LOG 语句实现,结合 sqlcmd 工具执行,基本语法如下:

sqlcmd -S 服务器名 -U 用户名 -P 密码 -Q "BACKUP DATABASE 数据库名 TO DISK = '备份文件路径' [WITH 选项]"
  • -S:指定 SQL Server 实例名(如 localhost服务器名\实例名);
  • -U-P:分别用于指定登录用户名和密码(若使用 Windows 身份验证,可省略 -U-P,改用 -E);
  • -Q:表示执行 T-SQL 命令后退出;
  • BACKUP DATABASE:备份完整数据库,BACKUP LOG 备份事务日志;
  • TO DISK:指定备份文件的路径(需包含文件扩展名,如 .bak);
  • WITH 子句:可配置备份选项,如 INIT(覆盖现有备份文件)、NOINIT(追加到文件)、COMPRESSION(压缩备份)等。

常见备份类型及示例

完整数据库备份

完整数据库备份是备份整个数据库的数据和日志,适合定期全量备份,示例:

sqlcmd -S localhost -U sa -P 123456 -Q "BACKUP DATABASE [TestDB] TO DISK = 'D:\Backup\TestDB_Full.bak' WITH INIT, NAME = 'TestDB完整备份', COMPRESSION"
  • INIT:覆盖同名的备份文件(若省略,则追加到文件);
  • NAME:为备份操作指定描述性名称;
  • COMPRESSION:启用压缩以减少备份文件大小。

差异备份

差异备份仅备份自上次完整备份后发生更改的数据页,需先执行一次完整备份,示例:

sqlcmd -S localhost -U sa -P 123456 -Q "BACKUP DATABASE [TestDB] TO DISK = 'D:\Backup\TestDB_Diff.bak' WITH DIFFERENTIAL, NAME = 'TestDB差异备份'"
  • DIFFERENTIAL:指定差异备份,依赖最近的完整备份。

事务日志备份

事务日志备份备份自上次日志备份后的所有事务日志,需数据库恢复模式为“完整”或“批量日志恢复”,示例:

sqlserver命令行备份
(图片来源网络,侵删)
sqlcmd -S localhost -U sa -P 123456 -Q "BACKUP LOG [TestDB] TO DISK = 'D:\Backup\TestDB_Log.trn' WITH NAME = 'TestDB日志备份', NOINIT"
  • NOINIT:追加到现有日志备份文件(避免覆盖)。

备份到网络路径

备份文件可存储在网络共享目录中,需确保 SQL Server 服务账户对该路径有写入权限,示例:

sqlcmd -S localhost -U sa -P 123456 -Q "BACKUP DATABASE [TestDB] TO DISK = '\\ServerName\Share\TestDB_Network.bak' WITH COMPRESSION"

备份选项说明

选项说明
INIT覆盖备份文件,若文件存在则删除原有内容(默认为 NOINIT
NOINIT追加备份到文件末尾,保留原有内容
COMPRESSION启用备份压缩(需 SQL Server 企业版或标准版)
NAME = '备份名'为备份操作指定逻辑名称,便于管理
DESCRIPTION = '描述'添加备份的描述信息(可选)
STATS = 10每备份 10% 的数据输出一次进度信息(便于监控大备份进度)
CHECKSUM在备份过程中计算校验和,验证数据完整性

自动化备份脚本示例

通过批处理脚本(.bat)结合 sqlcmd 可实现定时备份,创建 backup.bat 文件:

@echo off
set "DBName=TestDB"
set "BackupPath=D:\Backup"
set "Date=%date:~0,4%%date:~5,2%%date:~8,2%"
set "FullBackup=%BackupPath%\%DBName%_Full_%Date%.bak"
set "DiffBackup=%BackupPath%\%DBName%_Diff_%Date%.bak"
:: 执行完整备份
sqlcmd -S localhost -U sa -P 123456 -Q "BACKUP DATABASE [%DBName%] TO DISK = '%FullBackup%' WITH INIT, NAME = '%DBName%完整备份', COMPRESSION"
echo 完整备份已完成:%FullBackup%
:: 执行差异备份
sqlcmd -S localhost -U sa -P 123456 -Q "BACKUP DATABASE [%DBName%] TO DISK = '%DiffBackup%' WITH DIFFERENTIAL, NAME = '%DBName%差异备份'"
echo 差异备份已完成:%DiffBackup%
pause

将此脚本添加到 Windows 任务计划程序,即可实现定时自动备份。

相关问答FAQs

问题1:命令行备份时提示“拒绝访问”如何解决?
解答:通常是由于 SQL Server 服务账户对备份路径无写入权限,需确保:

sqlserver命令行备份
(图片来源网络,侵删)
  • 备份路径(如 D:\Backup 或网络共享)对当前登录用户(或 SQL Server 服务账户)具有“完全控制”权限;
  • 若使用网络路径,检查防火墙设置及共享文件夹的权限配置。

问题2:如何验证备份文件是否有效?
解答:可通过 RESTORE VERIFYONLY 命令验证备份文件的完整性,无需实际恢复数据库,示例:

sqlcmd -S localhost -U sa -P 123456 -Q "RESTORE VERIFYONLY FROM DISK = 'D:\Backup\TestDB_Full.bak'"

若执行后提示“数据库备份已验证”,说明备份文件有效;若报错,则可能存在文件损坏或权限问题。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/424024.html<

(0)
运维的头像运维
上一篇2025-10-25 15:48
下一篇 2025-10-25 15:52

相关推荐

  • adb命令如何完整备份系统?

    adb(Android Debug Bridge)命令是Android开发者和高级用户常用的工具,通过它可以与Android设备进行深度交互,其中系统备份功能是adb的重要应用之一,使用adb命令备份系统可以完整保存设备的当前状态,包括已安装应用、系统设置、应用数据等,适用于设备迁移、系统重置前的数据保护或刷机……

    2025-11-20
    0
  • SQL中建立表用的命令是什么?

    在SQL中,建立表用的命令是CREATE TABLE,这是关系型数据库管理系统中用于定义和创建新表结构的核心SQL语句,通过CREATE TABLE命令,用户可以指定表的名称、列名、数据类型、约束条件以及其他属性,从而构建数据库中的基本存储单元,以下将详细解析CREATE TABLE命令的语法结构、关键参数、使……

    2025-10-30
    0
  • VFP中打开数据库的命令是什么?

    在Visual FoxPro(VFP)中,数据库是管理和存储数据的核心组件,它包含了表、视图、关系等对象的集合,要使用这些对象,首先需要正确地打开数据库,在VFP中,打开数据库的命令是OPEN DATABASE,该命令用于打开一个已存在的数据库文件,并使其成为当前数据库,以便后续操作,以下是关于OPEN DAT……

    2025-10-29
    0
  • unix file命令如何准确识别文件类型?

    Unix 系统中的 file 命令是一个强大的工具,用于确定文件类型,它通过检查文件的魔数(magic number)、文件头、内容特征等信息,来判断文件的真正格式,而不仅仅依赖于文件扩展名,这在处理未知文件、验证文件完整性或在不同系统间交换文件时尤为重要,file 命令的基本用法非常简单,通常只需在命令后跟上……

    2025-10-29
    0
  • Oracle英文招聘要求有哪些?

    在全球化人才竞争日益激烈的今天,企业对具备专业英语能力的技术人才需求持续增长,尤其是在数据库管理领域,Oracle作为全球领先的关系型数据库管理系统,其相关岗位的英文招聘信息不仅需要精准描述岗位职责与技能要求,还需体现企业对候选人的综合素养期待,以下从Oracle英文招聘的核心要素、岗位类型、技能要求、招聘流程……

    2025-10-25
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注