次の方法で共有


IBCPSession::BCPControl (OLE DB)

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

構文

HRESULT BCPControl( 
      int eOption,
      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_FILECP_ACP を指定すると、ファイル内のデータには、クライアントの Microsoft Windows® コード ページが使用されます。
  • BCP_FILECP_OEMCP を指定すると、ファイル内のデータには、クライアントの OEM コード ページ (既定) が使用されます。
  • BCP_FILECP_RAW を指定すると、ファイル内のデータには、SQL Server のコード ページが使用されます。

BCP_OPTION_FIRST

ファイルまたはテーブルにコピーするデータの先頭行を指定します。既定値は 1 です。1 未満の値を指定すると、このオプションは既定値にリセットされます。

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_MAXERRS

一括コピー操作が失敗するまでに発生してもかまわないエラーの数を指定します。既定値は 10 です。1 未満の値を指定すると、このオプションは既定値にリセットされます。一括コピーでは、最大 65,535 個のエラーが許容されます。このオプションに 65,535 を超える値を設定しようとすると、65,535 が設定されます。

BCP_OPTION_UNICODEFILE

このオプションに TRUE を設定して、入力ファイルが Unicode ファイル形式であることを指定します。

BCP_OPTION_TEXTFILE

データ ファイルは、バイナリ ファイルではなく、テキスト ファイルです。BCP では、データ ファイルの先頭 2 バイトに含まれる Unicode バイト マーカーをチェックして、テキスト ファイルが Unicode 形式かどうかを検出します。

BCP_OPTION_FILEFMT

データ ファイル形式のバージョン番号を指定します。この値には 60、65、70、80、または 90 を指定できます。既定値は 90 で、ファイルが 9.0 形式であることを示します。このオプションは、古いサーバーからエクスポートしたファイルのデータを、新しいデータ型を含む新しいサーバーにインポートする際に役立ちます。たとえば、8.0 サーバーの text 型の列から取得したデータを、9.0 サーバーの varchar(max) 型の列にインポートする場合などです。逆の場合にも同じロジックが当てはまります。つまり、varchar(max) 型の列からデータをエクスポートするときに 80 を指定すると、データは text 型の列が 8.0 形式で保存されるのとまったく同じ形式で保存されるので、8.0 サーバーの text 型の列にインポートできます。

BCP_OPTION_FMTXML

XML 形式でフォーマット ファイルが生成されることを指定する場合に使用します。既定では、このオプションは無効で、フォーマット ファイルはテキスト ファイルとして保存されます。XML フォーマット ファイルにより柔軟性が向上しますが、いくつか制約も追加されます。たとえば、以前のフォーマット ファイルでは、1 つのフィールドにプレフィックスとターミネータを同時に指定できましたが、XML フォーマット ファイルでは指定できません。

ms131679.note(ja-jp,SQL.90).gifメモ :

XML フォーマット ファイルがサポートされるのは、SQL Server 2005 ツールを SQL Native Client と共にインストールした場合だけです。

引数

  • eOption[in]
    上記の「解説」で示したいずれかのオプションに設定します。
  • iValue[in]
    指定した eOption の値です。iValue 引数は、将来 64 ビット値に拡張できるように、void ポインタにキャストされる整数値です。

リターン コード値

  • S_OK
    メソッドが成功しました。
  • E_FAIL
    プロバイダ固有のエラーが発生しました。エラーの詳細を確認するには、ISQLServerErrorInfo インターフェイスを使用してください。
  • E_UNEXPECTED
    メソッドの呼び出しが予期されませんでした。たとえば、この関数が呼び出される前に、IBCPSession::BCPInit メソッドが呼び出されなかった場合などです。
  • E_OUTOFMEMORY
    メモリ不足エラーです。

参照

概念

一括コピー操作の実行

その他の技術情報

IBCPSession (OLE DB)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手