运行SQL Server的计算机间移动数据库

作者:support.microsoft.com 时间:2009-01-20 13:07:00 

概要

本文分步介绍了如何在运行 SQL Server 的计算机之间移动 Microsoft SQL Server 用户数据库和大多数常见的 SQL Server 组件。

本文中介绍的步骤假定您不移动 master、model、tempdb 或 msdb 这些系统数据库。这些步骤为您传输登录以及master 和 msdb 数据库中包含的大多数常见组件提供了多个选项。

注意:支持将数据从 SQL Server 2000 迁移到 Microsoft SQL Server 2000(64 位)。您可以将一个 32 位数据库附加到一个 64 位数据库上,方法是:使用 sp_attach_db 系统存储过程或 sp_attach_single_file_db 系统存储过程,或者使用 32 位企业管理器中的备份和还原功能。您可以在 SQL Server 的 32 位和 64 位两种版本之间来回移动数据库。您还可以使用同样的方法从 SQL Server 7.0 迁移数据。但是,不支持将数据从 SQL Server 2000(64 位)降级到 SQL Server 7.0。 下面分别介绍这几种方法。

如果您使用的是 SQL Server 2005

您可以使用相同的方法从 SQL Server 7.0 或 SQL Server 2000 迁移数据。但是,Microsoft SQL Server 2005 中的管理工具与 SQL Server 7.0 或 SQL Server 2000 中的管理工具有所不同。您应该使用 SQL Server Management Studio(而不是 SQL Server 企业管理器)以及 SQL Server 导入和导出向导 (DTSWizard.exe)(而不是数据转换服务导入和导出数据向导)。

备份和还原

在源服务器上备份用户数据库,然后将用户数据库还原到目标服务器上。? 在备份过程中时可能有人使用数据库。如果用户在备份完成后对数据库执行 INSERT、UPDATE 或 DELETE 语句,则备份中不会包含这些更改。如果您必须传输所有更改,那么,假如您既执行事务日志备份又执行完整数据库备份,您可以以尽可能短的停止时间来传输这些更改。1. 在目标服务器上还原完整数据库备份,并指定 WITH NORECOVERY 选项。

注意:为防止对数据库做进一步的修改,请指导用户在源服务器上退出数据库活动。

2. 执行事务日志备份,然后使用 WITH RECOVERY 选项将事务日志备份还原到目标服务器上。停止时间仅限于事务日志备份和恢复的时间。

目标服务器上的数据库将与源服务器上的数据库大小相同。要减小数据库的大小,您必须在执行备份前压缩源数据库的大小,或者在完成还原后压缩目标数据库的大小。

如果您将数据库还原到的文件位置不同于源数据库的文件位置,则必须指定 WITH MOVE 选项。例如,在源服务器上,数据库位于 D:\Mssql\Data 文件夹中。目标服务器没有 D 驱动器,因而您需要将数据库还原到 C:\Mssql\Data 文件夹。 有关如何将数据库还原到其他位置的更多信息,请查看相关资料。

如果您想覆盖目标服务器上的一个现有数据库,则必须指定 WITH REPLACE 选项。

源服务器和目标服务器上的字符集、排序顺序和 Unicode 整序可能必须相同,具体取决于您要还原到 SQL Server 的哪种版本。有关更多信息,请参阅本文中的“关于排序规则的说明”一节。

Sp_detach_db 和 Sp_attach_db 存储过程

要使用 sp_detach_db 和 sp_attach_db 这两个存储过程,请按下列步骤操作:1. 使用 sp_detach_db 存储过程分离源服务器上的数据库。您必须将与数据库关联的 .mdf、.ndf 和 .ldf 这三个文件复制到目标服务器上。参见下表中对文件类型的描述:

文件扩展名      说明

.mdf           主要数据文件
.ndf           辅助数据文件
.ldf           事务日志文件
 
2. 使用 sp_attach_db 存储过程将数据库附加到目标服务器上,并指向您在上一步骤中复制到目标服务器的文件。

分离数据库后将无法访问该数据库,并且复制文件时也无法使用该数据库。在进行分离的那一时刻数据库中包含的所有数据都被移动。

 在您使用附加或分离方法时,两个服务器上的字符集、排序顺序和 Unicode 整序都必须相同。有关更多信息,请参阅本文中的“关于排序规则的说明”一节。

关于排序规则的说明

如果您使用备份和还原或附加和分离方法在两个 SQL Server 7.0 服务器之间移动数据库,则两个服务器上的字符集、排序顺序和 Unicode 整序都必须相同。如果您将数据库从 SQL Server 7.0 移到 SQL Server 2000,或者在不同的 SQL Server 2000 服务器之间移动数据库,则数据库将保留源数据库的整序。这意味着,如果运行 SQL Server 2000 的目标服务器的整序与源数据库的整序不同,则目标数据库的整序也将与目标服务器的 master、model、tempdb 和 msdb 数据库的整序不同。

第一步:导入和导出数据(在 SQL Server 数据库之间复制对象和数据)

您可以使用数据转换服务导入和导出数据向导来复制整个数据库或有选择地将源数据库中的对象和数据复制到目标数据库。? 在传输过程中,可能有人在使用源数据库。如果在传输过程中有人在使用源数据库,您可能会看到传输过程中出现一些阻滞现象。

在您使用导入和导出数据向导时,源服务器与目标服务器的字符集、排序顺序和整序不必相同。

因为源数据库中未使用的空间不会移动,所以目标数据库不必与源数据库一样大。同样,如果您只移动某些对象,则目标数据库也不必与源数据库一样大。

SQL Server 7.0 数据转换服务可能无法正确地传输大于 64 KB 的文本和图像数据。但 SQL Server 2000 版本的数据转换服务不存在此问题。

标签:
0
投稿

猜你喜欢

  • 使用python telnetlib批量备份交换机配置的方法

    2022-08-17 02:24:00
  • asp如何制作一个搜索引擎链接程序?

    2010-07-07 12:26:00
  • Python中动态创建类实例的方法

    2023-07-20 02:36:44
  • python3 flask实现文件上传功能

    2022-11-19 18:42:10
  • 浅谈为什么#{}可以防止SQL注入

    2024-01-27 07:19:08
  • python实现的简单抽奖系统实例

    2022-05-11 16:14:05
  • SQLite3中文编码 Python的实现

    2023-02-03 13:21:38
  • python实现音乐播放和下载小程序功能

    2023-07-03 17:59:03
  • 如何对MySQL数据库表进行锁定

    2009-02-10 10:39:00
  • JavaScript中函数声明与函数表达式的区别详解

    2024-04-19 10:02:34
  • vue.js的vue-cli脚手架中使用百度地图API的实例

    2024-05-05 09:07:59
  • 关于python并发编程中的协程

    2023-10-18 04:37:44
  • 从trim原型函数看js正则表达式的性能

    2008-12-11 13:55:00
  • 前端vue+express实现文件的上传下载示例

    2024-05-13 09:12:03
  • python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析

    2021-03-23 03:49:14
  • 成功解决ValueError: Supported target types are:('binary', 'multiclass'). Got 'continuous' instead.

    2023-01-24 03:59:00
  • Linux环境下MySQL-python安装过程分享

    2024-01-15 12:50:41
  • 使用Python来编写HTTP服务器的超级指南

    2022-12-28 20:40:24
  • 浅析Python 多行匹配模式

    2022-07-23 13:32:18
  • Python基于回溯法子集树模板解决0-1背包问题实例

    2021-02-02 08:57:54
  • asp之家 网络编程 m.aspxhome.com