如何用代码做分数查询的网站,优惠券网站要怎么做推广,怎么学做网站,成都手机微信网站建设报价单Windows ODBC 驱动程序中的连接弹性09/01/2020本文内容为了确保应用程序能与 Azure SQL 数据库 保持连接#xff0c;Windows 上的 ODBC 驱动程序可以还原空闲连接。重要Microsoft Azure SQL 数据库和 SQL Server 2014(及更高版本)服务器版本支持连接复原能力功能。若要详细了解…Windows ODBC 驱动程序中的连接弹性09/01/2020本文内容为了确保应用程序能与 Azure SQL 数据库 保持连接Windows 上的 ODBC 驱动程序可以还原空闲连接。重要Microsoft Azure SQL 数据库和 SQL Server 2014(及更高版本)服务器版本支持连接复原能力功能。若要详细了解空闲连接复原请参阅技术文章 - 空闲连接复原。为控制重新连接行为Windows 上 的 ODBC Driver for SQL Server 有以下两个选项连接重试计数。连接重试计数可在发生连接失败时控制重新连接尝试的次数。 有效值范围为 0 到 255。 零 (0) 表示不尝试重新连接。 默认值为一次重新连接尝试。在以下情况下可以修改连接重试次数定义或修改一个将 ODBC Driver for SQL Server 与“连接重试计数”**** 控件结合使用的数据源。使用 ConnectRetryCount 连接字符串关键字。若要检索连接重试尝试的次数请使用 SQL_COPT_SS_CONNECT_RETRY_COUNT(只读)连接属性****。 如果应用程序连接到的服务器并不支持连接复原SQL_COPT_SS_CONNECT_RETRY_COUNT 将返回 0。连接重试间隔。连接重试间隔指定每次连接重试尝试之间的秒数。 有效值介于 1 和 60 之间。 重新连接的总时间不能超过连接超时(SQLSetStmtAttr 中的 SQL_ATTR_QUERY_TIMEOUT)。 默认值为 10 秒。在以下情况下可以修改连接重试间隔定义或修改一个将 ODBC Driver for SQL Server 与“连接重试间隔”**** 控件结合使用的数据源。使用 ConnectRetryInterval 连接字符串关键字。若要检索连接重试间隔的时间长度请使用 SQL_COPT_SS_CONNECT_RETRY_INTERVAL(只读)连接属性****。如果应用程序建立与 SQL_DRIVER_COMPLETE_REQUIRED 的连接并稍后尝试通过断开的连接执行语句ODBC 驱动程序将不再显示该对话框。 此外在恢复正在进行期间在恢复期间任何对 SQLGetConnectAttr(SQL_COPT_SS_CONNECTION_DEAD) 的调用都必须返回 SQL_CD_FALSE********。如果恢复失败任何对 SQLGetConnectAttr(SQL_COPT_SS_CONNECTION_DEAD) 的调用都必须返回 SQL_CD_TRUE********。在服务器上执行命令的任何函数都会返回以下状态代码状态MessageIMC01连接已断开且不能恢复。 客户端驱动程序尝试一次或多次恢复连接但所有尝试均失败。 增大 ConnectRetryCount 的值以增加恢复尝试的次数。IMC02服务器未收到恢复尝试无法恢复连接。IMC03服务器未保留恢复尝试过程中请求的确切客户端 TDS 版本无法恢复连接。IMC04服务器未保留恢复尝试过程中请求的确切服务器主要版本无法恢复连接。IMC05连接已断开且不能恢复。 服务器将连接标记为不可恢复。 未尝试还原连接。IMC06连接已断开且不能恢复。 客户端驱动程序将连接标记为不可恢复。 未尝试还原连接。示例以下示例包含两个函数。 func1 演示如何通过使用 Windows 上的 ODBC Driver for SQL Server 的数据源名称 (DSN) 建立连接。 DSN 使用 SQL Server 身份验证并指定用户 ID。 然后func1**** 使用 SQL_COPT_SS_CONNECT_RETRY_COUNT**** 检索连接重试次数。func2 使用 SQLDriverConnect、 ConnectRetryCount 连接字符串关键字和连接属性检索连接重试和重试间隔的设置。// Connection_resiliency.cpp// compile with: odbc32.lib#include #include #include #include void func1() {SQLHENV henv;SQLHDBC hdbc;SQLHSTMT hstmt;SQLRETURN retcode;SQLSMALLINT i 21;// Allocate environment handleretcode SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, henv);// Set the ODBC version environment attributeif (retcode SQL_SUCCESS || retcode SQL_SUCCESS_WITH_INFO) {retcode SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);// Allocate connection handleif (retcode SQL_SUCCESS || retcode SQL_SUCCESS_WITH_INFO) {retcode SQLAllocHandle(SQL_HANDLE_DBC, henv, hdbc);// Set login timeout to 5 secondsif (retcode SQL_SUCCESS || retcode SQL_SUCCESS_WITH_INFO) {SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);// Connect to data sourceretcode SQLConnect(hdbc, (SQLCHAR*) MyDSN, SQL_NTS, (SQLCHAR*) userID, SQL_NTS, (SQLCHAR*) password_for_userID, SQL_NTS);retcode SQLGetConnectAttr(hdbc, SQL_COPT_SS_CONNECT_RETRY_COUNT, i, SQL_IS_INTEGER, NULL);// Allocate statement handleif (retcode SQL_SUCCESS || retcode SQL_SUCCESS_WITH_INFO) {retcode SQLAllocHandle(SQL_HANDLE_STMT, hdbc, hstmt);// Process dataif (retcode SQL_SUCCESS || retcode SQL_SUCCESS_WITH_INFO) {SQLFreeHandle(SQL_HANDLE_STMT, hstmt);}SQLDisconnect(hdbc);}SQLFreeHandle(SQL_HANDLE_DBC, hdbc);}}SQLFreeHandle(SQL_HANDLE_ENV, henv);}}void func2() {SQLHENV henv;SQLHDBC hdbc1;SQLHSTMT hstmt;SQLRETURN retcode;SQLSMALLINT i 21;#define MAXBUFLEN 255SQLCHAR ConnStrIn[MAXBUFLEN] DRIVER{ODBC Driver 17 for SQL Server};SERVERserver_that_supports_connection_resiliency;UIDuserID;PWD password_for_userID;ConnectRetryCount2;SQLCHAR ConnStrOut[MAXBUFLEN];SQLSMALLINT cbConnStrOut 0;// Allocate environment handleretcode SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, henv);// Set the ODBC version environment attributeif (retcode SQL_SUCCESS || retcode SQL_SUCCESS_WITH_INFO) {retcode SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3_80, SQL_IS_INTEGER);// Allocate connection handleif (retcode SQL_SUCCESS || retcode SQL_SUCCESS_WITH_INFO) {retcode SQLAllocHandle(SQL_HANDLE_DBC, henv, hdbc1);// Set login timeout to 5 secondsif (retcode SQL_SUCCESS || retcode SQL_SUCCESS_WITH_INFO) {// SQLSetConnectAttr(hdbc1, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);retcode SQLDriverConnect(hdbc1, NULL, ConnStrIn, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);}retcode SQLGetConnectAttr(hdbc1, SQL_COPT_SS_CONNECT_RETRY_COUNT, i, SQL_IS_INTEGER, NULL);retcode SQLGetConnectAttr(hdbc1, SQL_COPT_SS_CONNECT_RETRY_INTERVAL, i, SQL_IS_INTEGER, NULL);}}}int main() {func1();func2();}另请参阅