次の方法で共有


IBCPSession::BCPControl (OLE DB)

一括コピー操作のオプションを設定します。

構文

  
HRESULT BCPControl(   
inteOption,  
void *iValue);  

注釈

BCPControl メソッドは、一括コピーを取り消す前に許容されるエラーの数、データ ファイルからコピーする最初と最後の行の数、バッチ サイズなど、一括コピー操作のさまざまな制御パラメーターを設定します。

このメソッドは、SQL Server からデータを一括コピーするときに使用する SELECT ステートメントを指定するためにも使用されます。 eOption引数をBCP_OPTION_HINTSに設定し、引数iValue SELECT ステートメントを含むワイド文字列へのポインターを設定できます。

eOption に使用できる値は次のとおりです。

選択肢 説明
BCP_OPTION_ABORT 既に進行中の一括コピー操作を停止します。 別のスレッドから BCP_OPTION_ABORT の eOption 引数を指定して BCPControl メソッドを呼び出して、実行中の一括コピー操作を停止できます。 iValue 引数は無視されます。
BCP_OPTION_BATCH バッチあたりの行数。 既定値は 0 です。これは、データの抽出時にテーブル内のすべての行、またはデータが SQL Server にコピーされるときにユーザー データ ファイル内のすべての行を示します。 1 未満の値を指定すると、BCP_OPTION_BATCHが既定値にリセットされます。
BCP_OPTION_DELAYREADFMT ブール値を true に設定すると、実行時に IBCPSession::BCPReadFmt が読み取られます。 false (既定値) の場合、IBCPSession::BCPReadFmt はフォーマット ファイルをすぐに読み取ります。 BCP_OPTION_DELAYREADFMTが true で、IBCPSession::BCPColumns または IBCPSession::BCPColFmt を呼び出すと、シーケンス エラーが発生します。

IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)TRUE)および IBCPSession::BCPWriteFmt を呼び出した後にIBCPSession::BCPControl(BCPDELAYREADFMT, (void *)FALSE))を呼び出すと、シーケンス エラーも発生します。

詳細については、「 メタデータの検出」を参照してください。
BCP_OPTION_FILECP iValue 引数には、データ ファイルのコード ページの番号が含まれます。 コード ページの番号 (1252 や 850 など) または次のいずれかの値を指定できます。

- BCP_FILECP_ACP: ファイル内のデータは Microsoft Windows にありますか? クライアントのコード ページ。
- BCP_FILECP_OEMCP: ファイル内のデータは、クライアントの OEM コード ページにあります (既定)。
- BCP_FILECP_RAW: ファイル内のデータは SQL Server のコード ページにあります。
BCP_OPTION_FILEFMT データ ファイル形式のバージョン番号。 80 (SQL Server 2000)、90 (SQL Server 2005)、100 (SQL Server 2008 または SQL Server 2008 R2)、110 (SQL Server 2012)、または 120 (SQL Server 2014) を指定できます。 既定値は 120 です。 これは、以前のバージョンのサーバーでサポートされていた形式でデータをエクスポートおよびインポートする場合に便利です。 たとえば、SQL Server 2000 サーバーのテキスト列から取得したデータを SQL Server 2005 以降のサーバーの varchar(max) 列にインポートするには、80 を指定する必要があります。 同様に、 varchar(max) 列からデータをエクスポートするときに 80 を指定すると、テキスト列が SQL Server 2000 形式で保存されるのと同じように保存され、SQL Server 2000 サーバーのテキスト列にインポートできます。
BCP_OPTION_FIRST コピーするファイルまたはテーブルのデータの最初の行。 既定値は 1 です。値が 1 未満の場合、このオプションは既定値にリセットされます。
BCP_OPTION_FIRSTEX BCP 出力操作の場合、データ ファイルにコピーするデータベース テーブルの最初の行を指定します。

BCP の操作では、データベース テーブルにコピーするデータ ファイルの最初の行を指定します。

iValue パラメーターは、値を含む符号付き 64 ビット整数のアドレスである必要があります。 BCPFIRSTEX 2^63-1 に渡すことができる最大値。
BCP_OPTION_FMTXML 生成されるフォーマット ファイルを XML 形式にする必要があることを指定するために使用します。 既定ではオフであり、既定ではフォーマット ファイルはテキスト ファイルとして保存されます。 XML フォーマット ファイルは柔軟性が向上しますが、いくつかの制約が追加されています。 たとえば、以前のフォーマット ファイルで可能なフィールドのプレフィックスとターミネータを同時に指定することはできません。 手記: XML フォーマット ファイルは、SQL Server ツールが SQL Server Native Client と共にインストールされている場合にのみサポートされます。
BCP_OPTION_HINTS iValue 引数には、ワイド文字文字列ポインターが含まれています。 アドレス指定された文字列は、SQL Server の一括コピー処理ヒントまたは結果セットを返す Transact-SQL ステートメントを指定します。 複数の結果セットを返す Transact-SQL ステートメントが指定されている場合、最初のステートメントの後のすべての結果セットは無視されます。
BCP_OPTION_KEEPIDENTITY iValue 引数が TRUE に設定されている場合、このオプションは、一括コピー メソッドが、ID 制約で定義された SQL Server 列に指定されたデータ値を挿入することを指定します。 入力ファイルは、ID 列の値を指定する必要があります。 これが設定されていない場合は、挿入された行に対して新しい ID 値が生成されます。 ID 列のファイルに存在するデータはすべて無視されます。
BCP_OPTION_KEEPNULLS ファイル内の空のデータ値を SQL Server テーブルの NULL 値に変換するかどうかを指定します。 iValue 引数が TRUE に設定されている場合、SQL Server テーブルでは空の値が NULL に変換されます。 既定値は、既定値が存在する場合、SQL Server テーブル内の列の既定値に変換される空の値です。
BCP_OPTION_LAST コピーする最後の行。 既定では、すべての行がコピーされます。 値が 1 未満の場合、このオプションは既定値にリセットされます。
BCP_OPTION_LASTEX BCP 出力操作の場合、データ ファイルにコピーするデータベース テーブルの最後の行を指定します。

BCP の操作では、データベース テーブルにコピーするデータ ファイルの最後の行を指定します。

iValue パラメーターは、値を含む符号付き 64 ビット整数のアドレスである必要があります。 BCPLASTEX に渡すことができる最大値は 2^63-1 です。
BCP_OPTION_MAXERRS 一括コピー操作が失敗するまでに許容されるエラーの数。 既定値は 10 です。 値が 1 未満の場合、このオプションは既定値にリセットされます。 一括コピーでは、最大 65,535 個のエラーが発生します。 このオプションを 65,535 より大きい値に設定しようとすると、オプションは 65,535 に設定されます。
BCP_OPTION_ROWCOUNT 現在の (または最後の) BCP 操作の影響を受ける行数を返します。
BCP_OPTION_TEXTFILE データ ファイルはバイナリ ファイルではなく、テキスト ファイルです。 BCP は、データ ファイルの最初の 2 バイトの Unicode バイト マーカーをチェックすることによって、テキスト ファイルが Unicode であるかどうかの検出を行います。
BCP_OPTION_UNICODEFILE TRUE に設定すると、このオプションは入力ファイルが Unicode ファイル形式であることを指定します。

論争

eOption[in]
上記の「解説」セクションに記載されているオプションのいずれかに設定します。

iValue[in]
指定した eOption の値。 iValue 引数は、今後 64 ビット値に拡張できるように void ポインターにキャストされる整数値です。

リターン コードの値

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

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

予期しないエラー
メソッドの呼び出しは予期しないものでした。 たとえば、 IBCPSession::BCPInit メソッドは、この関数を呼び出す前に呼び出されませんでした。

E_OUTOFMEMORY
メモリ不足エラー。

こちらもご覧ください

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