IBCPSession::BCPControl (OLE DB)
一括コピー操作のオプションを設定します。
構文
HRESULT BCPControl(
inteOption,
void *iValue);
説明
BCPControl メソッドでは、一括コピー操作のさまざまな制御パラメーターを設定します。たとえば、一括コピーが取り消されるまでに発生してもかまわないエラーの数、データ ファイルから最初にコピーする行番号や最後にコピーする行番号、バッチ サイズなどを設定します。
また、このメソッドを使用して、SQL Server からデータを一括コピーするときに使用される SELECT ステートメントを指定することもできます。eOption 引数に BCP_OPTION_HINTS を設定し、SELECT ステートメントを含むワイド文字列へのポインターを保持する iValue 引数を設定することができます。
BCPControl メソッドでは、BCP 構造体のメンバー変数を設定して、ユーザーが設定するオプションを有効にします。次に、有効なオプションを示します。
オプション |
説明 |
---|---|
BCP_OPTION_ABORT |
既に実行中の一括コピー操作を停止します。別のスレッドから eOption 引数に BCP_OPTION_ABORT を指定して BCPControl メソッドを呼び出し、実行中の一括コピー操作を停止できます。この場合、iValue 引数は無視されます。 |
BCP_OPTION_BATCH |
バッチごとの行数を指定します。既定値は 0 です。既定値を指定すると、データを抽出するときはテーブル内のすべての行が抽出されることを示し、データを SQL Server にコピーするときはユーザー データ ファイル内のすべての行がコピーされることを示します。BCP_OPTION_BATCH に 1 未満の値を指定すると、既定値にリセットされます。 |
BCP_OPTION_FILECP |
iValue 引数には、データ ファイルのコード ページ番号を指定します。1252 や 850 などのコード ページ番号を指定するか、次のいずれかの値を指定できます。
|
BCP_OPTION_FILEFMT |
データ ファイル形式のバージョン番号を指定します。80 (SQL Server 2000)、90 (SQL Server 2005)、または 100 を指定できます。既定値は 100 で、ファイルが SQL Server 2008 (または SQL Server 2008 R2) 形式であることを示します。このオプションは、以前のバージョンのサーバーでサポートされていた形式でデータをエクスポートおよびインポートする際に便利です。たとえば、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 フォーマット ファイルでは指定できません。 ![]()
XML フォーマット ファイルがサポートされるのは、SQL Server ツールを SQL Server Native Client と共にインストールした場合だけです。
|
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
メモリ不足エラーです。