笔记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 --状态,因为服务器上没有它们的文件。接下来可以使用前文介绍的恢复方法,将用户数据库依次恢复