SQL Server2000迁移历险记
时间:2011-04-20 来源:saville
上个月进行了一次SQL Server2000数据库服务器的迁移。由于过去做过类似的事情,因此没当一会事,结果在迁移过程中犯错,受到小小的惊吓。
原来的迁移计划如下:先是在新的服务器上安装SQL Server2000,其中数据文件目录结构与原服务器保持一致,接着停止新旧2台服务器的SQL Server服务,并将数据文件由原服务器拷至新服务器,最后关闭原服务器,启动新服务器的SQL Server服务并将机器名和ip地址改成原服务器一样。
可是在迁移过程中却碰到了不止一次的麻烦。
首先,当我准备拷数据文件时,突然发现安装新服务器的SQL Server2000时忘了更改数据文件路径,导致目录结构与原服务器不一致。于是立即在数据库服务器属性中更改了用户数据库的默认路径,接着动手更改系统数据库的路径。
先是更改master数据库的路径。在SQL Server启动参数中更改master数据库的路径,在启动参数中,-d用来指定master数据库文件的路径,–l用来指定master数据库日志文件的路径,将这些参数按需修改,然后停止SQL Server服务,将mdf 文件和ldf 文件拷贝到新的位置,再启动服务即可。
接着更改model和msdb数据库的路径。关闭SQL Server代理,在启动参数中添加新参数-T3608,用跟踪标记3608启动 SQL Server,这样它不会恢复除 master之外的任何数据库,然后分离model和msdb数据库,将数据文件和日志文件移到新的位置,再重新附加,注意重新附加的顺序必须首先是model,然后是msdb,最后删除-T3608跟踪标记,并重启动SQL Server。
最后更改tempdb路径,可以直接使用 ALTER DATABASE 语句来为数据文件和日志文件指定新的存放位置,如下所示:
USE master
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'D:\SQLData\tempdb.mdf')
GO
ALTER DATABASE tempdb MODIFY FILE(NAME = templog, FILENAME = 'D:\SQLData\templog.ldf')
GO
完成之后,我长出了一口气,于是按计划停止了2台服务器的SQL Server服务并拷贝数据文件,之后重启新服务器的SQL Server服务时却发现怎么都无法启动,经过仔细检查,原来是粗心过头,新服务器的数据文件目录还是建错了。原服务器是D:\SQLData\MSSQL\Data,新服务器的路径却是D:\SQLData\Data,这也未免太粗心了。自责过后立即想办法弥补。停止SQL Server服务,打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\Parameters,SQL Server启动参数就保存在这里,修改了master数据库的启动路径,然后再修改数据文件目录,启动SQL Server服务,终于ok了。
SQL Server成功启动之后我又发现了一个新问题,SQL Server代理一直无法启动,问题可真多啊。检查了一下日志,发现了问题的所在:SQL Server代理的日志路径有误。赶紧做了修改。SQL Server代理终于也成功启动了。
至此SQL Server2000迁移历险宣告结束。这些问题主要还是过于粗心导致,以后做任何事情都要细心再细心,不能托大啊!