备份操作限制
可以在数据库在线并且正在使用时进行备份。 但是,存在下列限制。
并发限制
SQL Server 可以使用联机备份过程来备份数据库。 在备份过程中,可以进行多个操作;例如:在执行备份操作期间允许使用 INSERT、UPDATE 或 DELETE 语句。 但是,如果在正在创建或删除数据库文件时尝试启动备份操作,则备份操作将等待,直到创建或删除操作完成或者备份超时。
在数据库备份或事务日志备份的过程中无法执行的操作包括:
-
文件管理操作,如含有 ADD FILE 或 REMOVE FILE 选项的 ALTER DATABASE 语句。
-
收缩数据库或文件操作。 这包括自动收缩操作。
-
如果在进行备份操作时尝试创建或删除数据库文件,则创建或删除操作将失败。
如果备份操作与文件管理操作或收缩操作重叠,则产生冲突。 无论哪个冲突操作首先开始,第二个操作总会等待第一个操作设置的锁超时。(超时期限由会话超时设置控制。)如果在超时期限内释放锁,第二个操作将继续执行。 如果锁超时,则第二个操作失败。
无法备份脱机数据
隐式或显式引用脱机数据的任何备份操作都会失败。 一些典型示例包括:
-
您请求完整数据库备份,但是数据库的一个文件组脱机。 由于所有文件组都隐式包含在完整数据库备份中,因此,此操作将会失败。
若要备份此数据库,可以使用文件备份并仅指定联机的文件组。
-
请求部分备份,但是有一个读/写文件组处于脱机状态。 由于部分备份需要使用所有读/写文件组,因此该操作失败。
-
请求特定文件的文件备份,但是其中有一个文件处于脱机状态。 该操作失败。 若要备份联机文件,可以省略文件列表中的脱机文件并重复该操作。
通常,即使一个或多个数据文件不可用,日志备份也会成功。 但如果某个文件包含大容量日志恢复模式下所做的大容量日志更改,则所有文件都必须都处于联机状态才能成功备份。
限制和局限
- 不允许在显式或隐式事务中使用 BACKUP 语句。
- 无法在早期版本的 SQL Server 中还原较新版本的 SQL Server创建的备份。
- 有关备份概念和任务的概述和详细信息,请在继续操作前先参阅备份概述 (SQL Server)。
建议
- 随着数据库不断增大,完整数据库备份的完成时间会延长,并且需要占用更多存储空间。 对于大型数据库,请考虑用一系列差异数据库备份来补充完整数据库备份。 有关详细信息,请参阅 SQL Server Backup to URL。
- 使用 sp_spaceused 系统存储过程估计完整数据库备份的大小。
- 默认情况下,每个成功的备份操作都会在 SQL Server 错误日志和系统事件日志中添加一个条目。 若频繁备份,这些成功消息会迅速累积,从而生成巨大的错误日志! 这会使查找其他消息变得非常困难。 在这些情况下,如果脚本均不依赖于这些备份日志条目,则可使用跟踪标志 3226 取消这些条目。 有关详细信息,请参阅跟踪标志 (Transact-SQL)。
Security
针对数据库备份,TRUSTWORTHY 设置为 OFF。 有关如何将 TRUSTWORTHY 设置为 ON 的详细信息,请参阅 ALTER DATABASE SET 选项 (Transact-SQL)。
从 SQL Server 2012 (11.x) 开始, PASSWORD 和 MEDIAPASSWORD 选项不再可用于创建备份。 不过,您仍可以还原使用密码创建的备份。
权限
默认情况下,为 sysadmin 固定服务器角色以及 db_owner 和 db_backupoperator 固定数据库角色的成员授予 BACKUP DATABASE 和 BACKUP LOG 权限。
备份设备的物理文件的所有权和权限问题可能会妨碍备份操作。 SQL Server 必须能够读取和写入设备;运行 SQL Server 服务的帐户 必须 具有写入权限。 但是,用于在系统表中为备份设备添加项目的 sp_addumpdevice不检查文件访问权限。 备份设备物理文件的这些问题可能直到为备份或还原而访问物理资源时才会出现。
使用 SQL Server Management Studio
使用 SQL Server Management Studio 指定备份任务时,可以通过单击“脚本” 按钮并选择脚本目标生成相应的 Transact-SQL BACKUP 脚本。