IBCPSession::BCPExec (OLE DB)

一括コピー操作を実行します。

構文

HRESULT BCPExec( 
      DBROWCOUNT *pRowsCopied);

説明

BCPExec メソッドは、IBCPSession::BCPInit メソッドで使用されている eDirection パラメーターの値に従って、データをユーザー ファイルからデータベース テーブルに、またはデータベース テーブルからユーザー ファイルにコピーします。

BCPExec を呼び出す前に、有効なユーザー ファイル名を指定して BCPInit メソッドを呼び出します。 この操作を行わないと、エラーが発生します。 唯一の例外は、一括コピーの出力操作にクエリを使用する場合です。 この場合は、BCPInit メソッドでテーブル名に NULL を指定してから、BCP_OPTION_HINTS オプションを使用してクエリを指定します。

BCPExec メソッドは、短時間に優れた結果を得られる唯一の一括コピー メソッドです。 そのため、このメソッドは非同期モードをサポートする唯一の一括コピー メソッドでもあります。 非同期モードを使用するには、プロバイダー固有のセッション プロパティ SSPROP_ASYNCH_BULKCOPY を VARIANT_TRUE に設定してから、BCPExec メソッドを呼び出します。 このプロパティは、DBPROPSET_SQLSERVERSESSION プロパティ セットに含まれています。 コピーの完了を確認するには、同じパラメーターを指定して BCPExec メソッドを呼び出します。 一括コピーがまだ完了していない場合は、BCPExec メソッドから DB_S_ASYNCHRONOUS が返されます。 また、pRowsCopied 引数には、サーバーとの間で送受信される行数の進行状況を表す数も返されます。 サーバーに送信された行は、バッチの終わりに到達するまではコミットされません。

引数

  • pRowsCopied[out]
    DWORD へのポインターです。 BCPExec メソッドは、正常にコピーされた行数を使用して、DWORD を設定します。 pRowsCopied 引数に NULL を設定すると、BCPExec メソッドはこの引数を無視します。

リターン コード値

  • S_OK
    メソッドが成功しました。

  • E_FAIL
    プロバイダー固有のエラーが発生しました。エラーの詳細を確認するには、ISQLServerErrorInfo インターフェイスを使用してください。

  • E_UNEXPECTED
    メソッドの呼び出しが予期されませんでした。 たとえば、このメソッドを呼び出す前に、BCPInit メソッドが呼び出されなかった場合などです。 また、操作が BCP_OPTION_ABORT オプションを使用して中断され、その後、BCPExec メソッドが呼び出された場合にも発生します。

  • E_OUTOFMEMORY
    メモリ不足エラーです。

  • DB_S_ENDOFROWSET
    一括コピー操作が終了し、すべてのデータ転送が完了しました。

  • DB_S_ASYNCHRONOUS
    行の現在のバッチがコピーされました。 次のバッチを転送するには、BCPExec メソッドを再度呼び出します。

  • DB_S_ERRORSOCCURRED
    一括コピー操作中にエラーが発生しました。そのため、一部の行がコピーされなかった可能性があります。 エラー数は、許容されるエラーの最大数には達していません。

関連項目

概念

一括コピー操作の実行

その他の技術情報

IBCPSession (OLE DB)