一括コピー操作の実行 (ODBC)

ODBC 標準では、SQL Server の一括コピー操作が直接サポートされません。SQL Server Native Client ODBC ドライバでは、SQL Server 7.0 以降のインスタンスに接続するときに、SQL Server の一括コピー操作を実行する DB-Library 関数がサポートされます。このドライバ固有の拡張機能では、一括コピー関数を使用する既存の DB-Library アプリケーションを簡単にアップグレードできる手段が用意されています。次のファイルには、一括コピー専用のサポートが含まれています。

  • sqlncli.h

    一括コピー関数の関数プロトタイプと定数定義が含まれています。一括コピー操作を実行する ODBC アプリケーションでは、sqlncli.h をインクルードする必要があります。このファイルは、コンパイル時にアプリケーションのインクルード パスに存在している必要があります。

  • sqlncli10.lib

    リンカのライブラリ パスに存在し、リンクされるファイルとして指定する必要があります。sqlncli10.lib は、SQL Server Native Client ODBC ドライバに付属しています。

  • sqlncli10.dll

    実行時に存在する必要があります。sqlncli10.dll は、SQL Server Native Client ODBC ドライバに付属しています。

注意注意

ODBC SQLBulkOperations 関数は、SQL Server の一括コピー関数と関係がありません。アプリケーションでは、SQL Server 固有の一括コピー関数を使用して、一括コピー操作を実行する必要があります。

一括コピーの最小ログ記録

完全復旧モデルでは、一括読み込みで実行されたすべての行挿入操作が、トランザクション ログに完全に記録されます。ただし大量のデータを読み込むと、トランザクション ログがすぐにいっぱいになる可能性があります。特定の条件下では、最小ログ記録が可能になります。最小ログ記録を行うことで、一括読み込み操作によってログ領域がいっぱいになる可能性が少なくなります。また、これは完全なログ記録よりも効率的です。

最小ログ記録の使用の詳細については、「一括インポートで最小ログ記録を行うための前提条件」を参照してください。

解説

SQL Server 2005 以降で bcp.exe を使用すると、SQL Server 2005 より前のバージョンでは発生しなかった状況でエラーが発生することがあります。これは、新しいバージョンでは bcp.exe でデータ型が暗黙的に変換されなくなったためです。SQL Server 2005 より前のバージョンでは、対象テーブルのデータ型が money データ型の場合、bcp.exe で数値データが money データ型に変換されました。ただし、その際には、余分なフィールドは単純に切り捨てられていました。SQL Server 2005 以降では、ファイルと対象テーブルのデータ型が一致しない場合に、対象テーブルに合わせてデータを切り捨てなければならなくなると、bcp.exe でエラーが発生します。このエラーを解決するには、対象のデータ型に合わせてデータを修正します。SQL Server 2005 より前のリリースの bcp.exe を使用することもできます。