将数据库系统在一台新服务器上恢复

实例:将数据库系统在一台新服务器上恢复
下面是参考步骤。请注意,在命令行下运行的指令,是大小写敏感的。
1. 确认备用服务器的SQL Server版本和原服务器一致。
因为我们需要恢复系统数据库,需要保证我们恢复的master和msdb要能够和备用机的resource数据库一致。否则SQL Server将不能正常工作。所谓版本一致,指的是“select @@version”返回的号码必须完全一样。

2. 在备用服务器的命令行窗口,用指令以单用户模式启动SQL Server服务。
NET START MSSQLSERVER /m

命令如果成功执行,应该返回如下信息:

The SQL Server (DR) service is starting..
The SQL Server (DR) service was started successfully.

3. 在命令行窗口,用sqlcmd这个命令行工具连接SQL Server。
sqlcmd -E -S sql2005pc

如果连接成功建立,应该返回下面的信息。

1>

4. 首先恢复Master数据库。
4.1 在sqlcmd的那个连接里,运行下面恢复语句(假设备份文件为’c:\lab\master.bak’)。
restore database master from disk = ‘c:\lab\master.bak’
go

它应该返回类似于下面的信息:

Processed 360 pages for database ‘master’, file ‘master’ on file 1.
Processed 4 pages for database ‘master’, file ‘mastlog’ on file 1.
The master database has been successfully restored. Shutting down SQL Server.
SQL Server is terminating this process.

SQL Server服务自动停止了。

4.2 由于恢复的master数据库里记载的其他数据库的路径和现在的路径不一致,这时候重新启动SQL Server会失败。必须要用trace flag 3608来启动。
net start MSSQLSERVER /f /m /T3608

如果正常,应该返回下面的信息。
The SQL Server (DR) service is starting.
The SQL Server (DR) service was started successfully.

4.3 用sqlcmd连接修改其他数据库的文件路径到现有的正确路径(’C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\’)。
在命令行窗口,用sqlcmd再次作连接。

sqlcmd -E -S sql2005pc

用下面语句修改各个系统数据库的文件路径。

alter database mssqlsystemresource modify file (name =data, filename=’C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\mssqlsystemresource.mdf’);
go

如果正常,应该返回下面的信息。
The file “data” has been modified in the system catalog. The new path will be used the next time the database is started.

alter database mssqlsystemresource modify file (name =log, filename=’C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\mssqlsystemresource.ldf’);
go

如果正常,应该返回下面的信息。
The file “log” has been modified in the system catalog. The new path will be used the next time the database is started.

alter database msdb modify file (name =MSDBData, filename=’C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdbdata.mdf’);
go

如果正常,应该返回下面的信息。
The file “MSDBData” has been modified in the system catalog. The new path will be used the next time the database is started.

alter database msdb modify file (name =MSDBLog, filename=’C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdblog.ldf’); go

如果正常,应该返回下面的信息。
The file “MSDBLog” has been modified in the system catalog. The new path will be used the next time the database is started.

alter database model modify file (name =modeldev, filename=’C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\model.mdf’);
go

如果正常,应该返回下面的信息。
The file “modeldev” has been modified in the system catalog. The new path will be used the next time the database is started.

alter database model modify file (name =modellog, filename=’C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\modellog.ldf’);
go

如果正常,应该返回下面的信息。
The file “modellog” has been modified in the system catalog. The new path will be used the next time the database is started.

alter database tempdb modify file (name =tempdev, filename=’C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\tempdb.mdf’);
go

如果正常,应该返回下面的信息。
The file “tempdev” has been modified in the system catalog. The new path will be used the next time the database is started.

alter database tempdb modify file (name =templog, filename=’C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\templog.ldf’);
go

如果正常,应该返回下面的信息。
The file “templog” has been modified in the system catalog. The new path will be used the next time the database is started.

全部修改完毕后,运行“exit”命令退出sqlcmd连接。

4.4 关闭SQL Server。
net stop MSSQLSERVER

如果正常,应该返回下面的信息。
The SQL Server (DR) service is stopping.
The SQL Server (DR) service was stopped successfully.

4.5 用正常模式启动SQL Server。
net start MSSQLSERVER
这时,SQL Server可以正常启动。但是它使用的系统数据库除了master以外,都是原先备用服务器自己的。我们要用生产服务器上的备份来替换它们。

5. 恢复msdb.
在运行下面命令之前,要先关闭SQL Server Agent服务。然后用restore命令恢复mdsb,将其指向新的文件路径。
restore database msdb from disk = ‘c:\lab\msdb.bak’
with move ‘MSDBData’ to ‘C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdbdata.mdf’,
move ‘MSDBLog’ to ‘C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdblog.ldf’, replace

如果正常,应该返回下面的信息。
Processed 600 pages for database ‘msdb’, file ‘MSDBData’ on file 1.
Processed 7 pages for database ‘msdb’, file ‘MSDBLog’ on file 1.
RESTORE DATABASE successfully processed 607 pages in 0.841 seconds (5.907 MB/sec).

6. 恢复model.
restore database model from disk = ‘c:\lab\model.bak’
with move ‘modeldev’ to ‘C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\model.mdf’,
move ‘modellog’ to ‘C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\modellog.ldf’, replace

如果正常,应该返回下面的信息。
Processed 152 pages for database ‘model’, file ‘modeldev’ on file 1.
Processed 3 pages for database ‘model’, file ‘modellog’ on file 1.
RESTORE DATABASE successfully processed 155 pages in 0.174 seconds (7.273 MB/sec).

7. 修改服务器名称
7.1 运行下面的语句你会发现,返回的还是原先的服务器名字。这时因为master是从那台机器来的。
Select @@servername

7.2 运行下面语句修改服务器名。

Sp_dropserver ‘<原先服务器名>‘
Go
Sp_addserver ‘SQL2005PC’, ‘local’
Go

7.3 重启SQL服务,再运行下面语句,就可以看到返回现在的服务器名字了。
Select @@servername
Go

做完这些操作后,原先SQL Server的所有配置都能够恢复到新的服务器上。只是用户数据库都是质疑状态,因为新服务器上没有它们的文件。接下来就可以使用前文介绍的恢复方法,将用户数据库依次恢复。

时间: 2024-11-05 15:56:26

将数据库系统在一台新服务器上恢复的相关文章

在一台新服务器上搭建项目问题汇总

1. 数据库配置文件用的域名, 但是服务器没有配置dns; 2.服务器tomcat无法启动起来, 因为tomcat的多数命令需要读写权限, chmod 777 ./start.sh; 3.用jenkins构建启动的时候, 没有权限启动tomcat, 因为整个tomcat文件夹可能是由root上传上去的, 但是构建启用的是其他用户, 这时候要chmod 777 -R  /tomcat路径, 赋予当前用户访问权限; 原文地址:https://www.cnblogs.com/chenzeyong/p/

Cacti监控一台Web服务器上多个Tomcat端口的实现

因为一台web应用服务器上面安装了多台tomcat,有多个端口,比如默认的8080,还有后续追加的9100,9300,9500等等.一个cacti_host_template_tomcat_server.xml模板只能指定监控一个tomcat服务端口. 因此如果想要监控一台web服务器上的多个tomcat服务器,那么就必须另外想办法,按照一个host上面一个模板监控一个tomcat服务来说的话,要想在一个host上面监控多个tomcat服务就需要构建多个模板xml文件.目前想到2种方法: (1)

一台WEB服务器上同时运行多个网站的三种方法

实验环境: 在做实验之前我们首先准备一下实验环境,首先在虚拟机上准备一台原始的干净的Windows Server 2008 R2的操作系统作为WEB服务器,ip地址设为192.168.100.10然后安装web服务器的步骤:1.首先在服务器管理器中添加角色,在服务器角色中选择Web服务器(IIS)角色,如图所示:2.IIS7.5被分割了40多个不同功能的模块,管理员可以根据需要定制安装相应的功能模块,这样可以使Web网站的受***面减少,安全性和性能大幅度提高.所以在"选择角色服务的步骤中采用默

在一台Apache服务器上创建多个站点(不同域名)

使用不同的域名来区分不同的网站,所有的域名解析都指向同一个 IP 地址.Apache通过在HTTP头中附带的 host参数来判断用户需要访问哪一个网站. 例如要在一台服务器上设置如下两个站点: http://www.test1.com http://www.test1.com 下面以CentOS 7.2系统为例,详细说明如何配置基于不同域名的Apache虚拟主机. 第一步:开启Apache的vhost模块 在 http.conf 配置文件中,找到下面的代码行,删除前面的 # 号,并开启这个 vh

在两台linux服务器上传输文件scp

将107服务器上的ins.war传到38服务器指定目录: scp /gxxj/apache-tomcat-7.0.78-ins/ins.war [email protected]:/data/ 将107服务器上的ins.war传到45服务器指定目录: scp /gxxj/apache-tomcat-7.0.78-ins/ins.war [email protected]:/var/tomcat-7/ 将38上的Tomcat文件夹移到45机器上: scp -r /data/apache-tomca

在一台物理服务器上搭建VSAN实验测试

VSAN要求:1.至少3台以上的vSphere ESXi 主机2.每台主机需要至少一块SSD和一块磁盘(至少有3台主机有这样的配置)提供给VSAN数据存储用3.每台主机至少要有千兆网卡,推荐万兆.如果是千兆,建议有一个千兆端口专门提供给VSAN专用.4.每台主机最少6GB内存实验步骤:1.在物理服务器上安装3台ESXI,安装过程略.注意要打开硬件虚拟化功能.2.3台ESXI安装完成后,新建数据中心加入主机. 3.由于测试环境没有SSD,使用以下命令将磁盘模拟成SSD,作为VSAN缓存.esxcl

sqlserver2014两台不同服务器上数据库同步

同步了快一个月了,哈哈,因为途中比较麻烦,第一次,遇到烦的地方就停下了,今天终于同步成功了,哈哈,下面我就来介绍一下我实现两台数据库同步的过程. 首先配置需要注意些东西: 1.打开sqlserver配置管理器,启动sqlserver代理,设置属性中,启动模式为自动启动(两台服务器都需要配置),具体如图: 2.在sqlserver中新建查询,输入sql语句 select @@SERVERNAME,查询到本服务器的别名,(因为一台电脑上的sqlserver连接其他电脑的sqlserver在数据库同步

Linux 如何通过某一台服务器调用执行多台远程服务器上的脚本,结果显示在本地?

现在都流行自动化运维了,可能目前技术不够,很多自动化工具还不怎么会用,所以本次只是通过ssh来实现功能. 说明:自己写的一个简单脚本,只是实现了基础功能,还有待优化. 一共三台机器: master:192.168.4.91 slave1:192.168.4.45 slave2:192.168.4.96 在slave1上远程执行master.slave2上的脚本,结果显示或者放到本地.当然多台系统也行. 一.脚本功能主要是监控系统的一些资源,像cpu,磁盘,网速等等.System_Load.sh

ubuntu16.04新服务器上配置selenium+firefox

ubuntu16.041安装pythonsudo apt-get install python默认2.7.122更新apt-getsudo apt-get update更新下apt-get库否则下载pip会出错3安装pipsudo apt-get install python-pip默认是8.1.14安装seleniumsudo pip install selenium5安装firefoxsudo apt-get install firefox6安装xvfbsudo apt-get instal