KB969845 - 修正: .NET Framework 2.0 SP2 または .NET Framework 3.5 SP1 をインストールした後、SQL Server 2005、SQL Server 2008、または SQL Server 2008 R2 Integration Services パッケージ (SSIS) を実行するとエラー メッセージが表示される: "ADO NET Source [1424]"

適用先
Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Standard X64 Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Workgroup Edition SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup

Microsoft は、Microsoft SQL Server 2005、Microsoft SQL Server 2008、Microsoft SQL Server 2008 R2 の修正プログラムを 1 つのダウンロード可能なファイルとして配布します。 修正プログラムは累積的であるため、新しい各リリースには、以前のSQL Server 2005、Microsoft SQL Server 2008、または SQL Server 2008 R2 修正プログラム リリースに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。

現象

たとえば次のようなシナリオを考えてみます。

  • 次のいずれかの.NET Frameworkインストールがあるコンピューターで、Microsoft SQL Server 2005、Microsoft SQL Server 2008、または SQL Server 2008 R2 Integration Services パッケージ (SSIS) を実行します。

    • .NET Framework 2.0 Service Pack 2 (SP2)
    • .NET Framework 3.5 Service Pack 1 (SP1)
  • SSIS パッケージでは、文字データをインポートするサードパーティの ODBC ドライバーを使用します。

ただし、SSIS パッケージを実行すると、次のエラー メッセージが表示されます。

[ADO NET ソース [1424]]エラー: SSIS エラー コード DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 "コンポーネント "ADO NET Source" (1424) はエラー コード0x80131937発生したため失敗し、"出力列 "columnname" (Number)" のエラー行の処理ではエラー時のエラーが指定されています。 指定したコンポーネントの指定したオブジェクトでエラーが発生しました。 この前にエラー メッセージが投稿され、エラーの詳細が表示される場合があります。

エラー 0xc0209029: Data Flow タスク: エラー 0x80131937 コードが発生したため、"コンポーネント "ComponentName" (1)" が失敗しました。..

[ADO NET ソース [1424]]エラー: コンポーネント "ADO NET Source" (1424) でデータを処理できませんでした。 パイプライン コンポーネントは、メソッド呼び出しから0xC0209029 HRESULT エラー コードを返しました。

[SSIS。パイプライン] エラー: SSIS エラー コード DTS_E_PRIMEOUTPUTFAILED。 コンポーネント "ADO NET Source" (1424) の PrimeOutput メソッドは、エラー コード 0xC02090F5を返しました。 このコンポーネントは、PrimeOutput() というパイプライン エンジンがエラー コードを返しました。 エラー コードの意味はコンポーネントによって定義されますが、エラーは致命的であり、パイプラインの実行が停止しました。 この前にエラー メッセージが投稿され、エラーの詳細が表示される場合があります。

この問題は、次の条件に該当する場合に、マネージド ODBC プロバイダーからアクセスされる ODBC ドライバーに影響します。

  • ExecuteReader 関数は、CommandBehavior.SequentialAccess パラメーターによって呼び出されます。 この呼び出しとパラメーターは、次の状況で使用されます。

    • SQL Server 2005 SSIS パッケージが DataReader ソースからデータを読み取る場合、または SQL Server 2008 SSIS パッケージがマネージド ADO.NET データ ソースからデータを読み取る場合。
    • データ ソースは、エラー値と切り捨て値をリダイレクトするように構成されていません。
  • OdbcDataReader.IsDbNull 関数が呼び出されます。 SSIS パッケージでは、このメソッドを使用して、フィールド内の値が NULL かどうかを判断します。

  • 次のいずれかの関数が呼び出されます。

    • OdbcDataReader.GetBytes 関数を呼び出して、DT_BYTESなどの特定のデータ型をマネージド ODBC プロバイダーから取得します。
    • OdbcDataReader.GetChars 関数を呼び出して、DT_WSTRなどの特定の文字列データ型をマネージド ODBC プロバイダーから取得します。

原因

.NET Framework 2.0 SP2 と .NET Framework 3.5 SP1 では、「現象」セクションで説明されているシナリオでネイティブ ODBC ドライバーから文字列を読み取るマネージド ODBC プロバイダーの変更が導入されています。 この変更により、SQLGetData API 関数を使用してネイティブ ODBC ドライバーで呼び出されるマネージド ODBC プロバイダーは、サイズ 0 のバッファーを使用します。 準拠している ODBC ドライバーには、この呼び出しに問題はありません。 ただし、このような状況では、準拠していない ODBC ドライバーが失敗する可能性があります。 準拠している ODBC ドライバーの場合、SQLGetData API 関数は、サイズ 0 のバッファーが検出されたときにSUCCESS_WITH_INFOを返します。 準拠していない ODBC ドライバーの場合、呼び出しはNO_DATAを返します。

解決策

修正プログラムの情報

マイクロソフトでは、この問題を修正する修正プログラムを提供しています。 ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。 この修正プログラムは、ここで説明する問題が発生しているシステムにのみ適用してください。 この修正プログラムは、今後さらにテストを行う場合があります。 したがって、この問題で深刻な影響を受けていない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことを推奨します。

修正プログラムをダウンロードできる場合は、このサポート技術情報の資料の上部に「修正プログラムのダウンロード」セクションがあります。 このセクションが表示されていない場合は、Microsoft カスタマー サービス & サポート にお問い合わせのうえ、修正プログラムを入手してください。

注: 別の問題が発生した場合、またはトラブルシューティングが必要な場合には、別のサービス リクエストを作成することが必要になる場合があります。 特定の修正プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。 Microsoft カスタマー サービス & サポート の電話番号一覧または別のサービス リクエストの作成については、次のマイクロソフト Web サイトを参照してください。

http://support.microsoft.com/contactus/?ws=support メモ "修正プログラムのダウンロードが可能" フォームには、修正プログラムを使用できる言語が表示されます。 使用している言語が表示されない場合は、その言語の修正プログラムが存在しないことになります。

前提条件

.NET Framework 2.0 Service Pack 2 がインストールされている必要があります。

再起動に関する情報

この修正プログラムの適用後にコンピューターを再起動する必要はありません。

レジストリ情報

レジストリを変更する必要はありません。

修正プログラム ファイル情報

この修正プログラムには、この記事に記載されている問題を修正するために必要なファイルのみが含まれています。 この修正プログラムには、製品を最新のビルドに完全に更新するために必要なすべてのファイルが含まれていない場合があります。この修正プログラムの英語版には、次の表に示すファイル属性 (またはそれ以降のファイル属性) があります。 これらのファイルの日付と時刻は世界協定時 (UTC) で記載されています。 ファイル情報に表示される時刻は、ローカル時刻に変換されています。 UTC とローカル時刻との時差を確認するには、[コントロール パネル] の [日付と時刻][タイム ゾーン] タブを使用してください。

.NET Framework 2.0 for Windows 2000、Windows Server 2003、Windows XP、32 ビット バージョン

ファイル名 ファイルのバージョン ファイル サイズ 日付 時刻 プラットフォーム
System.data.dll 2.0.50727.4063 2,933,760 19- 05:08 x86

.NET Framework 2.0 for Windows 2000、Windows Server 2003、Windows XP、x64 バージョン

ファイル名 ファイルのバージョン ファイル サイズ 日付 時刻 プラットフォーム
System.data.dll 2.0.50727.4063 3,008,512 18- 23:51 x64
System.data.dll 2.0.50727.4063 2,933,760 19- 05:08 x86

.NET Framework 2.0 for Windows 2000、Windows Server 2003、Windows XP、IA-64 バージョン

ファイル名 ファイルのバージョン ファイル サイズ 日付 時刻 プラットフォーム
System.data.dll 2.0.50727.4063 2,933,760 19- 05:08 x86
System.data.dll 2.0.50727.4063 3,234,816 19- 01:09 IA-64

.NET Framework 2.0 for Windows Vista、Windows Server 2008、32 ビット バージョン

ファイル名 ファイルのバージョン ファイル サイズ 日付 時刻
System.data.dll 2.0.50727.4400 2,933,760 2009 年 9 月 10 日 1,154

.NET Framework 2.0 for Windows Vista、Windows Server 2008、x64 バージョン

ファイル名 ファイルのバージョン ファイル サイズ 日付 時刻
System.data.dll 2.0.50727.4400 3,008,512 2009 年 9 月 10 日 1,154

.NET Framework 2.0 for Windows Vista、Windows Server 2008、IA-64 バージョン

ファイル名 ファイルのバージョン ファイル サイズ 日付 時刻
System.data.dll 2.0.50727.4400 3,234,816 2009 年 9 月 10 日 1,154

回避策

この問題を回避するには、以下のいずれかの方法を使用します。

方法 1

SSIS パッケージを編集して、DataReader ソースまたはマネージド ADO.NET データ ソースでエラーと切り捨てリダイレクトを構成します。 SSIS パッケージを編集してエラー出力を宛先にリダイレクトすると、コピー先に行が書き込まれなくても、パッケージは正常に実行されます。 そのためには、以下の手順を実行します。

注 次の手順では、DataReader ソースからデータを読み取る SQL Server 2005 SSIS パッケージを使用していることを前提としています。

  1. SQL Server Business Intelligence Development Studio で SSIS パッケージを開きます。

  2. Data Flow デザイナーで [DataReader ソースの詳細エディター] ダイアログ ボックスを開きます。

  3. [入力と出力のプロパティ] タブをクリックし、[入力と出力] ツリーの [DataReader 出力] ノードを展開します。

  4. [ 出力列] ノードを展開します。

  5. [ 出力列] ノードの下の各列をクリックし、DataType プロパティを調べます。 DataType プロパティがDT_WSTR、DT_NTEXT、DT_BYTES、またはDT_IMAGEの各列について、次の 2 つのプロパティを編集します。

    • ErrorRowDisposition プロパティを RD_RedirectRow に設定します。
    • TruncationRowDisposition プロパティを RD_RedirectRow に設定します。
  6. [OK] をクリックして変更を保存します。

  7. Data Flow デザイナーで、新しい宛先を追加します。 たとえば、フラット ファイルの保存先やSQL Server宛先を追加します。

  8. DataReader ソースの赤い矢印を使用して、新しく追加された宛先に接続します。 この操作により、エラー行と切り捨て行が宛先に送られ、エラー行が保存されます。

  9. ODBC 文字列またはイメージ列にアクセスし、「現象」セクションに記載されているエラー メッセージで失敗するすべてのData Flowタスクについて、手順 1 から 8 を繰り返します。

方法 2

.NET Framework 2.0 SP2 または .NET Framework 3.5 SP1 をアンインストールします。 ただし、サービス パックをアンインストールすることはお勧めしません。これは、サービス パックが提供する信頼性、機能の改善、パフォーマンスの最適化を犠牲にするためです。

.NET Framework 2.0 SP2 または .NET Framework 3.5 SP1 をインストールする前の状態にシステムを復元するには、次の手順を実行します。

  1. コントロール パネルで、[プログラムの追加と削除] をダブルクリックします。

  2. Microsoft .NET Framework 3.5 SP1 を見つけてアンインストールします。

  3. Microsoft .NET Framework 3.0 SP2 を見つけてアンインストールします。

  4. Microsoft .NET Framework 2.0 SP2 を見つけてアンインストールします。

  5. .NET Framework 3.5 の元のリリースを再インストールします。 この手順では、.NET Framework 2.0 SP1 と .NET Framework 3.0 SP1 を再インストールします。 .NET Framework 3.5 を入手するには、次の Microsoft Web サイトを参照してください。
    displaylang=en http://www.microsoft.com/download/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&

方法 3

サード パーティの ODBC ドライバーのベンダーに問い合わせて、ベンダーがこの問題を解決するためのドライバーの更新プログラムを持っているかどうかを確認してください。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。