在服务器之间复制数据

若要在 Microsoft SQL Server 数据库之间大容量传输数据,必须先将源数据库中的数据大容量导出到一个文件中。然后将此文件大容量导入到目标数据库中。

ms190923.note(zh-cn,SQL.90).gif重要提示:
对于使用“简单恢复模式”的数据库,建议在将数据大容量导入到表中后执行差异备份。对于使用大容量日志恢复模式或“完整恢复模式”的数据库,执行日志备份即可。有关详细信息,请参阅创建 SQL Server 数据库的完整备份和差异备份使用事务日志备份

使用 bcp 或 Transact-SQL 在服务器间复制数据

您可以使用 bcp 命令导出或导入数据,使用 BULK INSERT 或 INSERT ... SELECT * FROM OPENROWSET(BULK...) Transact-SQL 语句导入数据。

bcp 命令可用于在不同处理器体系结构的不同 SQL Server 实例间复制本机格式、字符格式或 Unicode 格式的数据。如果需要考虑灵活性,则可以使用格式化文件。如果导出数据时使用了某种格式或格式化文件,则导入数据时也必须使用相应的格式或格式化文件。

ms190923.note(zh-cn,SQL.90).gif注意:
如果您在使用不同排序规则的服务器实例间复制数据,请参阅在不同排序规则间复制数据

以 Unicode 本机格式存储信息

如果必须在 SQL Server 实例之间复制信息,则以 Unicode 本机格式存储信息会非常有用。如果对非字符数据使用本机格式,则不但可以节省时间还能够避免在各数据类型与字符格式之间进行不必要的转换。如果将扩展字符复制到非 Unicode 列,但这些字符无法表示出来,则可能会丢失这些字符。在使用不同代码页的服务器之间大容量传输数据时,对所有字符数据使用 Unicode 字符格式可以避免丢失扩展字符。但是,bcp 或支持大容量导入的 Transact-SQL 语句 [BULK INSERT 或 INSERT ... SELECT * FROM OPENROWSET(BULK...)] 可以读取 Unicode 本机格式的数据文件。

在数据库之间复制数据的其他方法

除了使用 bcp 或 Transact-SQL 外,一般您还可以使用下列任何一种方法在 SQL Server 数据库之间复制数据:

  • Integration Services (SSIS) 导入和导出向导
    此向导可访问各种数据源。您可以通过它在 SQL Server、平面文件、Microsoft Access、Microsoft Excel 和其他 OLE DB 访问接口之间复制数据。有关详细信息,请参阅使用 SQL Server 导入和导出向导创建包
  • INSERT 语句中包含的分布式查询。有关详细信息,请参阅分布式查询INSERT (Transact-SQL)
  • SELECT INTO 语句指定使用结果集来创建新表。有关详细信息,请参阅 SELECT (Transact-SQL)
ms190923.note(zh-cn,SQL.90).gif注意:
有关复制完整数据库的信息,请参阅将数据库复制到其他服务器

请参阅

概念

导入来自早期版本的 SQL Server 的本机格式数据和字符格式数据
优化大容量导入性能
大容量导入和导出数据的方案
使用 Unicode 字符格式导入或导出数据

其他资源

BACKUP (Transact-SQL)
bcp 实用工具
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
RESTORE (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助