IBCPSession::BCPControl (OLE DB)
一括コピー操作のオプションを設定します。
構文
HRESULT BCPControl(
int eOption,
void *iValue);
説明
BCPControl メソッドでは、一括コピー操作のさまざまな制御パラメーターを設定します。たとえば、一括コピーが取り消されるまでに発生してもかまわないエラーの数、データ ファイルから最初にコピーする行番号や最後にコピーする行番号、バッチ サイズなどを設定します。
また、このメソッドを使用して、SQL Server からデータを一括コピーするときに使用される SELECT ステートメントを指定することもできます。 引数 eOption に BCP_OPTION_HINTS を設定し、SELECT ステートメントを含むワイド文字列へのポインターを保持する引数 iValue を設定することができます。
eOption に指定できる値は次のとおりです。
オプション |
説明 |
||
---|---|---|---|
BCP_OPTION_ABORT |
既に実行中の一括コピー操作を停止します。 別のスレッドから eOption 引数に BCP_OPTION_ABORT を指定して BCPControl メソッドを呼び出し、実行中の一括コピー操作を停止できます。 この場合、iValue 引数は無視されます。 |
||
BCP_OPTION_BATCH |
バッチごとの行数を指定します。 既定値は 0 です。既定値を指定すると、データを抽出するときはテーブル内のすべての行が抽出されることを示し、データを SQL Server にコピーするときはユーザー データ ファイル内のすべての行がコピーされることを示します。 BCP_OPTION_BATCH に 1 未満の値を指定すると、既定値にリセットされます。 |
||
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_OPTION_FILEFMT |
データ ファイル形式のバージョン番号を指定します。 80 (SQL Server 2000)、90 (SQL Server 2005)、100 (SQL Server 2008 または SQL Server 2008 R2)、または 110 (SQL Server 2012) を指定できます。 既定値は 110 で、ファイルが SQL Server 2012 形式であることを示します。 このオプションは、以前のバージョンのサーバーでサポートされていた形式でデータをエクスポートおよびインポートする際に便利です。 たとえば、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 out 操作の場合は、データ ファイルにコピーするための、データベース テーブルの最初の行を指定します。 BCP in 操作の場合は、データベース テーブルにコピーするための、データ ファイルの最初の行を指定します。 iValue パラメーターには、その値を含む 64 ビット符号付き整数のアドレスを指定する必要があります。 BCPFIRSTEX に渡すことができる最大値は 2^63-1 です。 |
||
BCP_OPTION_FMTXML |
XML 形式でフォーマット ファイルが生成されることを指定する場合に使用します。 既定では、このオプションは無効で、フォーマット ファイルはテキスト ファイルとして保存されます。 XML フォーマット ファイルにより柔軟性が向上しますが、いくつか制約も追加されます。 たとえば、以前のフォーマット ファイルでは、1 つのフィールドにプレフィックスとターミネータを同時に指定できましたが、XML フォーマット ファイルでは指定できません。
|
||
BCP_OPTION_HINTS |
iValue 引数には、ワイド文字列ポインターを指定します。 ポインターが指す文字列には、SQL Server 一括コピー処理ヒント、または結果セットを返す Transact-SQL ステートメントを指定します。 複数の結果セットを返す Transact-SQL ステートメントを指定すると、1 つ目の結果セット以外はすべて無視されます。 |
||
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 out 操作の場合は、データ ファイルにコピーするための、データベース テーブルの最後の行を指定します。 BCP in 操作の場合は、データベース テーブルにコピーするための、データ ファイルの最後の行を指定します。 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 インターフェイスを使用してください。E_UNEXPECTED
メソッドの呼び出しが予期されませんでした。 たとえば、この関数が呼び出される前に、IBCPSession::BCPInit メソッドが呼び出されなかった場合などです。E_OUTOFMEMORY
メモリ不足エラーです。