次の方法で共有


IBCPSession::BCPControl (ネイティブ クライアント OLE DB プロバイダー)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

重要

SQL Server Native Client (SNAC と略されることがよくあります) は、SQL Server 2022 (16.x) と SQL Server Management Studio 19 (SSMS) から削除されました。 SQL Server Native Client OLE DB プロバイダー (SQLNCLI または SQLNCLI11) とレガシ Microsoft OLE DB Provider for SQL Server (SQLOLEDB) はどちらも、新しい開発には推奨されません。 今後は、新しい Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server に切り替えてください。

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

構文


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 (8.x))、90 (SQL Server 2005 (9.x))、100 (SQL Server 2008 (10.0.x) または SQL Server 2008 R2 (10.50.x)、110 (SQL Server 2012 (11.x))、または 120 (SQL Server 2014 (12.x)。 120 が既定値です。 このオプションは、以前のバージョンのサーバーでサポートされていた形式でデータをエクスポートおよびインポートする際に便利です。 たとえば、SQL Server 2000 (8.x) サーバーのテキスト列から取得したデータを、SQL Server 2005 (9.x) 以降のサーバーの varchar(max) 列にインポートするには、80 を指定する必要があります。 同様に、データを varchar(max) 列からエクスポートするときに 80 を指定すると、データは、テキスト列が SQL Server 2000 (8.x) 形式で保存されるのと同じように保存されるので、SQL Server 2000 (8.x) サーバーのテキスト列にインポートできます。
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)
一括コピー操作の実行