将数据库系统在一台新服务器上恢复
思韵闪耀
2012-04-20
0

实例:将数据库系统在一台新服务器上恢复
下面是参考步骤。请注意,在命令行下运行的指令,是大小写敏感的。
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的所有配置都能够恢复到新的服务器上。只是用户数据库都是质疑状态,因为新服务器上没有它们的文件。接下来就可以使用前文介绍的恢复方法,将用户数据库依次恢复。


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关内容

将IIS设置克隆到新服务器...
将IIS设置克隆到新服务器的最佳方法是使用IIS配置文件。以下是详...
2025-06-06
SQLSERVER】批量导...
1.在Microsoft SQL Server Managemen...
2025-05-15
搭建Git服务器及本机克隆...
Git是什么?Git是目前世界上最先进的分布式版本控制系统。SVN...
2025-03-17
ubuntu环境下搭建gi...
操作环境:服务器:Ubuntu 24.04.2 LTS+git 2...
2025-03-17
SqlServer 数据库...
--查看数据库大小SELECT DB_NAME(database_...
2024-09-03
docker-compos...
1.Compose介绍 DockerCompose是一个用来定义和...
2024-04-26

热门资讯

sql中int型与varcha... sql中int转varchar或nvarchar,varchar或nvarchar转int的方法: ...
SQLSERVERAGENT ... 上的 SQLSERVERAGENT 服务启动过,然后又停止了。 (ObjectExplorer) 可...
SQL Server 中4个系... SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb 系统数据库...
SQL Server中如何设置... 对于已经建好的数据库表,是不能在SQL Server Management中可视化地修改ID为自增长...
该表已为了复制而被发布,所以... 场景:从发布库上将一数据库移到另一服务器,在对表改名时提示该表已为了复制而被发布,所以无法重命名。 ...
SQL Server 2008... SQL Server 2008 R2运行越久,占用内存会越来越大。 第一种: 有了上边的分析结果,解...
SQL Server (MSS... SQL Server (MSSQLSERVER) 启动后 自动生成文件 audittrace2022...
如果使用没有提供选项值的 Sq... 如果使用没有提供选项值的 SqlDependency,必须先调用 SqlDependency.Sta...
传递给数据库 'master'... 传递给数据库 master 中的日志扫描操作的日志扫描号无效 错误:连接数据库的时候提示:SQL S...
数据仓库SSAS+SSIS+... 数据仓库SSAS+SSIS+SSRS SSAS- 1,用ssas生成多维度,然后利用excel的da...