次の方法で共有


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_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) を指定できます。 既定値は 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 フォーマット ファイルでは指定できません。

注意

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
    メモリ不足エラーです。

関連項目

概念

一括コピー操作の実行

その他の技術情報

IBCPSession (OLE DB)