SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

知识点:数据库的备份和还原、收缩数据库的方法、删除数据库。

1、备份和还原数据库

在数据库运行过程当中,难免会遇到诸如人为错误、硬盘损坏、电脑病毒、断电或是其他灾难,这些都会影响数据库的正常使用和数据的正确性,甚至破坏数据库,导致部分数据或是全部数据丢失。备份和还原是一种保护数据库中关键数据的重要手段,在数据库的正常状态下对数据库进行备份,当数据库出现一位故障时就可以用备份集把数据还原到正常状态,从而有效地保障了数据的安全和完整。

1.1 完全备份数据库

为了演示数据库的备份和还原,我们新添加一个数据库School,创建方法见上一篇文章:创建数据库。新创建的数据库里没有添加任何内容。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

对新创建的数据进行【备份】操作。

第一步:在对象资源管理器中,展开【数据库】文件夹,在数据库“School”上单击鼠标右键,在弹出的菜单栏里选择【任务】——【备份】选项

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

第二步:弹出【备份数据库 - School】窗口,可以了解一下窗口里的内容,其中【备份到】选项下,系统默认有一个保存路径。如果不想使用系统默认的备份地址,可以点击右侧的【添加】按钮,选择保存的位置。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

点击【添加】按钮后,在弹出的【选择备份目标】窗口里,点击文件名后面的按钮,在弹出的【定位数据库文件】里,选择将要保存的路径。(注意:路径不要出现中文名称及特殊符号),同时给文件起名字school.bak,然后点击【确定】

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

点击【确定】以后,相关窗口会关闭,重新回到【备份数据库 - School】窗口,在备份到里,选择刚才新添加的路径,然后点击【确定】。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

注意:如果指定了新的路径,建议把系统默认的路径删除掉。

 

第三步:弹出消息提示框,提示对数据库“School”的备份已经成功完成。单击【确定】即可。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

到这里就完成了数据库备份,可以到刚才保存备份文件的目录里查看备份文件。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

 

1.2 更新数据库

为了演示还原数据库的效果,我们这里对School数据进行一些更改(添加一个数据库表),添加数据库表的方法在下一次课会讲到。这里只简单介绍添加数据库表的步骤流程:

第一步:在对象资源管理器中,展开数据库,展开School数据库,在【表】上单击右键,在弹出的下拉菜单里点击【表】

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

第二步:在右侧的表设计区域中,输入表的列和对应信息,我们这里做一个学生信息表。设置姓名、年龄、性别三列即可。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

向表中输入信息

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

第三步:在表中输入信息以后,点击工具栏上的保存按钮,也可以Ctrl+S保存。

 

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

在弹出的窗口中可以修改表名称,也可以使用默认名称,然后点击【确定】即可。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

展开表,我们可以看到数据库里新添加了一张表。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

 

1.3 还原数据库的方法:

有了备份以后,当数据发生损坏或丢失时, 就可以用备份的内容来还原数据库了。

第一步:在对象资源管理器中展开【数据库】,右键单击数据库School,在弹出的下拉菜单中依次点丫任务】——【还原】——【数据库】

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

第二步:早弹出的【还原数据库 - Scholl】窗口中,可以看到将要还原的信息,点击【确定】按钮即可。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

第三步:等待还原成功以后,会弹出一个消息框提示【成功还原了数据库“School”】,点击【确定】按钮即可。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

此时刷新数据库School,在表里找不到刚才新添加的数据库表,因为上次备份的时候,数据库School里是没有用户表dbo.Table_1的。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

注意:在SQLServer中提供了四种数据库备份方式:分别是完全备份、差异备份、事务日志备份、文件和文件组备份。

  • 完全备份:备份整个数据库的所有内容,包括事务日志。
  • 差异备份:只备份上次完整备份后更改的数据部分。
  • 事务日志备份:只备份事务日志里的内容。
  • 文件和文件组备份:如果数据库创建了多个数据库文件或文件组,只备份数据库中的这些文件中的某些文件。

完全备份是一次性备份整个数据库到目的地址,还原的时候也是一次性从备份设备中还原。

 

 

2、收缩数据库

2.1 为什么要收缩数据库?

回想一下新建数据库的流程:

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库li

  • 为数据库分配的空间:如上图初始时为“数据库文件”分配的空间为8MB,为“日志文件”分配的空间未8MB。
  • 数据库实际使用的空间:以上图为例,由于数据是刚创建的,里面没有任何用户数据,因此它实际使用的空间很小(不足1MB)。

由此可以理解为:分配空间>=使用空间。在实际使用的过程中可能会出现分配空间为100MB,而使用空间仅为20MB,这就造成了磁盘有80MB的浪费,为了消除这种浪费就需要使用“数据收缩”功能。

另外数据库在使用一段时间后,经常会出现应数据删除而造成数据库中空闲空间太少的情况,这时就需要减少分配给数据库文件和事务日志文件的磁盘空间,以免浪费磁盘空间。

当数据库没有数据时,可以通过修改数据库文件大小的属性直接改变其占用的空间,但当数据库中有数据时,这样做就会破坏数据库中的数据,因此需要使用收缩的方式缩减数据库的空间。

收缩数据库有两种方式:自动收缩数据库和手动收缩数据库。

2.2 自动收缩数据库

第一步:在对象资源管理器中,展开数据库,对数据库School,单击鼠标右键,在弹出的下拉菜单里选择【属性】

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

第二步:在弹出的【数据库属性 - School】窗口中,点击左侧的【选项】——【自动收缩】,点击下拉菜单,将默认的False值,设置为True,然后点击【确定】即可。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

 

2.3 手动收缩数据库

第一步:对要进行收缩的数据单击鼠标右键,在弹出的下拉菜单里依次点击【任务】——【收缩】——【数据库】

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

第二步:在弹出的【收缩数据库 - School】窗口中,可以看到当前数据所占用的磁盘空间为16.00MB,还有5.71MB没有使用。当我们对数据库执行收缩操作后,分配空间和可用空间都可能减少。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

第三步:检验结果。

对要进行收缩的数据单击鼠标右键,在弹出的下拉菜单里依次点击【属性】,将会弹出【数据库属性 - School】窗口,可以在该窗口中查看到,数据库的大小和可用空间都发生了变化。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库da

注意:

  • 收缩后的数据库不能小于数据库的最小大校 最小大小是在数据库最初创建时指定的大小,或是上一次使用文件大小更改操作(如 DBCC SHRINKFILE)设置的显式大校 例如,如果数据库最初创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小只能收缩到 10 MB,即使已经删除数据库的所有数据也是如此。
  • 不能在备份数据库时收缩数据库。 反之,也不能在数据库执行收缩操作时备份数据库。

 

 

3. 删除数据库

对于不再使用的数据库,可以删除,以释放磁盘空间。

3.1 删除数据库的方法:

第一步:对要进行删除的数据单击鼠标右键,在弹出的下拉菜单里点击【删除】

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

第二步:在弹出的【删除对象】窗口中,点击【确定】按钮。(建议将底部的“关闭所有复选框”选中)

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

删除成功后,在对象资源管理器中将看不到School数据库。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

 

注意:如果刚用完数据库,直接进行删除,报错时,可以点击底部的【关闭现有链接】。

SQL Server数据库第一课2:数据库的备份和还原、收缩数据库、删除数据库

 

 

 

 

 

=======================这里是结束分割线========================