笔记133 将数据库系统在一台新服务器上恢复,包括系统数据库,命令行下恢复 企业级平台管理实践P66页
1 --将数据库系统在一台新服务器上恢复,包括系统数据库,命令行下恢复 企业级平台管理实践P66页
2
3
4 --master:记录SQL系统的所有系统级信息
5
6 --model:在SQL实例上为所有数据库创建的模版
7
8 --msdb:SQL代理用来安排警报和作业以及记录操作员信息的数据库,msdb数据库还包含历史记录表,错误页suspect_page
9 --备份和还原历史记录表
10
11 --resource:包含SQL附带的所有系统对象副本的只读数据库
12
13 --tempdb:用于保存临时或中间结果集的工作空间。每次启动SQL实例时都会重新创建此数据库。
14 --服务器实例关闭时,将永久删除tempdb数据库中的所有数据
15
16
17
18 --假设现在出现以下情况:原先服务器出现硬件故障,已经无法启动。需要整个SQL系统紧急
19 --迁移到一台备用服务器上(备用服务器名字叫sql2005pc,SQLSERVER是默认实例)
20
21 --备用服务器和原服务器不同名,SQL安装的路径也不一样。(备用服务器安装路径为
22 --C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL)
23
24 --因为良好的备份策略,现在手头有最新的master,msdb,model数据库备份,以及其他所有
25 --用户数据库备份
26
27 --现在需要将系统数据库恢复,以还原所有数据库系统信息(用户,密码,任务等)
28 --然后才能恢复用户数据库
29
30 --在这种情况下,恢复系统数据库需要修改系统数据库路径,还要修改SQL记录下自己的服务器名字
31
32 --注意:命令行下运行的指令是大小写敏感的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
33
34
35 --1、确认备用服务器的SQL版本和原服务器一致
36 SELECT @@VERSION
37 --返回的号码必须完全一样
38
39
40 --2、在备用服务器的命令行窗口,用指令以单用户模式启动SQL服务
41 --net start MSSQLSERVER /m
42
43
44 --3、在命令行窗口,用sqlcmd这个命令行工具连接SQL
45 --sqlcmd /E /S sql2005pc
46
47
48 --4、首先恢复master数据库
49 --(1)在sqlcmd下
50 RESTORE DATABASE master FROM DISK='c:\lab\master.bak'
51
52 --SQL服务自动停止
53
54 --(2)由于恢复的master数据库里记载其他数据库的路径和现在的路径不一致,这时候重新
55 --启动SQL会失败,必须用跟踪标志3608来启动
56 --net start MSSQLSERVER /f /m /T3608
57
58 --(3)用sqlcmd连接修改其他数据库的文件路径到现有的正确路径
59 --sqlcmd /E /S sql2005pc
60
61 --resource数据库
62 ALTER DATABASE mssqlsystemresource MODIFY FILE(NAME=DATA,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\mssqlsystemresource.mdf')
63 GO
64
65 ALTER DATABASE mssqlsystemresource MODIFY FILE(NAME=LOG,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\mssqlsystemresource.ldf')
66 GO
67
68 --msdb数据库
69 ALTER DATABASE msdb MODIFY FILE(NAME=MSDBData,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdbdata.mdf')
70 GO
71
72 ALTER DATABASE msdb MODIFY FILE(NAME=MSDBLog,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdblog.ldf')
73 GO
74
75
76 --model数据库
77 ALTER DATABASE model MODIFY FILE(NAME=modeldev,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\model.mdf')
78 GO
79
80 ALTER DATABASE model MODIFY FILE(NAME=modellog,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\modellog.ldf')
81 GO
82
83
84
85 --tempdb数据库
86 ALTER DATABASE tempdb MODIFY FILE(NAME=tempdev,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\tempdb.mdf')
87 GO
88
89 ALTER DATABASE tempdb MODIFY FILE(NAME=templog,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\templog.ldf')
90 GO
91
92 --exit退出sqlcmd
93
94 --(4)关闭SQLSERVER
95 --net stop MSSQLSERVER
96
97
98 --(5)用正常模式启动SQLSERVER
99 --net start MSSQLSERVER
100
101
102 --5、除了master数据库之外其他数据库都是备用服务器的,用生产服务器上的备份来替换他们
103 --恢复msdb数据库
104 --关闭SQL Agent 用restore命令恢复msdb
105 RESTORE DATABASE msdb FROM DISK='c:\lab\msdb.bak'
106 WITH move 'MSDBData' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdbdata.mdf',
107 MOVE 'MSDBLog' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdblog.ldf' ,REPLACE
108
109 --6、恢复model数据库
110 RESTORE DATABASE model FROM DISK='c:\lab\model.bak'
111 WITH move 'modeldev' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\model.mdf',
112 MOVE 'modellog' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\modellog.ldf' ,REPLACE
113
114
115 --7、修改服务器名称
116 --(1)运行下面的语句你发现返回的是生产服务器名字,因为master数据库从那台机器来的
117 SELECT @@SERVERNAME
118
119 --(2)运行下面语句修改服务器名
120 EXEC sys.sp_dropserver @server = '原先服务器名'
121 GO
122 EXEC sys.sp_addserver @server = 'SQL2005PC'
123 GO
124
125
126
127 --(3)重启SQL服务,在运行下面的语句就可以返回现在的服务器名字
128 SELECT @@SERVERNAME
129 GO
130
131 --最后依次将用户数据库恢复就可以了
132
133
134
135
136
137
138 ----------------------------在命令行下恢复master数据库---------------------------------------------------------
139 --全部系统数据库的恢复模式都是:完整恢复!!!!!!!!!!!!!!!
140 --命令行下:
141 --net start MSSQLSERVER /m
142
143 --sqlcmd /E /S sql2005pc
144
145 --在sqlcmd下
146 RESTORE DATABASE master FROM DISK='c:\lab\master.bak'
147
148 --net start MSSQLSERER /f /m /T3608
149
150
151 --一些命令:
152 ALTER DATABASE master SET ONLINE
153 ALTER DATABASE master SET OFFLINE
154 ALTER DATABASE master SET MULTI_USER
155 ALTER DATABASE master SET SINGLE_USER
156 ALTER DATABASE master SET EMERGENCY