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