INF:使用 BACKUP 和 RESTORE 命令将 SQL Server 7.0 数据库移到新的服务器上

文章翻译 文章翻译
文章编号: 304692 - 查看本文应用于的产品
本文的发布号曾为 CHS304692
展开全部 | 关闭全部

本文内容

概要

本文介绍如何将用户和系统的数据库备份恢复到驱动器盘符配置与最初备份数据库的服务器不同的另一个 SQL Server 7.0 系统上。要通过数据库备份或数据库恢复移动数据库时,可以使用此方法。有关使用其他方法的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
CHS224071INF:将 SQL Server 7.0 数据库移动到新位置
备注:本文中的说明不适用于 SQL Server 2000。

不能将 SQL Server 7.0 mastermodelmsdb 或分发系统数据库恢复到 SQL Server 2000 上。SQL Server 7.0 系统数据库与 SQL Server 2000 不兼容。

更多信息

本文中的示例基于以下假设:
  • 目标 SQL Server 7.0 系统安装在 D:\Mssql7 目录中,而数据库文件和日志文件位于默认目录 D:\Mssql7\data 中。
  • 源 SQL Server 7.0 系统安装在 C:\Mssql7 目录中,而数据库文件和日志文件位于默认目录 C:\Mssql7\data 中。

先决条件

  • 从当前位置备份所有数据库,特别是 master 数据库、model 数据库和 msdb 数据库。
  • 您需要具有系统管理员权限。
  • 您需要知道要恢复的数据库的所有数据和日志文件的逻辑名称和物理名称。

    备注:若要确定要从备份集中恢复的所有文件的逻辑名称和物理名称,请在命令提示符下运行以下命令,其中,mydbdata.bak 是包含数据库备份的文件的名称:
    RESTORE FILELISTONLY FROM DISK='d:\mssql7\backup\mydbdata.bak'
    go
  • 源 SQL Server 7.0 系统和目标 SQL Server 7.0 系统应装有相同的 Service Pack 和修补程序。
如果您在移动过程中遇到问题并且无法访问移动的数据库,或者如果您无法启动 SQL Server,请检查 SQL Server 错误日志和 SQL Server 7.0 联机图书,查看有关您遇到的问题的详细信息。

恢复数据库

  1. 恢复 master 数据库。

    在下例中,master 数据库的完整数据库备份文件 (Master_db.bak) 包含一个数据文件 (Master.mdf) 和一个日志文件 (Mastlog.ldf)。
    1. 在命令提示符下运行以下命令启动 SQL Server:
      d:\mssql7\binn\sqlservr -c -m

      备注-m 开关以单用户模式启动 SQL Server。在单用户模式下,只能成功建立一个连接。请注意是否有任何其他客户机或服务可能会在您通过 SQL Server 查询分析器建立连接前使用那个连接。
    2. 在 SQL Server 查询分析器中,使用以下语法恢复 master 数据库的备份:
      RESTORE DATABASE master FROM disk='d:\mssql7\backup\master_db.bak'
      WITH MOVE 'master' to 'd:\mssql7\data\master.mdf',
      MOVE 'mastlog' to 'd:\mssql7\data\mastlog.ldf',
      REPLACE
      go
      备注:SQL Server 在您恢复完 master 数据库后将自动关闭。
    3. 在命令提示符下运行以下命令启动 SQL Server:
      d:\mssql7\binn\sqlservr -c -f -T3608
      备注:使用这个语法,您可以执行系统表更新。
    4. 在 SQL Server 查询分析器中,执行下面一组语句:

      警告:错误地更新系统表可能会导致严重的问题,甚至可能需要重新安装 SQL Server 系统。Microsoft 不能保证能够解决因错误更新系统表而导致的问题。更新系统表的后果自负。
      USE master
      go
      UPDATE sysdatabases SET filename='d:\mssql7\data\tempdb.mdf' WHERE name='tempdb'
      go
      ALTER DATABASE tempdb MODIFY FILE (name = tempdev, filename = 'd:\mssql7\data\tempdb.mdf')
      ALTER DATABASE tempdb MODIFY FILE (name = templog, filename = 'd:\mssql7\data\templog.ldf')
      go
      应出现以下信息,确认更改:
      File 'tempdev' modified in sysaltfiles.Delete old file after restarting SQL Server.

      File 'templog' modified in sysaltfiles.Delete old file after restarting SQL Server.
  2. 恢复 model 数据库。

    在下例中,model 数据库的完整数据库备份文件 (Model_db.bak) 包含一个数据文件 (Model.mdf) 和一个日志文件 (Modellog.ldf)。如果没有 model 数据库的备份,或者如果要使用 SQL Server 安装过程中默认安装的备份,可以重新映射 model 数据库。这一步骤类似于第 4 步中对 northwind 数据库和 pubs 数据库执行的操作。
    1. 在 SQL Server 查询分析器中,执行以下存储过程,将当前 model 数据库从 SQL Server 中分离出来:
      exec sp_detach_db N'model'
      go
      执行完该存储过程后,将出现以下信息:
      Successfully detached database 'model'
      DBCC execution completed.If DBCC printed error messages, contact your system administrator
      备注:需要分离 model 数据库是因为不能直接使用 RESTORE 语句覆盖它。恢复该数据库前,必须删除该系统数据库的系统表引用。但是,您不能通过删除该数据库而删除该系统数据库的系统表应用。
    2. 在 SQL Server 查询分析器中,使用以下语法恢复 model 数据库的备份:
      RESTORE DATABASE model FROM disk='d:\mssql7\backup\model_db.bak'
      WITH MOVE 'modeldev' TO 'd:\mssql7\data\model.mdf',
      MOVE 'modellog' TO 'd:\mssql7\data\modellog.ldf',
      REPLACE
      go
      备注:SQL Server 在您恢复完 model 数据库后将自动关闭。
  3. 恢复 msdb 数据库。

    在下例中,msdb 数据库的完整数据库备份文件 (Msdb_db.bak) 包含一个数据文件 (Msdbdata.mdf) 和一个日志文件 (Msdblog.ldf)。
    1. 在命令提示符下运行以下命令启动 SQL Server:
      d:\mssql7\binn\sqlservr -c -f -T3608
    2. 在 SQL Server 查询分析器中,执行以下存储过程,分离 msdb 数据库:
      exec sp_detach_db N'msdb'
      go
    3. 在 SQL Server 查询分析器中,使用以下语法恢复 msdb 数据库的备份:
      RESTORE DATABASE msdb FROM disk='d:\mssql7\backup\msdb_db.bak'
      WITH MOVE 'msdbdata' TO 'd:\mssql7\data\msdbdata.mdf',
      MOVE 'msdblog' TO 'd:\mssql7\data\msdblog.ldf',
      REPLACE
      go
      备注:SQL Server 在您恢复完 msdb 数据库后将自动关闭。
  4. northwind pubs 数据库:

    恢复完 master 数据库后,northwind 数据库和 pubs 数据库的系统表项都已更改,而这两个数据库(与所有其他用户数据库一样)处于 Suspect 模式。如果要使用原数据库文件并将其重新连接到服务器,请使用以下示例。否则,如果要从备份恢复副本,请使用第 6 步中的 mydb 数据库示例。使用以下示例更新 northwind 数据库的系统表引用。northwind 数据库包含一个数据文件 (Northwind.mdf) 和一个日志文件 (Northwind.ldf)。
    1. 在命令提示符下运行以下命令启动 SQL Server:
      d:\mssql7\binn\sqlservr -c -f -T3608
    2. 在 SQL Server 查询分析器中,执行以下存储过程,分离 northwind 数据库:
      exec sp_detach_db N'northwind'
      go

      备注:可能会出现以下信息,表示没有权限访问物理文件:
      Server:Msg 947, Level 16, State 1, Line 1 Error while closing database 'Northwind' cleanly.
      Successfully detached database 'northwind'.
      DBCC execution completed.If DBCC printed error messages, contact your system administrator.
    3. 在 SQL Server 查询分析器中,使用以下语法附加 northwind 数据库:
      exec sp_attach_db N'northwind', N'd:\mssql7\data\northwnd.mdf', N'd:\mssql7\data\northwnd.ldf'
      go
  5. 重新映射 pubs 数据库。

    pubs 数据库包含一个数据文件 (Pubs.mdf) 和一个日志文件 (Pubs_log.ldf)。可以按照重新映射 northwind 数据库的相同方式重新映射 pubs 数据库。
  6. 恢复 mydb 数据库。

    mydb 数据库的完整数据库备份文件 (Mydb_db.bak) 包含一个数据文件 (Mydbdata.mdf) 和一个日志文件 (Mydblog.ldf)。
    1. 在 SQL Server 查询分析器中,执行以下存储过程,分离 mydb 数据库:
      exec sp_detach_db N'mydb'
      go
    2. 在 SQL Server 查询分析器中,使用以下语法恢复 mydb 数据库的备份:
      RESTORE DATABASE mydb FROM disk='d:\mssql7\backup\mydb_db.bak'
      WITH MOVE 'mydbdata' TO 'd:\mssql7\data\mydbdata.mdf',
      MOVE 'mydblog' TO 'd:\mssql7\data\mydblog.ldf',
      REPLACE
      go
  7. 重命名 SQL Server。

    重要说明:只有在必须更改刚刚将 master 数据库恢复到的 SQL Server 系统的名称时,才需要执行此步骤。

    例如,如果属于以下情况,则需要重命名 SQL Server:

    • a.您从名为 SOURCESVR 的计算机将数据库备份恢复到名为 TARGETSVR 的计算机。
    • b.而名为 TARGETSVR 的计算机上的 SQL Server 名为 SOURCESVR。
    如果需要重命名 SQL Server,请使用以下语法同步计算机名和 SQL Server 的名称:
    exec sp_dropserver 'SOURCESVR'
    go
    exec sp_addserver 'TARGETSVR', 'LOCAL'
    go
  8. o.重新启动 SQL Server 服务。

参考

有关更多信息,请单击下列文章编号,查看相应的 Microsoft 知识库文章:
Q224071INF:将 SQL Server 7.0 数据库移动到新位置
314546HOW TO:Move Databases Between Computers That Run SQL Server(在运行 SQL Server 的计算机之间移动数据库)
备注:有关其他启动选项(例如,-c-m -f)的更多信息,请参阅 SQL Server 联机图书。

属性

文章编号: 304692 - 最后修改: 2011年5月15日 - 修订: 2.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 7.0 标准版
关键字:?
kbsqldeveloper kbinfo kbsqlserv700 kbsqlservsearch KB304692
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com