SQLDriverConnect
SQL Server Native Client ODBC 驱动程序定义可替换或增强连接字符串关键字的连接属性。一些连接字符串关键字已由 SQL Server Native Client ODBC 驱动程序指定了默认值。
有关 SQL Server Native Client ODBC 驱动程序中可用关键字的列表,请参阅 将连接字符串关键字用于 SQL Server Native Client。
有关 SQL Server 连接属性和驱动程序默认行为的详细信息,请参阅 SQLSetConnectAttr。
当 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"