適用対象:SQL Server
Azure SQL データベース
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
アプリケーションでステートメントを実行する前に、ステートメント ハンドルを割り当てる必要があります。 これを行うには、SQLAllocHandleHandleType パラメーターを SQL_HANDLE_STMT に設定し接続ハンドルを指す InputHandle を呼び出します。
ステートメント属性は、ステートメント ハンドルの特徴を表します。 ブックマークやカーソルを使用してサンプル ステートメント属性を取り込み、ステートメントの結果セットと共に使用することができます。 ステートメント属性は SQLSetStmtAttr で設定され、現在の設定は SQLGetStmtAttr を使用して取得されます。 アプリケーションでステートメント属性を設定する必要はありません。すべてのステートメント属性には既定値があり、一部の属性は、ドライバー固有の属性になっています。
複数の ODBC ステートメント オプションと接続オプションを使用する場合は、注意が必要です。 fOptionをSQL_ATTR_LOGIN_TIMEOUTに設定したSQLSetConnectAttrを呼び出すと、アプリケーションが接続の確立を待機している間にタイムアウトを待機する時間が制御されます (0 は無限待機を指定します)。 応答時間が遅いサイトでは、この値を高く設定して、接続の完了までに十分な時間を与えることができます。 ただしこの間隔は、ドライバーが接続できない場合に、妥当な時間内にユーザーに応答できる程度に低く抑える必要があります。
fOptionをSQL_ATTR_QUERY_TIMEOUTに設定してsqlSetStmtAttrを呼び出すと、サーバーとユーザーが実行時間の長いクエリから保護するのに役立つクエリタイムアウト間隔が設定されます。
fOptionをSQL_ATTR_MAX_LENGTHに設定SQLSetStmtAttrを呼び出すと、個々のステートメントで取得できるtextおよびimageデータの量が制限されます。 fOptionをSQL_ATTR_MAX_ROWSに設定したSQLSetStmtAttrを呼び出すと、アプリケーションで必要な場合は、最初のn行にも行セットが制限されます。 SQL_ATTR_MAX_ROWSを設定すると、ドライバーがサーバーに SET ROWCOUNT 文を発行します。 これは、トリガーや更新プログラムを含むすべての Microsoft SQL Server ステートメントに影響します。
上記のオプションを設定するときは注意が必要です。 SQL_ATTR_MAX_LENGTH と SQL_ATTR_MAX_ROWS の場合、接続ハンドルのすべてのステートメント ハンドルが同じ設定になるようにすることをお勧めします。 もしドライバーが異なる値を持つ文ハンドルから別の文ハンドルに切り替えた場合、設定を変更するために適切な SETSET TEXTSIZE 文や SETSET ROWCOUNT 文を生成しなければなりません。 ユーザー SQL ステートメントには、バッチ内では先頭に含めなければならないステートメントを含めることができるので、ドライバーはユーザー SQL ステートメントと同じバッチ内にこれらのステートメントを配置することはできません。 ドライバーは SETSET TEXTSIZE 文と SETSET ROWCOUNT 文を別個のバッチで送信し、自動的にサーバーへの追加の往復を生成します。