次の方法で共有


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)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手