![SQL Server 2016从入门到精通(视频教学超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/756/26793756/b_26793756.jpg)
2.4 管理数据库
数据库的管理主要包括修改数据库、查看数据库信息、数据库更名和删除数据库。本节将介绍SQL Server中数据库管理的内容。
2.4.1 修改数据库
数据库创建以后,可能会发现有些属性不符合实际的要求,这就需要对数据库的某些属性进行修改,当然,可以重新建立一个数据库,但是这样的操作比较烦琐。可以在SSMS的对象资源管理器中对数据库的属性进行修改,来更改创建时的某些设置和创建时无法设置的属性;也可以使用ALTER DATABASE语句来修改数据库。
1.使用对象资源管理器对数据库进行修改
在对象资源管理器中对数据库进行修改的步骤如下:
打开【数据库】节点,右击需要修改的数据库名称,选择弹出菜单中的【属性】命令,打开指定数据库的【数据库属性】窗口,该窗口与在SSMS中创建数据库时打开的窗口相似,不过这里多了几个选项,分别是:更改跟踪、权限、扩展属性、镜像和事务日志传送,读者可以根据需要,分别对不同的选项卡中的内容进行设置。
2.使用ALTER DATABASE语句进行修改
ALTER DATABASE语句可以进行以下的修改:增加或删除数据文件、改变数据文件或日志文件的大小和增长方式,增加或者删除日志文件和文件组。ALTER DATABASE语句的基本语法格式如下:
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T61_39759.jpg?sign=1739421312-5H9mohc9tli8ZmG5apzqoO1iMIJR3hLS-0-4bbe8c5dd075ef981bb136b1dc847418)
上述语句分析如下。
- database_name:要修改的数据库的名称。
- MODIFY NAME:指定新的数据库名称。
- ADD FILE:向数据库中添加文件。
- TO FILEGROUP { filegroup_name }:将指定文件添加到文件组。filegroup_name为文件组名称。
- ADD LOG FILE:将要添加的日志文件添加到指定的数据库。
- REMOVE FILE logical_file_name:从SQL Server的实例中删除逻辑文件并删除物理文件。除非文件为空,否则无法删除文件。logical_file_name是在SQL Server中引用文件时所用的逻辑名称。
- MODIFY FILE:指定应修改的文件。一次只能更改一个<filespec>属性。必须在<filespec>中指定NAME,以标识要修改的文件。如果指定了SIZE,那么新大小必须比文件当前大小要大。
2.4.2 修改数据库容量
在上一小节中,创建了一个名称为sample_db的数据库,数据文件的初始大小为5MB。这里修改该数据库的数据文件大小。
1.在对象资源管理器中修改sample_db数据库数据文件的初始大小
选择需要修改的数据库右击,在弹出的快捷菜单中选择【属性】菜单命令,打开【数据库属性】窗口,单击sample_db行的初始大小列下的文本框,重新输入一个新值,这里输入15。也可以单击旁边的两个小箭头按钮,增大或者减小值,修改完成之后,单击【确定】按钮,这样就成功修改了sample_db数据库中数据文件的大小,读者可以重新打开sample_db数据库的属性窗口,查看修改结果,如图2-11所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P62_2382.jpg?sign=1739421312-a9eNDlUHUuC4rdCZmEjdZTStfT3tDKEv-0-9b5b5cc9a3ece19880ca31ecbb8933ca)
图2-11 修改数据库大小后的效果
2.使用T-SQL语句修改sample_db数据库数据文件的初始大小
【例2.2】将sample_db数据库中的主数据文件的初始大小修改为15MB,输入语句如下。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T62_39761.jpg?sign=1739421312-BSpgKU6A1HRna5ao2MAaxsR2nYZoZkcB-0-3af942bcfba33c069db566196707e519)
代码执行成功之后,sample_db的初始大小将被修改为15MB。
提示
修改数据文件的初始大小时,指定的SIZE的大小必须大于或等于当前大小,如果小于,代码将不能被执行。
2.4.3 增加数据库容量
增加数据库容量可以增加数据增长的最大限制,分别可以在对象资源管理器中修改,或者使用T-SQL语句修改,下面介绍这两种方法。
1.在对象资源管理器中修改sample_db数据库数据文件最大文件大小
具体操作步骤如下。
在sample_db数据库的属性窗口中,选择左侧的【文件】选项卡,在sample_db行中,单击【自动增长】列下面的值(有一个带省略号的按钮
),如图2-12所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P63_2450.jpg?sign=1739421312-sfxTw1wHyRjEENU3AH0nO0jzQkabrNGx-0-1756bdbf35e4770bc0914f43b4202d63)
图2-12 sample_db的属性窗口
弹出【更改sample_db的自动增长设置】对话框,在【最大文件大小】文本框输入值40,增加数据库的增长限制,修改之后单击【确定】按钮,如图2-13所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P63_2456.jpg?sign=1739421312-DqDACdUOOubU8wl6CYKdMVPMisl9GsVi-0-54fcad18c687caef85fbf20d2b97c1ca)
图2-13 【更改数据库自动增长设置】对话框
返回到【数据库属性】窗口,即可看到修改后的结果,单击【确定】按钮完成修改,如图2-14所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P64_2469.jpg?sign=1739421312-Fq0ikByg8aTQ4RC6QCx4ewMuR6SZyViI-0-e2503dd800d1ac28d17a0938917bc376)
图2-14 修改自动增长
2.使用T-SQL语句增加数据库容量
【例2.3】增加sample_db数据库容量,输入语句如下。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T64_39766.jpg?sign=1739421312-zZaGWYaIAlLLqZAZ7JZ196k0UnKS4eD4-0-2fe2fad0e2e84593685bb158b7f0a6ca)
选择【文件】|【新建】|【使用当前连接查询】,在打开的查询编辑器中输入上面的代码,输入完成之后单击【执行】按钮,代码执行成功之后,sample_db的增长最大限制值增加到50MB,如图2-15所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P64_2516.jpg?sign=1739421312-Wb33cZ8iVXWxQ4tpsGLgq6yaRNT6ufIv-0-858e59d64a4acc43d88cd5a108e8ca7a)
图2-15 修改最大增长限制
2.4.4 缩减数据库容量
相反的,缩减数据库容量可以减小数据增长的最大限制,修改方法与增加数据库容量的方法相同,这里也可以分别使用两种方式。
1.在对象资源管理器中修改sample_db数据库中数据文件最大文件大小
与2.4.3小节中操作过程一样,打开【更改sample_db的自动增长设置】对话框,在第2个可修改文本框中输入一个比当前值小的数值,以缩减数据库的增长限制,修改之后,单击【确定】按钮返回,在返回的【数据库属性】窗口中再次单击【确定】按钮。
2.使用T-SQL语句缩减数据库容量
【例2.4】缩减sample_db数据库容量,输入语句如下。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T65_39767.jpg?sign=1739421312-LyfuGfGMpj9XAF2zgiGDrdFn0YltKPVL-0-49b33671507e4c245b5f7334c2c5b27f)
代码执行成功之后,sample_db的增长最大限制值缩减为25MB,如图2-16所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P65_2573.jpg?sign=1739421312-pYuUl0uANwoBVbLDkUyc8Yj6jiRy2SrT-0-dbf58f084c07ec3ef0cfa31c1f28c4ab)
图2-16 缩减数据库容量
2.4.5 查看数据库信息
SQL Server中可以使用多种方式查看数据库信息,例如使用目录视图、函数、存储过程等。
1.使用目录视图
可以使用如下的目录视图查看数据库基本信息。
- 使用sys.database_files查看有关数据库文件的信息。
- 使用sys.filegroups查看有关数据库组的信息。
- 使用sys.master_files查看数据库文件的基本信息和状态信息。
- 使用sys.databases数据库和文件目录视图查看有关数据库的基本信息。
2.使用函数
如果要查看指定数据库中的指定选项信息时,可以使用DATABASEPROPERTYEX()函数,该函数每次只返回一个选项的信息。
【例2.5】要查看test数据库的状态信息,输入语句如下。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T66_39777.jpg?sign=1739421312-NbJ0IBHxmgQOZhyUQzOCcFO74pHkbRkS-0-2ca1bbdc0276322273cc21b98e01b84a)
执行语句之后的结果如图2-17所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P66_2612.jpg?sign=1739421312-dm0nFVayjU4qMrqe5pRQgNI0Vegm5iXt-0-697963b13f77ad511137765043708fa9)
图2-17 查看数据库Status状态信息
上述代码中DATABASEPROPERTYEX语句中第一个参数表示要返回信息的数据库,第二个参数则表示要返回数据库的属性表达式,其他的可查看的属性参数值如表2-1所示。
表2-1 DATABASEPROPERTYEX可用属性值
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T66_39778.jpg?sign=1739421312-1mHaj5hzvh49LDl0p1ftD5vDzSzspUqc-0-07608065cba6f7d19cbc2d3670c51098)
3.使用系统存储过程
除了上述的目录视图和函数外,还可以使用存储过程sp_spaceused显示数据库使用和保留的空间,执行代码后效果如图2-18所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P67_3013.jpg?sign=1739421312-Iy65c9MYVaX3ypOHUqSFS9LgjnZ61AV0-0-e51459119cf8e73d331649f61721c09d)
图2-18 使用存储过程sp_spaceused
sp_helpdb存储过程查看所有数据库的基本信息,执行代码后效果如图2-19所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P68_3029.jpg?sign=1739421312-i0NSjzYqUZFRc1fmhMBR3T1HFbmWLEHv-0-616fb65c1b004ee0c89d98629252de9a)
图2-19 使用存储过程sp_helpdb
4.使用图形化管理工具
当然,用户也可以在SSMS中查看数据库信息,打开SSMS窗口之后,在【对象资源管理器】窗口中右击要查看信息的数据库节点,在弹出的快捷菜单中选择【属性】菜单命令,在弹出的【数据库属性】窗口中即可查看数据库的基本信息、文件信息、文件组信息和权限信息等,如图2-20所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P68_3037.jpg?sign=1739421312-PvEp2tzGMV3cfBl5zq7hoSkk3ofUXGWF-0-c8f490dff35a231d6a99618bc794ebbc)
图2-20 查看数据库基本信息
2.4.6 数据库更名
数据库更名即修改数据库的名称,例如这里将sample_db数据库的名称修改为sample_db2。
1.使用对象资源管理器修改数据库名称
具体操作步骤如下。
在sample_db数据库节点上右击,在弹出的快捷菜单中选择【重命名】菜单命令,如图2-21所示。
在显示的文本框中输入新的数据库名称sample_db2,如图2-22所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P69_3057.jpg?sign=1739421312-OmN85YCHyCXOVWOhCoK5XdpAC6R6rBv1-0-015a16bc76d6fe8eb50d340ccce066c0)
图2-21 选择【重命名】菜单命令
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P69_3058.jpg?sign=1739421312-xlHNjoW0MKJKdUPshHBTBQBrBHZ0WOUd-0-5b359e43f73509519c6c7e01ad9bb9b7)
图2-22 修改数据库名称
输入完成之后按Enter键确认或者在对象资源管理器中的空白处单击,修改名称成功。
2.使用T-SQL语句修改数据库名称
使用ALTER DATABASE语句可以修改数据库名称,其语法格式如下。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T69_39787.jpg?sign=1739421312-HDb1lJtDXVhEIjQQ7CV7JtJAOCa3qPM0-0-ff81cc2671a4d1d174de0b907ba65d34)
【例2.6】将数据库sample_db2的名称修改为sample_db,输入语句如下。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T69_39788.jpg?sign=1739421312-eBkzMwDu6DWf6VJXByAC0zyUFE3m9vFL-0-11bc22ed5b3d32f3d0ac863877e022e5)
代码执行成功之后,sample_db2数据库的名称被修改为sample_db,刷新数据库节点,可以看到修改后的新的数据库名称,如图2-23所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P70_3118.jpg?sign=1739421312-RiqDEQV9H13Xueh9Ebk85vMwi2s5RbjE-0-ede7b13180691536325ecb9726216ec5)
图2-23 修改数据库名称后的效果
2.4.7 删除数据库
当数据库不再需要时,为了节省磁盘空间,可以将它们从系统中删除,同样这里有两种方法。
1.使用对象资源管理器删除数据库
具体操作步骤如下。
例如删除数据库test,在对象资源管理器中,右击需要删除的数据库,从弹出的快捷菜单中选择【删除】菜单命令或直接按下键盘上的Delete键,如图2-24所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P70_3132.jpg?sign=1739421312-73ckogyX1kJrInTZgRE4CnJNG2FJ0X7w-0-cec3d606565abc46b3eebc3e476123cc)
图2-24 【删除】菜单命令
打开【删除对象】窗口,用来确认删除的目标数据库对象,在该窗口中也可以选择是否要【删除数据库备份和还原历史记录信息】和【关闭现有连接】,单击【确定】按钮,之后将执行数据库的删除操作,如图2-25所示。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-P71_3147.jpg?sign=1739421312-sS1HPh73gWyXJgilh1WArby0UWpPWWa9-0-a0fb2f8839656c7ad0412b2717a8b193)
图2-25 【删除对象】窗口
提示
删除数据库时一定要慎重,因为系统无法轻易恢复被删除的数据,除非做过数据库的备份。每次删除时,只能删除一个数据库。
2.使用T-SQL语句删除数据库
在T-SQL中使用DROP语句删除数据库,DROP语句可以从SQL Server中一次删除一个或多个数据库。该语句的用法比较简单,基本语法格式如下:
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T71_3156.jpg?sign=1739421312-h4IBZgn9KV0kqFU4EGeSH2dY50IQpKcW-0-d4415ffe26a4c2617b1ebaf2ddf981ee)
【例2.7】删除test数据库,输入语句如下。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T71_41260.jpg?sign=1739421312-SKW0QK3kthoIQT3WB9CnnfmF3K1ebC48-0-4f59ee23f9628750715dddcd1101ef9a)
代码执行成功之后,test数据库将被删除。
提示
并不是所有的数据库在任何时候都可以被删除,只有处于正常状态下的数据库,才能使用DROP语句删除。当数据库处于以下状态时不能被删除:数据库正在使用、数据库正在恢复、数据库包含用于复制的对象。