在 ODBC 中,驱动程序管理器控制连接池。
当使用认证时,应用程序编程人员必须意识到连接池的影响。驱动程序管理器不控制其
连接何时置于池中,或者何时从池中拉出。如果应用程序不了解用户就连接或断开连接,
则连接池的性能优势得以保持,用户不会收到任何意外的认证质询。如果应用程序未使
用户意识到他们正在重建连接,则仍没有认证问题,因为驱动程序管理器与服务器之间
的连接从未关闭。
连接函数
可随同认证模块使用任何建立连接的 ODBC 函数,SQLConnect()、SQLDriverConnect()
或 SQLBrowseConnect()。
当使用这些函数时,请考虑下列事项:
SQLConnect() 函数
SQLConnect() 函数的 DriverCompletion 参数可采用下列值
⚫
SQL_DRIVER_PROMPT
⚫
SQL_DRIVER_COMPLETE
⚫
SQL_DRIVER_COMPLETE_REQUIRED
⚫
SQL_DRIVER_NOPROMPT
如果预料到有认证挑战,则推荐您使用 SQL_DRIVER_NOPROMPT。使用其他值可能
导致用户面对认证信息的多个请求。
SQLBrowseConnect() 函数
设计 SQLBrowseConnect() 函数旨在反复使用,驱动程序为应用程序提供关于如何完成
连接字符串的指导,且应用程序提示用户所需的值。这可导致用户在连接字符串完成与
认证之间面对多个提示。
此外,作为连接字符串完成进程的一部分,驱动程序通常向应用程序提供数据库的选择。
然而,在用户通过身份验证之后,驱动程序才能为数据库的列表查询服务器。根据应用
程序逻辑,它是在原始的连接字符串中提供数据库名称,还是打算从认证服务器接受质
询,当服务器使用认证时,可能无法使用 SQLBrowseConnect()。
第三方应用程序或中间代码
当使用认证时,应由应用程序处理来自认证服务器的任何质询。
要处理质询,应用程序编程人员必须能够向驱动程序注册回调函数。由于在 ODBC 标准
中未定义用来完成此任务的属性,因此,使用的属性为 GBase 8s 扩展。
以 Microsoft™ 的 ADO 层编写的许多应用程序从开发人员抽取 ODBC 调用。大多数
Visual Basic 应用程序都用 ADO 层编写。这些应用程序和第三方应用程序通常不知道
GBase 8s 扩展,且不能处理身份验证质询。
Windows™ 上的 ODBC Data Source Administrator 也属于第三方应用程序这一类。当配置
UNIX™ 数据源时,不是所有特性都可用。例如,如果收到质询,则 Apply and Test
Connection 按钮和 User Server Database Locale 切换不起作用,因为那些特性需要连接到
服务器的能力。




