[FIX] DTS オブジェクトの転送は 64 KB 以上の BLOB データを転送しない

文書翻訳 文書翻訳
文書番号: 257425 - 対象製品
この記事は、以前は次の ID で公開されていました: JP257425
すべて展開する | すべて折りたたむ

現象

DTS (データ変換サービス) オブジェクトの転送機能は、DTS が転送しているデータベースの text、ntext、または image 列の行に 64 KB 以上のデータが含まれている場合、BLOB (バイナリ ラージ オブジェクト) データを正常に転送しないことがあります。

場合によって現象は異なりますが、以下の問題が発生することがあります。
  • アクセス違反またはその他の例外。
  • SQL Server Enterprise Manager (SEM) が応答を停止 (ハングアップ) することがあります。
  • 間違ったデータの転送。
  • 転送されたデータが切り詰められていることがあります。

原因

オブジェクトの転送機能は、SQL-DMO (SQL 分散管理オブジェクト) を使用して転送を実行します。DMO はフィールドごとに 64 KB 以上の BLOB を転送するように設計されていません。

回避策

オブジェクトの転送は、DTS インポート/エクスポート ウィザードの [SQL Server 7.0 データベース間のオブジェクトとデータの転送] というオプションに相当します。大容量の 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 の問題として確認しています。
この問題は、Microsoft SQL Server 7.0 Service Pack 1 で修正されています。
最新の SQL Server サービスパックのダウンロードおよびインストールについて詳しくは以下をご覧下さい。

http://www.microsoft.com/japan/sql/download/default.asp (日本語版)
http://www.microsoft.com/sql/downloads/default.htm(英語版)

詳細

Enterprise Manager (SEM) を実行しているコンピュータに SQL Server 7.0 Service Pack 1 以降がインストールされている場合、64 KB 以上の BLOB データの転送中にアクセス違反、SEM インスタンスの応答の停止、または予期しない問題は発生しません。ただし、DMO Transfer メソッドでは BLOB の最大サイズが 64 KB に制限されているので、64 KB 以上の text、image、および ntext データは変換元データベースでは 64,000 バイトに切り詰められます。転送ログ ディレクトリにあるファイル <server>.<destination db>.LOG では各行の切り詰めの状況がレポートされています。
::エラー::
転送状態 : データ転送中 : (テーブル '[dbo].[bigtext]')
テーブル [dbo].[bigtext]、列 2 でデータの切り捨てが発生しました。
行が切り詰められている場合にも、GUI が次のメッセージをレポートすることに注意してください。
Microsoft SQL Server から Microsoft SQL Server にオブジェクトが正常にコピーされました。
SQL Server 2000 DMO Transfer (または DTS のオブジェクトの転送) は最大で 8 MBのテキストを転送します。8 MB 以上のテキストを転送しようとすると、DTS のオブジェクトの転送は次のエラー メッセージを出力し転送に失敗します。
Microsoft SQL Server から Microsoft SQL Server へのオブジェクトのコピーに失敗しました。
[パッケージ実行中] ダイアログ ボックス (SQL Server オブジェクトのコピー) で失敗したステップをダブルクリックすると、次のエラー メッセージが表示されます。
[SQL-DMO] 一括コピーが実行できません。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 257425 (最終更新日 2001-10-10) をもとに作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 257425 - 最終更新日: 2002年5月31日 - リビジョン: 1.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 7.0 Standard Edition
キーワード:?
kbbug kbfix kbsqlserv700bug KB257425
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

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