笔记55-徐 SQLSERVER数据库迁移步骤

笔记55-徐 SQLSERVER数据库迁移步骤

  1 --SQLSERVER数据库迁移步骤:
  2 --1、SELECT @@VERSION返回的号码必须完全一样 1、sql2005 2、企业版  3、操作系统 win7SP1  sql补丁包不用一样
  3 --2、在备用服务器的命令行窗口,用指令以单用户模式启动SQL服务
  4 --net start MSSQLSERVER /m
  5 
  6 --命令成功执行应该返回如下信息:
  7 --the sqlserver (dr) service is starting...
  8 --the sqlserver (dr) service was started successfully
  9 
 10 --3、在命令行窗口用sqlcmd连接sqlserver
 11 --sqlcmd /E /S sql2005pc    sql2005pc:计算机名 /E 可信连接  /S 服务器
 12 --如果成功连接应该返回以下信息
 13 --1>
 14 
 15 --4、首先恢复master数据库
 16 --(1)在sqlcmd的那个连接里,运行下面的恢复语句(假设备份文件为C:\lab\master.bak)
 17 RESTORE DATABASE master FROM DISK='C:\lab\master.bak'
 18 GO
 19 --返回类似下面信息
 20 --the master database has been successfully restored.shutting down sql server
 21 --sqlserver is terminating this process
 22 --sql服务自动停止
 23 
 24 --(2)由于恢复的master数据库里记载的其他数据库的路径和现在的路径不一致,这时候重新启动sqlserver会失败。
 25 --必须要用跟踪标志3608来启动
 26 --net start MSSQLSERVER /f  /m  /T3608
 27 
 28 --如果正常,应该返回以下信息
 29 --the sqlserver (dr) service is starting...
 30 --the sqlserver (dr) service was started successfully
 31 
 32 --(3)用sqlcmd连接修改其他数据库的文件路径到现有的正确路径(C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\)
 33 --假定现在的数据文件的路径在C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\
 34 
 35 --在命令行窗口,用sqlcmd再次连接
 36 --sqlcmd /E /S sql2005pc
 37 
 38 --用下面语句修改各个系统数据库的文件路径
 39 
 40 ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=DATA,
 41 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\mssqlsystemresource.mdf')
 42 GO
 43 
 44 --如果正常,应该返回
 45 --the file "data" has been modified in the system catalog.the new path will be used the next time the database
 46 --is started
 47 
 48 ALTER DATABASE mssqlsystemresource MODIFY FILE(NAME=LOG,
 49 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\mssqlsystemresource.ldf')
 50 GO
 51 
 52 --如果正常,应该返回
 53 --the file "log" has been modified in the system catalog.the new path will be used the next time the database
 54 --is started
 55 ALTER DATABASE msdb MODIFY FILE(NAME=MSDBData,
 56 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdbdata.mdf')
 57 GO
 58 
 59 --返回信息同上
 60 ALTER DATABASE msdb MODIFY FILE(NAME=MSDBLog,
 61 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdblog.ldf')
 62 GO
 63 
 64 --返回信息同上
 65 
 66 ALTER DATABASE msdb MODIFY FILE(NAME=modeldev,
 67 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\model.mdf')
 68 GO
 69 
 70 --返回信息同上
 71 
 72 ALTER DATABASE msdb MODIFY FILE(NAME=modellog,
 73 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\modellog.ldf')
 74 GO
 75 
 76 --返回信息同上
 77 
 78 ALTER DATABASE msdb MODIFY FILE(NAME=tempdev,
 79 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\tempdb.mdf')
 80 GO
 81 
 82 --返回信息同上
 83 
 84 ALTER DATABASE msdb MODIFY FILE(NAME=templog,
 85 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\templog.ldf')
 86 GO
 87 
 88 --返回信息同上
 89 
 90 --全部修改完毕后,运行exit 命令退出sqlcmd连接
 91 
 92 --(4)关闭sqlserver
 93 --net stop MSSQLSERVER
 94 
 95 --如果正常,返回以下信息
 96 --the sqlserver (dr) service is stopping
 97 --the sqlserver (dr) service was stopped successfully
 98 
 99 --(5)用正常模式启动SQLSERVER
100 --net start MSSQLSERVER
101 
102 --这时,sqlserver可以正常启动。但是它使用的系统数据库除了master以外,都是原先备用服务器自己的
103 --我们要用生产服务器上的备份来替换它们
104 
105 --5、恢复msdb数据库
106 --在运行下面命令之前要先关闭SQL AGENT服务,然后用restore命令恢复msdb数据库,将其指向新的文件路径
107 RESTORE DATABASE msdb FROM DISK='C:\lab\msdb.bak' WITH
108 MOVE 'MSDBData' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdbdata.mdf',
109 MOVE 'MSDBLog' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdblog.ldf',REPLACE
110 GO
111 
112 --6、恢复model数据库
113 RESTORE DATABASE model FROM DISK='C:\lab\model.bak' WITH
114 MOVE 'modeldev' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\model.mdf',
115 MOVE 'modellog' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\modellog.ldf',REPLACE
116 GO
117 
118 --7、修改服务器名称
119 --(1)运行下面的语句你会发现,返回的还是原先的服务器名字。这是因为master数据库是从那台机器来的
120 SELECT @@SERVERNAME
121 --(2)运行下面语句修改服务器名
122 EXEC sys.sp_dropserver @server = '原服务器名' -- sysname
123    -- @droplogins = '' -- char(10) 5个中文 10个英文 10个数字
124 EXEC sys.sp_addserver @server = 'SQL2005PC', -- sysname
125     @local = 'local'-- varchar(10)
126 
127    
128 --http://www.yesky.com/imagesnew/software/tsql/ts_sp_addp_1ooi.htm
129 --@local:指定要添加的服务器是本地服务器还是远程服务器。@local 的数据类型为 varchar(10),默认值为 NULL。指定 @local 为 LOCAL 将定义 @server 为本地服务器的名称并使 @@SERVERNAME 函数返回 server。
130 --(在安装过程中,安装程序将该变量设置为计算机名。建议不要更改该名称。默认情况下,用户可通过计算机名连接到 SQL Server 而无需额外的配置。)
131 --只有将服务器关闭然后重新启动后,本地的定义才会生效。每个服务器中只能定义一个本地服务器。
132 
133 --@duplicate_ok:指定是否允许重复的服务器名。@duplicate_OK 的数据类型为 varchar(13),默认值为 NULL。@duplicate_OK 只能有 duplicate_OK 或 NULL 这两个值。如果指定了 duplicate_OK,
134 --则即使要添加的服务名已经存在,也不会发生错误。如果没有使用命名参数,则必须指定 @local
135 
136 
137 --(3)重启sql服务,再运行下面语句,就可以看到返回现在的服务器名字了
138 SELECT @@SERVERNAME
139 GO
140 
141 --做完这些操作后,原先SQLSERVER的所有配置都能够恢复到新的服务器上。只是用户数据库都是可疑
142 --状态,因为服务器上没有它们的文件。接下来可以使用前文介绍的恢复方法,将用户数据库依次恢复

 

posted @ 2013-07-29 08:51 桦仔 阅读(...) 评论(...)  编辑 收藏