一括コピー操作のオプションを設定します。
構文
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
メモリ不足エラー。