次の方法で共有


IBCPSession::BCPExec (OLE DB)

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

構文

  
HRESULT BCPExec(   
DBROWCOUNT *pRowsCopied);  

注釈

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

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

BCPExec メソッドは、任意の期間未処理である可能性が高い唯一の一括コピー メソッドです。 したがって、非同期モードをサポートする唯一の一括コピー メソッドです。 非同期モードを使用するには、 BCPExec メソッドを呼び出す前に、プロバイダー固有のセッション プロパティ SSPROP_ASYNCH_BULKCOPYをVARIANT_TRUEに設定します。 このプロパティは、DBPROPSET_SQLSERVERSESSION プロパティ セットで使用できます。 完了をテストするには、同じパラメーターを使用して BCPExec メソッドを呼び出します。 一括コピーがまだ完了していない場合、 BCPExec メソッドはDB_S_ASYNCHRONOUSを返します。 また、 pRowsCopied 引数には、サーバーとの間で送受信された行数の状態カウントも返されます。 サーバーに送信された行は、バッチの終了に達するまでコミットされません。

論争

pRowsCopied[out]
DWORD へのポインター。 BCPExec メソッドは、DWORD に正常にコピーされた行数を入力します。 pRowsCopied 引数が NULL に設定されている場合、BCPExec メソッドでは無視されます。

リターン コードの値

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

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

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

E_OUTOFMEMORY
メモリ不足エラー。

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

DB_S_ASYNCHRONOUS
行の現在のバッチがコピーされました。 BCPExec メソッドをもう一度呼び出して、次のバッチを転送します。

DB_S_ERRORSOCCURRED
一括コピー操作中にエラーが発生し、一部の行がコピーされていない可能性があります。 エラーの数は、許容される最大エラー数を下回っています。

こちらもご覧ください

IBCPSession (OLE DB)
一括コピー操作の実行