连接属性

连接属性是连接的特征。 例如,因为事务发生在连接级别,所以事务隔离级别就是一个连接属性。 与此类似,登录超时或超时前尝试连接的等待秒数,也是连接属性。

使用 SQLSetConnectAttr 设置连接属性,并使用 SQLGetConnectAttr 检索其当前设置。 如果在加载驱动程序之前调用 SQLSetConnectAttr,则驱动程序管理器会将属性存储在其连接结构中,并在驱动程序中将这些属性设置为连接过程的一部分。 不要求应用程序设置任何连接属性;所有连接属性都具有默认值,其中某些连接属性是驱动程序特定的。

连接属性可以在连接之前或之后设置,具体取决于属性和驱动程序。 登录超时 (SQL_ATTR_LOGIN_TIMEOUT) 适用于连接过程,并且仅在连接前设置时有效。 指定是否使用 ODBC 游标库 (SQL_ATTR_ODBC_CURSORS) 和网络数据包大小 (SQL_ATTR_PACKET_SIZE) 的属性必须在连接之前设置,因为 ODBC 游标库驻留在驱动程序管理器和驱动程序之间,因此必须在加载驱动程序之前加载。

用于指定数据源是只读还是读写 (SQL_ATTR_ACCESS_MODE) 的属性以及当前目录 (SQL_ATTR_CURRENT_CATALOG) 可以在连接之前或之后设置,具体取决于驱动程序。 但是,可互操作的应用程序会在连接之前设置这些属性,因为某些驱动程序不支持在连接之后更改这些属性。

某些连接属性在建立连接之前具有默认值,而其他属性则没有默认值。 具有默认值的连接属性包括 SQL_ATTR_ACCESS_MODE、SQL_ATTR_AUTOCOMMIT、SQL_ATTR_LOGIN_TIMEOUT、SQL_ATTR_ODBC_CURSORS、SQL_ATTR_TRACE 和 SQL_ATTR_TRACEFILE。

连接之后必须设置转换连接属性(SQL_ATTR_TRANSLATE_DLL 和 SQL_ATTR_TRANSLATE_OPTION)。

可以随时设置所有其他连接属性。 有关详细信息,请参阅 SQLSetConnectAttr 函数描述。 (无法通过调用 SQLSetEnvAttr 在环境级别设置连接属性。)