涂华燕
(江苏旅游职业学院,江苏 扬州 225007)
在使用SQL Server的过程中,通常会遇到下面的三种情况:
1.如何将数据库从一个SQL Server服务器移到另一个SQL Server服务器上
2.如果数据库文件所在的磁盘空间用完了怎么办?
3.系统数据库在安装的时候默认保存在C盘的文件夹中,通常情况下所占空间不是很大,但随着使用的时间越长,使用频率越高,系统数据库所占存储空间会越来越大。另外之前设置的数据库选项,以及用户账户设置在重新安装计算机系统后都需要重新设置。
针对以上使用中的问题,本文对SQL数据库进行分析,讨论上述三种情况的解决方案,研究数据库的移动方法。
SQL Server作为目前广为使用的关系型数据库管理系统,其中包含系统数据库和用户自定义数据库。
1.系统数据库
系统数据库是有SQL Server系统创建和维护的数据库。系统数据库中记录了SQL Server所有的配置情况、任务情况和用户数据库情况等系统管理的信息。
(1)master数据库
通常系统的信息都是存放在此数据库中,比如用户注册的账户信息,在使用中对于SQL系统所做的信息设置,还有用户自定义的数据库初始化的记录信息、位置存储的信息。另外在作为系统的主数据库,在一些情况下是需要备份的,比如用户账号、权限、系统配置这些信息在执行设置、分配或改变的时候,如果master这个主数据库出现问题,无法使用的话,SQL Server系统也是没有办法使用的。
(2)tempdb数据库
此数据库只要是能够连上SQL Server服务器的用户都能够使用它,没有特别的权限要求。它记录了所有的临时表、临时数据和临时创建的存储过程。可以把它看成一个中间寄存数据站,比如在查询时的查询结果或者是排序的时候得到的排序表以及临时创建的显示的表等,都是存储在此数据库中,总之此数据库中存放的信息数据都是临时的。
在使用过程中如果SQL Server连接断开时,存放在此数据库中的数据表以及存储过程会自动删除掉。当系统每次重新启动的时候,?tempdb数据库都会由SQL Server依据model数据库重新创建起来,在每次被重建时,它会从model数据库继承大多数的数据库选项。SQL Server的功能和性能的优化很大程度上取决于此数据库的大小和配置,所以此数据库是很重要的。
(3)model数据库
用户创建新数据库都是用到model数据库,它起到一个新建数据库模板的作用,当用户新建数据库时复制到其中的系统表就来自于它。当通过命令执行数据库创建时,新数据库前面部分是通过复制此数据库来实现的,而给用户存放数据的被初始化的空白数据页是新数据库的后面的部分。
作为在系统上创建的所有数据库的模板,新数据库的创建都是以复制model数据库为基础,如果对于新创建的数据库有特别的权限要求或需要含有某些对象,比如数据库的大小、排列顺序、恢复模式等,那么可以把这些对象或者是特殊的权限存放在这个数据库中,这些对于此数据库进行的修改都将用于以后创建的所有新数据库。
(4)msdb数据库
Msdb数据库是代理服务数据库,当SQL Server Agent进行任务调度、复制以及代理计划报警等活动时,此数据库为其提供存储空间。在排除故障时经常会用它调度任务进行排除,此数据库在SQL Sever中起着提供队列以及传递可靠消息的作用。通常如果此数据库不需要执行维护任务或者备份的时候,一般可以不考虑它。
2.用户数据库
系统提供的示例数据库以及用户自定义创建的数据库在SQL Server都属于用户数据库。在安装时,如果选择默认安装,就不会安装示例数据库。可以到微软官方网站下载示例数据库并安装。
用户自定义创建的数据库也就是用户根据实际对象的管理需求自行创建的数据库。
问题一通常处理的方法是创建一个新数据库,然后通过备份和还原移动数据库;问题二通常是在另一个磁盘上增加一个辅助数据文件。显然这两种办法都比较复杂,SQL Serve中分离和附加数据库技术可以方便快捷的解决以上两种问题。
通过分离数据库的数据和事务日志文件,然后将其重新附加到另一台服务器,甚至同一台服务器上。但分离和附加数据库的技术只支持用户自定义数据库,无法分离系统数据库,而通过移动系统数据库可以解决问题三,下面分别介绍着两种数据库的移动方法的实现。
1.用户数据库的移动
以用户自定义的数据库为例,通过存储过程EXEC sp_attach_db实现将本地D:data文件夹中的教学管理数据库附加到当前的SQL系统中。代码如下:
通过存储过程sp_detach_db实现将当前SQL Server系统中的教学管理数据库分离出来,保存在默认的磁盘文件夹中。具体代码如下:
EXEC sp_detach_db’教学管理’
2.系统数据库的移动
通过以下代码查看SQL Server默认存储这些系统数据库的路径
通过F5执行结果可以看出四个系统数据库在C盘中。
而移动 master和 model、msdb、tempdb 这三个移动方法不一样,下面分别介绍
(1)model、msdb、tempdb 移动
首先通过ALTER DATABASE命令来移动每个数据库文件,指定新的文件夹选项,执行结果如下:
此时model、msdb、tempdb三个系统数据库文件的路径由之前的C盘改为D盘,然后通过cmd命令提示符界面,通过命令停止SQL实例,执行结果如下:
然后从本来默认的C盘的存储文件夹找到待移动的系统文件,剪切移动到更改后的D盘存储文件夹中。
(2)移动master数据库
在SQL Server配置管理器中,通过SQL SERVER服务中的属性面板中的高级标签选项,如下图:
将master数据库数据文件和事务日志文件的目标存储位置在启动参数里更改成新的参数值来重新指定,以本数据库为例,把本来存储在C盘中的master.mdf以及 mastlog.ldf两个文件改存到 D 盘的Database文件夹中,再通过 NETSTOP MSSQLSERVER命令停止SQL Server实例,把待移动的master文件移动到新目标存储地址D:Database中,然后重新启动SQL Server实例,就可以实现master数据库的移动了。
本文主要是针对没有损坏的数据库的移动方法的实现,如果是由于硬件故障而需要移动系统数据库,以上方法就不适用了,还有待进一步研究。
[1]袁 霞.基于SQL Server数据库的性能优化浅谈[J].信息安全与技术,2016,(3):25-26.
[2]罗小平,王福兆.SQL Server数据备份策略的选择[J].计算机系统应用,2005,(5):30.