为了备份数据库,你可以运行BACKUP命令。(你也可以使用SQL Enterprise Manager。)在执行命令之前知道它的语法永远是个好主意。BACKUP命令有许多选项,它的基本语法是:
BACKUP DATABASE { database_name }
TO < backup_device > |
backup_device可以是磁盘或者磁带——或者它也可以是一个用磁盘文件、磁带或者已命名管道表示的逻辑上的备份设备。
如果你想做一个快速、一次性的备份,那么向下面那样使用磁盘文件:
BACKUP DATABASE Northwind TO DISK = "c:\backup\Northwind.bak"
如果你想把数据库备份到另外一台服务器上,可以使用UNC名字:
BACKUP DATABASE Northwind TO DISK = "\\FILESERVER\Shared\Backup\Northwind.bak"
如果想进行有规律、有计划的备份,就需要使用逻辑备份设备。一个逻辑备份设备可以保存若干个数据库备份并驻留在磁盘、磁带或者已命名管道上。如果你使用磁带设备,磁带驱动器必须在同一台物理服务器上。已命名管道可以利用第三方备份软件。
为了创建逻辑备份设备,使用sp_addumpdevice系统保存过程。SQL Enterprise Manager也可以用来创建备份设备。命令行语法如清单A所示。
清单B给出了一个在磁盘上创建逻辑备份设备的例子。
当备份设备创建完毕,Northwind数据库可以用下面的命令进行备份:
BACKUP DATABASE Northwind TO DiskBackup
频繁变动的大数据库的备份
现在,我已经演示了如何备份整个数据库。然而,它只允许你恢复备份结束时刻的数据库所保存的数据。如果数据库很大并且频繁变动,由于时间和空间的限制,频繁进行全数据库备份是不现实的。当数据库失败时,可能会造成大量数据丢失。
在这种情况下,有两种提高可恢复性的途径,这两个途径都要求全数据库备份。而且这两种方法都要求数据库恢复模型为FULL或者BULK_LOGGED。
第一种方法采用差异数据库备份,它只捕获并保存全数据库备份后改变的数据。由于它的文件较小而且信息简明,用它进行数据恢复的速度非常快。
下面的例子在一个名为DiffBackupDevice的逻辑备份设备上创建了一个差异备份:
BACKUP DATABASE Northwind TO DiffBackupDevice WITH DIFFERENTIAL
第二个提高可恢复性的方法利用交易记录备份,恢复可以在一个特定的时间点上完成。
你可能会问这怎么可能。记住,交易记录的目的就是记录发生在数据库中所有交易。交易记录允许COMMIT和ROLLBACK正确工作。为了达到这个功能,该数据的变化前后的数值必须随同操作类型、交易开始(时间)等一齐被记录下来,