笔记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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!