笔记133 将数据库系统在一台新服务器上恢复,包括系统数据库,命令行下恢复 企业级平台管理实践P66页

笔记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

 

posted @ 2013-08-03 22:57 桦仔 阅读(...) 评论(...)  编辑 收藏