適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

SQLPutData を使用して、65,535 バイトを超えるデータを送信するときに、次の制限が適用されます (のSQL ServerSQL Server4.21) または 400 KB を sql_longvarchar (SQL Server バージョン 6.0 以降) 用のデータを (テキスト)、SQL_WLONGVARCHAR(ntext) または SQL_LONGVARBINARY (イメージ) 列。The following restrictions apply when using SQLPutData to send more than 65,535 bytes of data (for SQL ServerSQL Server version 4.21a) or 400 KB of data (for SQL Server version 6.0 and later) for a SQL_LONGVARCHAR (text), SQL_WLONGVARCHAR (ntext) or SQL_LONGVARBINARY (image) column:

  • 参照先のパラメーターは、 insert_value INSERT ステートメントでします。The referenced parameter can be the insert_value in an INSERT statement.

  • 参照先のパラメーターは、UPDATE ステートメントの SET 句でします。The referenced parameter can be an expression in the SET clause of an UPDATE statement.

実行するサーバーのブロック単位でデータを提供する SQLPutData 呼び出しのシーケンスを取り消すSQL ServerSQL Serverバージョン 6.5 以前のバージョンを使用する場合に、列の値の部分的な更新を発生します。Canceling a sequence of SQLPutData calls that provide data in blocks to a server running SQL ServerSQL Server causes a partial update of the column's value when using version 6.5 or earlier. テキストntext、またはイメージSQLCancel が呼び出されたときに参照された列は、中間のプレース ホルダーの値に設定されます。The text, ntext, or image column that was referenced when SQLCancel was called is set to an intermediate placeholder value.


SQL ServerSQL Server Native Client ODBC ドライバーでは、SQL ServerSQL Server 6.5 以前のバージョンへの接続をサポートしません。The SQL ServerSQL Server Native Client ODBC driver does not support connecting to SQL ServerSQL Server version 6.5 and earlier.


1 つであるSQL ServerSQL ServerNative Client 固有の SQLSTATE SQLPutData:There is one SQL ServerSQL Server Native Client specific SQLSTATE for SQLPutData:

SQLSTATESQLSTATE [エラー]Error 説明Description
2202622026 文字列データの長さが合致しませんString data, length mismatch 送信するバイトのデータの長さが指定されている場合、アプリケーションによってなどを SQL_LEN_DATA_AT_EXEC で (n)、 n経由でアプリケーションによって指定されたバイトの合計数、0 より大きいSQLPutData は、指定した長さと一致する必要があります。If the length of data in bytes to be sent has been specified by an application, for example, with SQL_LEN_DATA_AT_EXEC(n) where n is greater than 0, the total number of bytes given by the application via SQLPutData must match the specified length.

SQLPutData とテーブル値パラメーターSQLPutData and Table-Valued Parameters

SQLPutData は、テーブル値パラメーターの可変の行バインドを使用する場合、アプリケーションによって使用されます。SQLPutData is used by an application when using variable row binding with table-valued parameters. StrLen_Or_Indパラメーターは、次の行またはテーブル値パラメーターのデータの行のデータを収集するドライバーの準備ができたこと、またはそれ以上の行が使用できることを示します。The StrLen_Or_Ind parameter indicates that it is ready for the driver to collect data for the next row or rows of table-valued parameter data, or that no more rows are available:

  • 値が 0 を超える場合は、次の行の値のセットを使用できることを示します。A value greater than 0 indicates that the next set of row values is available.

  • 値が 0 の場合は、送信される行がなくなったことを示します。A value of 0 indicates that there are no more rows to be sent.

  • 値が 0 未満の場合は、エラーが発生し、"文字列長またはバッファー長が正しくありません" というメッセージで SQLState HY090 の診断レコードが記録されます。Any value less than 0 is an error and results in a diagnostic record being logged with SQLState HY090 and the messaage "Invalid string or buffer length".

DataPtrパラメーターは無視されますが、NULL 以外の値に設定する必要があります。The DataPtr parameter is ignored, but must be set to a non-NULL value. 詳細については、可変の行バインドのセクションをご覧ください。バインドと Data Transfer of Table-Valued パラメーターおよび列の値します。For more information, see the section on Variable TVP row binding in Binding and Data Transfer of Table-Valued Parameters and Column Values.

場合StrLen_Or_Ind SQL_DEFAULT_PARAM または 0 から SQL_PARAMSET_SIZE までの数値以外の任意の値を持つ (つまり、 ColumnSize SQLBindParameter のパラメーター)、エラーになります。If StrLen_Or_Ind has any value other than SQL_DEFAULT_PARAM or a number between 0 and the SQL_PARAMSET_SIZE (that is, the ColumnSize parameter of SQLBindParameter), it is an error. このエラーには、SQL_ERROR が返される SQLPutData が発生します。SQLSTATE = HY090、"無効な文字列長またはバッファー長"。This error causes SQLPutData to return SQL_ERROR: SQLSTATE=HY090, "Invalid string or buffer length".

テーブル値パラメーターの詳細については、次を参照してください。テーブル値パラメーター (ODBC)します。For more information about table-valued parameters, see Table-Valued Parameters (ODBC).

SQLPutData による機能強化された日付と時刻のサポートSQLPutData Support for Enhanced Date and Time Features

日付/時刻型のパラメーターの値で説明したように変換C から SQL への変換Parameter values of date/time types are converted as described in Conversions from C to SQL.

詳細については、次を参照してください。日付と時刻の強化(ODBC)します。For more information, see Date and Time Improvements (ODBC).

SQLPutData による大きな CLR UDT のサポートSQLPutData Support for Large CLR UDTs

SQLPutData大きなの CLR ユーザー定義型 (Udt) をサポートしています。SQLPutData supports large CLR user-defined types (UDTs). 詳細については、次を参照してください。 Large CLR User-Defined 型(ODBC)します。For more information, see Large CLR User-Defined Types (ODBC).

参照See Also

SQLPutData 関数 SQLPutData Function
ODBC API 実装の詳細ODBC API Implementation Details