通过备份和还原来复制数据库

在 SQL Server 2008 R2 中,可以通过还原使用 SQL Server 2000、SQL Server 2005、SQL Server 2008 或 SQL Server 2008 R2 创建的数据库备份来创建新数据库。但是,SQL Server 2008 R2 无法还原使用 SQL Server 2000 或 SQL Server 2005 创建的 mastermodelmsdb 备份。此外,任何早期版本的 SQL Server 都无法还原 SQL Server 2008 R2 备份。

使用 SQL Server 7.0 或早期版本创建的数据库备份采用的格式不兼容,无法在 SQL Server 2008 R2 中还原。有关如何将使用 SQL Server 6.5 或早期版本创建的数据库迁移到 SQL Server 2005 的信息,请参阅 从 SQL Server 7.0 或更早版本复制数据库

重要说明重要提示

SQL Server 2008 和 SQL Server 2008 R2 使用与早期版本不同的默认路径。因此,若要从备份中还原在 SQL Server 2000 或 SQL Server 2005 的默认位置中创建的数据库,必须使用 MOVE 选项。有关新的默认路径的信息,请参阅 SQL Server 的默认实例和命名实例的文件位置。有关移动数据库文件的详细信息,请参阅本主题中后面的“移动数据库文件”。

使用备份和还原复制数据库的一般步骤

使用备份和还原将数据库复制到其他 SQL Server 实例时,源计算机和目标计算机可以是运行 SQL Server 的任何平台。

一般步骤如下:

  1. 备份可能位于 SQL Server 2000、SQL Server 2005、SQL Server 2008 或 SQL Server 2008 R2 实例上的源数据库。运行此 SQL Server 实例的计算机称为“源计算机”。

  2. 在要存放复制数据库的计算机(称为“目标计算机”)上,连接到计划为其还原数据库的 SQL Server 实例。如果需要,在目标服务器实例上创建与源数据库备份设备相同的设备。

  3. 在目标计算机上还原源数据库的备份。还原数据库操作将自动创建所有数据库文件。

下列主题讨论可能影响此进程的其他注意事项。

还原数据库文件之前

还原数据库将自动创建还原数据库所需的文件。默认情况下,还原进程中 SQL Server 创建的文件的名称和路径与源计算机上原始数据库中备份文件的名称和路径相同。若要避免出现错误和意外结果,请在执行还原操作之前找出还原操作自动创建的文件,这是因为:

  • 计算机上可能已经存在这些文件名,这会导致错误。

  • 目标位置可能空间不足。

  • 计算机上可能不存在目录结构或驱动器映射。

    例如,备份中包含一个需要还原到驱动器 E 的文件,而计算机上没有驱动器 E。

  • 如果可以替换数据库文件,与备份中的文件同名的现有数据库和文件将被覆盖,除非这些文件属于不同数据库。

注意事项注意

如果重复使用现有数据库的名称和目标,而且其文件可以被覆盖,则与备份中的文件同名的任何现有文件将被覆盖。

还原数据库时,如果需要,可以指定还原数据库的设备映射、文件名或路径。

移动数据库文件

如果由于前面提到的原因,无法将数据库备份中的文件还原到目标计算机上,则必须在还原这些文件时将它们移到新的位置。例如:

  • 您想要通过在 SQL Server 2000 或 SQL Server 2005 的默认位置创建的备份还原数据库。

  • 由于容量方面的原因,可能必须将备份中的一些数据库文件还原到其他驱动器上。这种情况很可能经常发生,因为单位中大多数计算机的磁盘驱动器的数目和大小不同或软件配置不同。

  • 为了便于进行测试,可能必须在同一台计算机上创建现有数据库的副本。在这种情况下,因为原始数据库的数据库文件已经存在,所以在还原操作过程中创建数据库副本时,需要指定其他文件名。

有关详细信息,请参阅本主题中后面的“将文件和文件组还原到新位置”。

更改数据库名称

在将数据库还原到目标计算机时可以更改其名称,而不必先还原数据库再手动更改其名称。例如,可能有必要将数据库名称由 Sales 改为 SalesCopy 来表示这是数据库的一个副本。

还原数据库时,显式提供的数据库名称将自动用作新的数据库名称。由于数据库名称尚不存在,因此需使用备份中的文件创建新的数据库名称。

使用还原升级数据库时

从 SQL Server 2000 或 SQL Server 2005 中还原备份时,提前了解目标计算机上是否存在备份中每个全文目录的路径(驱动器和目录)将很有帮助。若要列出备份中每个文件(包括目录文件)的逻辑名称和物理名称、路径名和文件名,请使用 RESTORE FILELISTONLY FROM <backup_device> 语句。有关详细信息,请参阅 RESTORE FILELISTONLY (Transact-SQL)

如果目标计算机上不存在相同的路径,则您可以执行下列两种操作:

  • 在目标计算机上创建相同的驱动器/目录映射。

  • 通过在 RESTORE DATABASE 语句中使用 WITH MOVE 子句,在还原操作过程中将目录文件移动到新位置。有关详细信息,请参阅 RESTORE (Transact-SQL)

有关升级全文索引的替代选项的信息,请参阅全文搜索升级

数据库所有权

在其他计算机上还原数据库时,启动还原操作的 SQL Server 登录用户或 Microsoft Windows 用户将自动成为新数据库的所有者。还原数据库时,系统管理员或新数据库所有者可以更改数据库所有权。若要防止未经授权的数据库还原操作,请使用介质集或备份集密码。有关详细信息,请参阅备份和还原的安全注意事项

还原到另一个服务器实例时管理元数据

将数据库还原到另一个服务器实例上时,为了给用户和应用程序提供一致的体验,您可能需要在另一个服务器实例上为数据库重新创建部分或全部元数据(例如登录和作业)。有关详细信息,请参阅当数据库在其他服务器实例上可用时管理元数据

查看备份集中的数据文件和日志文件

将文件和文件组还原到新位置

在现有文件上还原文件和文件组

将文件和文件组还原到新位置

用新名称还原数据库

重新启动中断的还原操作

更改数据库的所有者

使用 SQL Server 管理对象 (SMO) 复制数据库