论文部分内容阅读
摘要:在实践中常常会遇到这样的情况:SQL Server数据库运行一段时间后,可能由于存放SQL Server数据库的硬盘空间不足或性能、质量不佳,使数据库运行效率大大下降,甚至不能正常工作。对此,最好的解决办法莫过于给数据库找个更加宽敞、安全的新硬盘空间。本文就是争对SQL Server中不同类型数据库的迁移方法进行深入探讨,使大家能更方便、高效使用SQL Server数据库。
关键词:SQL Server数据库;系统数据库;用户数据库;数据库迁移
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)05-11199-02
1 概述
SQL Server是基于客户/服务器模型的新一代大型关系型数据库管理系统(DBMS),它具有独立于硬件平台、对称的多处理器结构、抢占式多任务管理、完善的安全系统和容错功能,并具有易于维护的特点,已在电子商务、数据仓库和数据库解决方案等应用中起着核心作用,可为企事业的数据管理提供强大的支持,对数据库中的数据提供有效的管理,并采用有效的措施实现数据的完整性及数据的安全性,为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开了胜利之门。
2 SQL Server数据库和数据
在SQL Server中,数据库有两大家族:用户数据库与系统数据库。
2.1系统数据库
SQL Server有四种系统数据库:
(1)master数据库
master数据库记录SQL Server系统的所有系统级别信息。它记录所有的登录帐户和系统配置设置。master数据库是这样一个数据库,它记录所有其它的数据库,其中包括数据库文件的位置。
(2)tempdb数据库
tempdb数据库保存所有的临时表和临时存储过程。它还满足任何其它的临时存储要求,例如存储SQL Server生成的工作表。tempdb数据库是全局资源,所有连接到系统的用户的临时表和存储过程都存储在该数据库中。tempdb数据库在SQL Server每次启动时都重新创建,因此该数据库在系统启动时总是干净的。临时表和存储过程在连接断开时自动除去,而且当系统关闭后将没有任何连接处于活动状态。
(3)model数据库
model数据库用作在系统上创建的所有数据库的模板。当发出CREATEDATABASE语句时,新数据库的第一部分通过复制model数据库中的内容创建,剩余部分由空页填充。由于SQL Server每次启动时都要创建tempdb数据库,model数据库必须一直存在于SQL Server系统中。
(4)msdb数据库
msdb数据库供SQL Server代理程序调度警报和作业以及记录操作员时使用。
2.2 用户数据库
用户数据库是用户创建的数据库,用来存放用户的数据信息。
3用户数据库的迁移方法
我们知道,在新建一个数据库的时候,分别指定其数据文件(..mdf文件)以及事务日志文件(.ldf文件)存放的位置。所以数据库迁移,也就是把这两个文件,重新安置一个新地方。
对于用户数据库迁移方法有以下两种:
3.1在企业管理器中进行
(1)在企业管理器中选定要搬家的数据库名,在其上单击鼠标右键,出现如图1所示对话框。
图1
(2)选中“所有任务”,在其子菜单中单击“分离数据库”。
(3)将该数据库的数据文件和日志文件从旧的位置(如D:\MSSQL\Data)拷贝到新的位置(如E:\SQLDataNew)。
(4)再在企业管理器选中“数据库”文件夹,在其上单击鼠标右键,在出现的对话框中选中“所有任务”,在其子菜单中单击“附加数据库”。如图2所示。
图2
(5)在出现的“附加数据库”框中,选择数据库的两个文件的新位置。如图3所示。
图3
3.2用SQL系统存储过程:sp_detach_db/sp_attach_db实现
(1)使用下面语句分离数据库:
USEmaster
GO
EXECsp_detach_db'mydb'
GO
(2)将该数据库的数据文件和日志文件从旧的位置拷贝到新的位置。
(3)使用下面语句重新附加数据库:
USEmaster
GO
EXECsp_attach_db
'mydb','E:\SQLDataNew\mydbdata.mdf', 'E:\SQLDataNew\mydblog.ldf''
GO
4 系统数据库迁移
4.1 master数据库迁移
(1)由于SQLServer每次启动的时候都需要读取master数据库,因此只有在企业管理器中改变SQLServer启动参数中master数据文件和日志文件的路径。
在 SQL Server属性的“常规”选项卡下面有一个叫做“启动参数”的按钮,单击后可以看到如图4所示的界面。
图4
其中,-d用来指定master数据库文件的路径,而–l用来指定master数据库日志文件的路径。
删除旧的master数据库文件和日志文件的路径,添加新的master数据文件和日志文件所在的路径,如:
-dE:\ SQLDataNew \master.mdf
-lE:\ SQLDataNew \mastlog.ldf
(2)停止SQLServer服务,将master.mdf文件和mastlog.ldf文件拷贝到新的位置,如E:\ SQLDataNew文件夹中。
(3)重新启动服务即可。
如果在“启动参数”添加的master数据库文件和日志文件的路径或文件名有误,就会造成SQLServer启动不起来。而此时想改正错误又因SQLServer启动不了而重设不了“启动参数”。其实这两个文件路径和文件名是放置在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Miccrosoft SQL Server\你安装SQL服务器的名\MSSQLServer\Parrmeters下的参数SQLArg1和SQLArg2中,修改这两个参数的值即可。
4.2 msdb数据库和model数据库迁移
(1)对于msdb数据库和model数据库,我们不能在企业管理器中实现分离和附加,只能用sp_detach_db和sp_attach_db存储过程来分离和附加这两个数据库。
其中,对于msdb数据库,还应确保SQL Serve代理当前没有运行,否则sp_detach_db存储过程将运行失败,并返回如下消息:“无法除去数据库'msdb',因为它当前正在使用。”
(2)调出如图4所示的“启动参数”对话框,添加新参数-T3608。这样,启动SQLServer,它就不会恢复除master之外的任何数据库。
(3)重新启动SQLServer,再如下分离msdb或者model数据库:
EXECsp_detach_db'msdb'
GO
(4)将数据文件和日志文件移到新的位置,然后再如下重新附加msdb数据库或者model数据库:
USEmaster
GO
EXECsp_attach_db
'msdb',‘E:\SQLDataNew\msdbdata.mdf', 'E:\SQLDataNew\msdblog.ldf '
GO
(5)在企业管理器中,从“启动参数”框中删除-T3608跟踪标记,再停止并重新启动SQLServer。
4.3 tempdb数据库迁移
对于tempdb数据库,则可以直接使用ALTERDATABASE语句来为数据文件和日志文件指定新的存放位置,如下所示:
USEmaster
GO
ALTERDATABASEtempdbMODIFYFILE(NAME=tempdev,FILENAME ='E:\SQLDataNew \tempdb.mdf')
GO
ALTERDATABASEtempdbMODIFYFILE(NAME=templog,FILENAME=
' E:\SQLDataNew \templog.ldf')
GO
5 总结
总之,在SQL Server中,数据库有两大家族:用户数据库与系统数据库。对于它们迁移要分别采用不同的方法来实现。其中用户数据库的迁移比较简单,而系统数据库的迁移方法较复杂。
参考文献:
[1]郑阿奇等编.SQL Server实用教程. 北京:电子工业出版社,2005.
[2](美)Brian Larson.Microsoft SQL Server 2000 Services. 北京:清华大学出版社,2005.
[3]Baya Pavliashvili. SQL Server User.http://www.samspublishing.com/articles/article.asp?p=31673&rl=1.,2006.3
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:SQL Server数据库;系统数据库;用户数据库;数据库迁移
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)05-11199-02
1 概述
SQL Server是基于客户/服务器模型的新一代大型关系型数据库管理系统(DBMS),它具有独立于硬件平台、对称的多处理器结构、抢占式多任务管理、完善的安全系统和容错功能,并具有易于维护的特点,已在电子商务、数据仓库和数据库解决方案等应用中起着核心作用,可为企事业的数据管理提供强大的支持,对数据库中的数据提供有效的管理,并采用有效的措施实现数据的完整性及数据的安全性,为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开了胜利之门。
2 SQL Server数据库和数据
在SQL Server中,数据库有两大家族:用户数据库与系统数据库。
2.1系统数据库
SQL Server有四种系统数据库:
(1)master数据库
master数据库记录SQL Server系统的所有系统级别信息。它记录所有的登录帐户和系统配置设置。master数据库是这样一个数据库,它记录所有其它的数据库,其中包括数据库文件的位置。
(2)tempdb数据库
tempdb数据库保存所有的临时表和临时存储过程。它还满足任何其它的临时存储要求,例如存储SQL Server生成的工作表。tempdb数据库是全局资源,所有连接到系统的用户的临时表和存储过程都存储在该数据库中。tempdb数据库在SQL Server每次启动时都重新创建,因此该数据库在系统启动时总是干净的。临时表和存储过程在连接断开时自动除去,而且当系统关闭后将没有任何连接处于活动状态。
(3)model数据库
model数据库用作在系统上创建的所有数据库的模板。当发出CREATEDATABASE语句时,新数据库的第一部分通过复制model数据库中的内容创建,剩余部分由空页填充。由于SQL Server每次启动时都要创建tempdb数据库,model数据库必须一直存在于SQL Server系统中。
(4)msdb数据库
msdb数据库供SQL Server代理程序调度警报和作业以及记录操作员时使用。
2.2 用户数据库
用户数据库是用户创建的数据库,用来存放用户的数据信息。
3用户数据库的迁移方法
我们知道,在新建一个数据库的时候,分别指定其数据文件(..mdf文件)以及事务日志文件(.ldf文件)存放的位置。所以数据库迁移,也就是把这两个文件,重新安置一个新地方。
对于用户数据库迁移方法有以下两种:
3.1在企业管理器中进行
(1)在企业管理器中选定要搬家的数据库名,在其上单击鼠标右键,出现如图1所示对话框。
图1
(2)选中“所有任务”,在其子菜单中单击“分离数据库”。
(3)将该数据库的数据文件和日志文件从旧的位置(如D:\MSSQL\Data)拷贝到新的位置(如E:\SQLDataNew)。
(4)再在企业管理器选中“数据库”文件夹,在其上单击鼠标右键,在出现的对话框中选中“所有任务”,在其子菜单中单击“附加数据库”。如图2所示。
图2
(5)在出现的“附加数据库”框中,选择数据库的两个文件的新位置。如图3所示。
图3
3.2用SQL系统存储过程:sp_detach_db/sp_attach_db实现
(1)使用下面语句分离数据库:
USEmaster
GO
EXECsp_detach_db'mydb'
GO
(2)将该数据库的数据文件和日志文件从旧的位置拷贝到新的位置。
(3)使用下面语句重新附加数据库:
USEmaster
GO
EXECsp_attach_db
'mydb','E:\SQLDataNew\mydbdata.mdf', 'E:\SQLDataNew\mydblog.ldf''
GO
4 系统数据库迁移
4.1 master数据库迁移
(1)由于SQLServer每次启动的时候都需要读取master数据库,因此只有在企业管理器中改变SQLServer启动参数中master数据文件和日志文件的路径。
在 SQL Server属性的“常规”选项卡下面有一个叫做“启动参数”的按钮,单击后可以看到如图4所示的界面。
图4
其中,-d用来指定master数据库文件的路径,而–l用来指定master数据库日志文件的路径。
删除旧的master数据库文件和日志文件的路径,添加新的master数据文件和日志文件所在的路径,如:
-dE:\ SQLDataNew \master.mdf
-lE:\ SQLDataNew \mastlog.ldf
(2)停止SQLServer服务,将master.mdf文件和mastlog.ldf文件拷贝到新的位置,如E:\ SQLDataNew文件夹中。
(3)重新启动服务即可。
如果在“启动参数”添加的master数据库文件和日志文件的路径或文件名有误,就会造成SQLServer启动不起来。而此时想改正错误又因SQLServer启动不了而重设不了“启动参数”。其实这两个文件路径和文件名是放置在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Miccrosoft SQL Server\你安装SQL服务器的名\MSSQLServer\Parrmeters下的参数SQLArg1和SQLArg2中,修改这两个参数的值即可。
4.2 msdb数据库和model数据库迁移
(1)对于msdb数据库和model数据库,我们不能在企业管理器中实现分离和附加,只能用sp_detach_db和sp_attach_db存储过程来分离和附加这两个数据库。
其中,对于msdb数据库,还应确保SQL Serve代理当前没有运行,否则sp_detach_db存储过程将运行失败,并返回如下消息:“无法除去数据库'msdb',因为它当前正在使用。”
(2)调出如图4所示的“启动参数”对话框,添加新参数-T3608。这样,启动SQLServer,它就不会恢复除master之外的任何数据库。
(3)重新启动SQLServer,再如下分离msdb或者model数据库:
EXECsp_detach_db'msdb'
GO
(4)将数据文件和日志文件移到新的位置,然后再如下重新附加msdb数据库或者model数据库:
USEmaster
GO
EXECsp_attach_db
'msdb',‘E:\SQLDataNew\msdbdata.mdf', 'E:\SQLDataNew\msdblog.ldf '
GO
(5)在企业管理器中,从“启动参数”框中删除-T3608跟踪标记,再停止并重新启动SQLServer。
4.3 tempdb数据库迁移
对于tempdb数据库,则可以直接使用ALTERDATABASE语句来为数据文件和日志文件指定新的存放位置,如下所示:
USEmaster
GO
ALTERDATABASEtempdbMODIFYFILE(NAME=tempdev,FILENAME ='E:\SQLDataNew \tempdb.mdf')
GO
ALTERDATABASEtempdbMODIFYFILE(NAME=templog,FILENAME=
' E:\SQLDataNew \templog.ldf')
GO
5 总结
总之,在SQL Server中,数据库有两大家族:用户数据库与系统数据库。对于它们迁移要分别采用不同的方法来实现。其中用户数据库的迁移比较简单,而系统数据库的迁移方法较复杂。
参考文献:
[1]郑阿奇等编.SQL Server实用教程. 北京:电子工业出版社,2005.
[2](美)Brian Larson.Microsoft SQL Server 2000 Services. 北京:清华大学出版社,2005.
[3]Baya Pavliashvili. SQL Server User.http://www.samspublishing.com/articles/article.asp?p=31673&rl=1.,2006.3
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。