SQLDriverConnect
SQL Server Native Client ODBC 驱动程序定义可替换或增强连接字符串关键字的连接属性。一些连接字符串关键字已由 SQL Server Native Client ODBC 驱动程序指定了默认值。
有关 SQL Server Native Client ODBC 驱动程序中可用关键字的列表,请参阅 将连接字符串关键字用于 SQL Server Native Client。
有关 SQL Server 连接属性和驱动程序默认行为的详细信息,请参阅 SQLSetConnectAttr。
对于对 SQL Server Native Client 有效的连接字符串关键字的讨论,请参阅将连接字符串关键字用于 SQL Server Native Client。
当 SQLDriverConnectDriverCompletion 参数值为 SQL_DRIVER_PROMPT、SQL_DRIVER_COMPLETE 或 SQL_DRIVER_COMPLETE_REQUIRED 时,SQL Server Native Client ODBC 驱动程序从所显示的对话框中检索关键字值。如果关键字值传递到连接字符串中,并且用户未在对话框中更改关键字的值,则 SQL Server Native Client ODBC 驱动程序将使用连接字符串中的值。如果在连接字符串中未设置值,并且用户在对话框中未指定任何值,则驱动程序将使用默认值。
当任何 DriverCompletion 值要求(或可能要求)显示驱动程序的连接对话框时,必须向 SQLDriverConnect 提供有效的 WindowHandle。无效句柄将返回 SQL_ERROR。
指定 DRIVER 或 DSN 关键字。ODBC 规定,如果同时指定了这两个关键字,驱动程序将使用左边的关键字,而忽略另一个关键字。如果指定 DRIVER 或 DRIVER 是两者中靠左的关键字,并且 SQLDriverConnectDriverCompletion 参数值为 SQL_DRIVER_NOPROMPT,则需要 SERVER 关键字和适当的值。
当指定 SQL_DRIVER_NOPROMPT 时,用户身份验证关键字必须具有值。驱动程序确保字符串“Trusted_Connection=yes”或 UID 和 PWD 关键字存在。
如果 DriverCompletion 参数值为 SQL_DRIVER_NOPROMPT 或 SQL_DRIVER_COMPLETE_REQUIRED,并且语言或数据库来自连接字符串且两者之一无效,则 SQLDriverConnect 返回 SQL_ERROR。
如果 DriverCompletion 参数值为 SQL_DRIVER_NOPROMPT 或 SQL_DRIVER_COMPLETE_REQUIRED,并且语言或数据库来自 ODBC 数据源定义且两者之一无效,则 SQLDriverConnect 将默认语言或数据库用于指定的用户 ID 并返回 SQL_SUCCESS_WITH_INFO。
如果 DriverCompletion 参数值为 SQL_DRIVER_COMPLETE 或 SQL_DRIVER_PROMPT,并且如果语言或数据库无效,则 SQLDriverConnect 重新显示此对话框。
服务主体名称 (SPN) 的 SQLDriverConnect 支持
当启用提示时,SQLDDriverConnect 将使用“ODBC 登录”对话框。这允许为主体服务器及其故障转移伙伴输入 SPN。
SQLDriverConnect 将接受新的连接字符串关键字 ServerSPN 和 FailoverPartnerSPN,并将识别新的连接属性 SQL_COPT_SS_SERVER_SPN 和 SQL_COPT_SS_FAILOVER_PARTNER_SPN。
当多次指定某个连接属性值时,以编程方式设置的值优先于 DSN 中的值和连接字符串中的值。DSN 中的值优先于连接字符串中的值。
当打开连接时,SQL Server Native Client 将 SQL_COPT_SS_MUTUALLY_AUTHENTICATED 和 SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD 设置为用于打开此连接的身份验证方法。
有关 SPN 的详细信息,请参阅客户端连接中的服务主体名称 (SPN) (ODBC)。
示例
以下调用说明 SQLDriverConnect 要求的最小数据量:
SQLDriverConnect(hdbc, hwnd,
(SQLTCHAR*) TEXT("DRIVER={SQL Server Native Client 10};"), SQL_NTS, szOutConn,
MAX_CONN_OUT, &cbOutConn, SQL_DRIVER_COMPLETE);
以下连接字符串说明当 DriverCompletion 参数值为 SQL_DRIVER_NOPROMPT 时所要求的最小数据量:
"DSN=Human Resources;Trusted_Connection=yes"
"FILEDSN=HR_FDSN;Trusted_Connection=yes"
"DRIVER={SQL Server Native Client 10};SERVER=(local);Trusted_Connection=yes"