FIX:DTS 对象传输不传输大于 64 KB 的 BLOB 数据

本文已归档。它按“原样”提供,并且不再更新。
错误号:53859 (SQLBUG_70)
症状
在 DTS 进行传输的数据库中,如果“text”、“ntext”或“image”列中的任何行包含的数据大于 64 KB,数据转换服务 (DTS) 对象传输功能可能就不会成功传输二进制大型对象 (BLOB) 数据。

具体症状各异,但可能包括:
  • 访问冲突或其他异常。
  • SQL Server 企业管理器 (SEM) 可能停止响应(挂起)。
  • 传输的数据错误。
  • 传输的数据可能被截断。
原因
对象传输功能使用 SQL 分布式管理对象 (SQL-DMO) 执行传输操作。DMO 不能用于传输每个字段大于 64 KB 的 BLOB 数据。
替代方法
对象传输是标记为“在 SQL Server 7.0 数据库之间传输对象和数据”的“DTS 导入/导出向导”中的选项。若要避免“症状”部分中描述的问题,对于包含大量 text、ntext 或 image 数据的表,请使用“从源数据库复制表”选项。

您可能希望先使用对象传输来传输受影响表的架构,然后使用“从源数据库复制表”选项来移动数据(“复制表”并不传输索引、约束、权限以及其他架构细节)。要仅传输架构,请在使用对象传输功能传输表之前清除“复制数据”复选框。

要识别源数据库中包含可能受此问题影响的“text”、“ntext”或“image”列的表,请运行以下查询:
   USE <source database name>   GO   SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS    WHERE DATA_TYPE IN ('text', 'ntext', 'image')				
状态
Microsoft 已经确认这是 SQL Server 7.0 中存在的问题。此问题已在英文版 Service Pack 1 for Microsoft SQL Server 7.0 中得到更正。有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
232570INF:如何获取 Microsoft SQL Server 7.0 Service Pack 1 和 Microsoft Data Engine (MSDE) 1.0
有关更多信息,请与您的主要支持提供商联系。
更多信息
如果运行企业管理器 (SEM) 的计算机上安装了 SQL Server 7.0 Service Pack 1 或更高版本,则在传输大于 64 KB 的 BLOB 数据期间您不应遇到访问冲突、SEM 实例停止响应或其他意外问题。但是,DMO 传输方法的最大 BLOB 大小限制仍是 64 KB,因此在目标数据库中,大于 64 KB 的 text、image 和 ntext 数据将在 64000 字节处截断。传输日志目录中的 <服务器>.<目标数据库>.LOG 文件将报告每行的截断情况:
::错误::传输状态: 传输数据: (表“[dbo].[bigtext]”)在表 [dbo].[bigtext] 的第 2 列出现数据截断。					
请注意,即使已有行被截断,该 GUI 仍会报告以下消息:
Successfully copied objects from Microsoft SQL Server to Microsoft SQL Server.
SQL Server 2000 DMO 传输(或 DTS 中的对象传输)可传输最大 8 MB 的文本。如果试图传输的文本大于 8 MB,则 DTS 传输将失败,并显示以下错误消息:
Failed to copy objects from Microsoft SQL Server to Microsoft SQL Server.
如果在“正在执行包”对话框中双击失败的步骤(复制 SQL Server 对象),则会显示以下错误消息:
[SQL-DMO]大容量复制执行失败。
属性

文章 ID:257425 - 上次审阅时间:01/16/2015 20:17:03 - 修订版本: 2.1

Microsoft SQL Server 7.0 标准版

  • kbnosurvey kbarchive kbbug kbfix KB257425
反馈