初始化与授权属性

适用于:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics分析平台系统(PDW)Microsoft Fabric中的SQL数据库

下载 OLE DB 驱动程序

OLE DB Driver for SQL Server 将 OLE DB 初始化和授权属性解释如下:

属性 ID 说明
DBPROP_AUTH_CACHE_AUTHINFO SQL Server 的 OLE DB 驱动不缓存认证信息。

SQL Server 的 OLE DB 驱动在尝试设置属性值时返回 DB_S_ERRORSOCCURRED 。 DBPROP结构中的 dwStatus 成员表示 DBPROPSTATUS_NOTSUPPORTED
DBPROP_AUTH_ENCRYPT_PASSWORD SQL Server 的 OLE DB 驱动采用标准的 SQL Server 安全机制来隐藏密码。

SQL Server 的 OLE DB 驱动在尝试设置属性值时返回 DB_S_ERRORSOCCURRED 。 DBPROP结构中的 dwStatus 成员表示 DBPROPSTATUS_NOTSUPPORTED
DBPROP_AUTH_INTEGRATED 如果DBPROP_AUTH_INTEGRATED设置为NULL指针、空字符串或“SSPI”VT_BSTR值,SQL Server的OLE数据库驱动将使用Windows认证模式授权用户访问由DBPROP_INIT_DATASOURCEDBPROP_INIT_CATALOG和属性指定的SQL Server数据库。

如果设置为 VT_EMPTY (默认),则使用 SQL Server 安全。 SQL Server的登录和密码在和DBPROP_AUTH_PASSWORD属性中DBPROP_AUTH_USERID指定。
DBPROP_AUTH_MASK_PASSWORD OLE DB Driver for SQL Server 使用标准的 SQL Server 安全机制来隐藏密码。

SQL Server 的 OLE DB 驱动在尝试设置属性值时返回 DB_S_ERRORSOCCURRED 。 DBPROP结构中的 dwStatus 成员表示 DBPROPSTATUS_NOTSUPPORTED
DBPROP_AUTH_PASSWORD 分配给 SQL Server 登录名的密码。 选用 SQL Server 身份验证来授权访问 SQL Server 数据库时,将使用该属性。
DBPROP_AUTH_PERSIST_ENCRYPTED SQL Server 的 OLE DB 驱动在持久化时不会加密认证信息。

SQL Server 的 OLE DB 驱动在尝试设置属性值时返回 DB_S_ERRORSOCCURRED 。 DBPROP结构中的 dwStatus 成员表示 DBPROPSTATUS_NOTSUPPORTED
DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO 必要时,适用于 SQL Server 的 OLE DB 驱动程序将永久保存身份验证值,例如密码的图像。 不提供加密。
DBPROP_AUTH_USERID SQL Server 登录名。 选用 SQL Server 身份验证来授权访问 SQL Server 数据库时,将使用该属性。
DBPROP_INIT_ASYNCH OLE DB Driver for SQL Server 支持异步启动。

将该 DBPROPVAL_ASYNCH_INITIALIZE 位置入 DBPROP_INIT_ASYNCH 属性后 IDBInitialize::Initialize ,调用变成非阻塞调用。 有关详细信息,请参阅执行异步操作
DBPROP_INIT_CATALOG 要连接的现有 SQL Server 数据库的名称。
DBPROP_INIT_DATASOURCE 运行SQL Server实例的服务器网络名称。 如果计算机上运行多个SQL Server实例,为了连接特定的SQL Server DBPROP_INIT_DATASOURCE 实例,值被指定为 \\<ServerName>\<InstanceName>。 逃脱序列 \\ 用于反斜线本身。
DBPROP_INIT_GENERALTIMEOUT 表示请求(除数据源初始化和命令执行外)超时前的秒数。值为 0 表示无限超时。 通过网络连接或分布式或交易场景工作的提供者可以支持这一特性,在存在长期请求时建议入伍组件超时。 数据源初始化和命令执行的超时分别由 DBPROP_INIT_TIMEOUTDBPROP_COMMANDTIMEOUT控制。

DBPROP_INIT_GENERALTIMEOUT是只读的,如果尝试设置,会返回 的 DBPROPSTATUS_NOTSETTABLEdwstatus 错误。
DBPROP_INIT_HWND 来自调用应用程序的 Windows 句柄。 如果允许提示用户输入初始化属性,则必须有有效的窗口句柄,才能显示初始化对话框。
DBPROP_INIT_IMPERSONATION_LEVEL SQL Server 的 OLE DB 驱动不支持模拟级别调整。

SQL Server 的 OLE DB 驱动在尝试设置属性值时返回 DB_S_ERRORSOCCURRED 。 DBPROP结构中的 dwStatus 成员表示 DBPROPSTATUS_NOTSUPPORTED
DBPROP_INIT_LCID SQL Server 的 OLE DB 驱动会验证本地 ID,如果本地 ID 不被支持或客户端未安装,会返回错误。
DBPROP_INIT_LOCATION SQL Server 的 OLE DB 驱动在尝试设置属性值时返回 DB_S_ERRORSOCCURRED 。 DBPROP结构中的 dwStatus 成员表示 DBPROPSTATUS_NOTSUPPORTED
DBPROP_INIT_MODE SQL Server 的 OLE DB 驱动在尝试设置属性值时返回 DB_S_ERRORSOCCURRED 。 DBPROP结构中的 dwStatus 成员表示 DBPROPSTATUS_NOTSUPPORTED
DBPROP_INIT_PROMPT OLE DB Driver for SQL Server 支持数据源初始化的所有提示模式。 SQL Server 的 OLE DB 驱动作为 DBPROMPT_NOPROMPT 该属性的默认设置。
DBPROP_INIT_PROTECTION_LEVEL SQL Server 的 OLE DB 驱动不支持对 SQL Server 实例的连接设置保护级别。

SQL Server 的 OLE DB 驱动在尝试设置属性值时返回 DB_S_ERRORSOCCURRED 。 DBPROP结构中的 dwStatus 成员表示 DBPROPSTATUS_NOTSUPPORTED
DBPROP_INIT_PROVIDERSTRING 请参见本文后面的 SQL Server 字符串 OLE DB 驱动。
DBPROP_INIT_TIMEOUT 如果无法在指定秒数内建立与 SQL Server 实例的连接,SQL Server 的 OLE DB 驱动在初始化时会返回错误。

在提供者专用属性集 DBPROPSET_SQLSERVERDBINIT中,SQL Server 的 OLE DB 驱动定义了这些额外的初始化属性。

属性 ID 说明
SSPROP_AUTH_ACCESS_TOKEN 1 类型VT_BSTR

右/写:读/写

默认VT_EMPTY

描述:用于认证Microsoft Entra ID的访问令牌。

注意:指定此属性 UID以及 、 PWDTrusted_Connection、 或 Authentication 连接字符串关键词及其对应的属性/关键词是错误的。
SSPROP_AUTH_MODE 1 类型VT_BSTR

右/写:读/写

默认VT_EMPTY

说明:指定所使用的SQL或Microsoft Entra认证。 有效值是:
  • (not set)设置用户帐户 :身份验证模式由其他关键字确定。
  • (empty string)设置用户帐户 :取消设置以前设置的身份验证模式。
  • ActiveDirectoryPassword:使用 Microsoft Entra 标识进行用户名和密码身份验证。
  • ActiveDirectoryIntegrated:与Microsoft Entra身份集成认证。

  • 注意:关键字 ActiveDirectoryIntegrated 还可用于对 SQL Server 进行 Windows 身份验证。 它将替换 Integrated Security(或 Trusted_Connection)身份验证关键字。 使用 Integrated Security (或Trusted_Connection) 关键字或其相应属性的应用程序应将关键字的值(或其相应属性)设置为AuthenticationActiveDirectoryIntegrated启用新的加密和证书验证行为。

  • ActiveDirectoryInteractive:使用 Microsoft Entra 标识进行交互式身份验证。 此方法也支持 Microsoft Entra 多重身份验证。
  • ActiveDirectoryMSI托管标识 身份验证。 对于用户分配的标识,用户 ID 应设置为用户标识的对象 ID。
  • ActiveDirectoryServicePrincipal:与Microsoft Entra应用进行服务主体认证。 用户 ID 应设置为应用程序(客户端)ID。 密码应设置为应用程序(客户端)机密。
  • SqlPassword:使用用户 ID 和密码进行身份验证。

  • 注意:使用 SQL Server 认证的应用程序应设置关键词(或其对应属性)的值 Authentication ,以 SqlPassword 启用 新的加密和证书验证行为
SSPROP_AUTH_OLD_PASSWORD 类型VT_BSTR

写作

默认VT_EMPTY

说明:当前或过期的密码。 有关详细信息,请参阅以编程方式更改密码
SSPROP_INIT_APPNAME 类型VT_BSTR

右/写:读/写

描述:客户端应用程序名称。
SSPROP_INIT_AUTOTRANSLATE 类型VT_BOOL

右/写:读/写

默认VARIANT_TRUE

说明:OEM/ANSI 字符转换。

VARIANT_TRUE:SQL Server 的 OLE DB 驱动通过 Unicode 转换,将客户端与服务器之间发送的 ANSI 字符串转换,以减少客户端和服务器端代码页之间扩展字符匹配的问题:

发送到SQL Server实例的客户端DBTYPE_STR数据字符、变量文本变量、参数或列,通过客户端ANSI代码页(ACP)从字符转换为Unicode,然后再用服务器的ACP从Unicode转换为字符。

SQL Server 字符varchar文本 数据发送到客户端 DBTYPE_STR 变量,先通过服务器 ACP 从字符转换为 Unicode,然后再用客户端 ACP 从 Unicode 转换为字符。

对于 OLE DB 驱动程序版本 18.6.4 和 19.1+,上述转换也适用于 SSVARIANT 结构的 CharVal 成员与 SQL Server sql_variant 变量、参数或列实例之间传输的数据。

这些转换由 OLE DB Driver for SQL Server 在客户端上执行。 这要求服务器上使用的ACP必须在客户端上可用。

这些设置对于为下面这些传输而发生的转换无效:

Unicode DBTYPE_WSTR 客户端数据发送到 charvarchar 或服务器上的 文本

charvarchartext server 数据发送到客户端的 Unicode DBTYPE_WSTR 变量。

ANSI DBTYPE_STR 客户端数据发送到 Unicode ncharnvarchar 或服务器上的 ntext 数据。

Unicode 字符varchar文本 服务器数据发送到客户端的 ANSI DBTYPE_STR 变量。

VARIANT_FALSESQL Server 的 OLE DB 驱动不执行字符转换。

SQL Server 的 OLE DB 驱动不会将客户端发送到 charvarchar服务器上的文本变量、参数或列的 ANSI 字符DBTYPE_STR数据进行转换。 服务器发送DBTYPE_STR字符varchar文本数据不进行客户端变量的转换。 同样,对于 OLE DB 驱动程序版本 18.6.4 和 19.1+,驱动程序不会转换 SSVARIANT 结构的 CharVal 成员与 SQL Server sql_variant 变量、参数或列实例之间传输的数据。

如果客户端和 SQL Server 实例正在使用不同的 ACP,可能会错误地解释扩展字符。
SSPROP_INIT_CONNECT_RETRY_COUNT 类型VT_I4

右/写:读/写

默认1

描述:控制连接中断时的重连尝试次数。 有关详细信息,请参阅 OLE DB 驱动程序中的空闲连接复原能力
SSPROP_INIT_CONNECT_RETRY_INTERVAL 类型VT_I4

右/写:读/写

默认10

描述:在连接中断的情况下,规定每次连接重试之间的秒数。 有关详细信息,请参阅 OLE DB 驱动程序中的空闲连接复原能力
SSPROP_INIT_CURRENTLANGUAGE 类型VT_BSTR

右/写:读/写

描述:SQL Server 语言名称。 标识用于系统消息选择和格式化的语言。 必须在运行 SQL Server 实例的计算机上安装该语言,否则数据源初始化将失败。
SSPROP_INIT_DATATYPECOMPATIBILITY 类型VT_UI2

右/写:读/写

默认0

描述:支持SQL Server与ActiveX数据对象(ADO)应用之间的数据类型兼容性。 如果使用默认值, 0 数据类型处理默认为提供者使用的值。 如果使用了 值 80 ,数据类型处理仅使用 SQL Server 2000(8.x)数据类型。 有关详细信息,请参阅结合使用 ADO 和 OLE DB Driver for SQL Server
SSPROP_INIT_DISCOVEREDSERVERSPN 类型VT_BSTR

按/写:阅读

描述:用于查询连接的服务器 SPN。 (版本 18.6.3 或更高版本)
SSPROP_INIT_ENCRYPT 1 类型VT_BSTR

R/W:读/写

默认Mandatory

描述:规定是否加密网络上的数据。

如果强制协议加密开启,加密总是会发生,无论 设置为 SSPROP_INIT_ENCRYPT何种。 如果关闭且 SSPROP_INIT_ENCRYPT 设置为 MandatoryStrict,则加密发生。

如果强制协议加密关闭且 SSPROP_INIT_ENCRYPT 设置为 Optional,则不会发生加密。 有效值为 OptionalMandatoryStrict。 关于18.x.x版本,请参见 主要版本差异
SSPROP_INIT_FAILOVERPARTNER 类型VT_BSTR

右/写:读/写

描述:指定数据库镜像的故障切换合作伙伴名称。 这是一个初始化属性,只能在初始化前设置。 初始化后,它返回由主服务器返回的故障切换伙伴(如有)。

这使得智能应用能够缓存最近确定的备份服务器,但此类应用应考虑,只有在连接首次建立(或如果是池化时重置)信息才会更新,且对于长期连接来说可能会过时。

连接完成后,应用程序可以查询该属性以确定故障切换伙伴的身份。 如果主服务器没有故障切换伙伴,该属性返回空字符串。 有关详细信息,请参阅使用数据库镜像
SSPROP_INIT_FAILOVERPARTNERSPN 类型VT_BSTR

右/写:读/写

默认VT_EMPTY

说明:指定故障切换伙伴的SPN。 空字符串导致 OLE DB Driver for SQL Server 使用提供程序生成的默认 SPN。
SSPROP_INIT_FILENAME 类型VT_BSTR

右/写:读/写

描述:指定可附加数据库的主文件名。 附加此数据库并使其成为连接的默认数据库。 要使用 SSPROP_INIT_FILENAME,必须指定数据库名称作为初始化属性 DBPROP_INIT_CATALOG的值。 如果数据库名称不存在,则会查找 中 SSPROP_INIT_FILENAME 指定的主文件名,并将该数据库附加到中指定的 DBPROP_INIT_CATALOG名称。 如果数据库之前已经附加过,SQL Server不会重新连接。
SSPROP_INIT_HOST_NAME_CERTIFICATE 类型VT_BSTR

右/写:读/写

默认VT_EMPTY

描述:用于验证SQL Server TLS/SSL证书的主机名称。 如果 SSPROP_INIT_HOST_NAME_CERTIFICATE 该属性未被设置,驱动程序会用该 DBPROP_INIT_DATASOURCE 属性值作为主机名来验证 SQL Server 的 TLS/SSL 证书。
SSPROP_INIT_MARSCONNECTION 类型VT_BOOL

右/写:读/写

默认VARIANT_FALSE

描述:规定连接是否启用了多个活动结果集(MARS)。 必须在与数据库建立连接之前将该选项设置为 true。 有关详细信息,请参阅使用多重活动结果集 (MARS)
SSPROP_INIT_MULTISUBNETFAILOVER 类型VT_BOOL

右/写:读/写

默认VARIANT_FALSE

说明:MultiSubnetFailover 使 SQL Server 中所有 Always On 可用性组和 Failover 集群实例能够更快切换,并显著缩短单一和多子网 Always On 拓扑的故障切换时间。 在多子网故障切换期间,客户端尝试并行连接。 有关详细信息,请参阅 OLE DB Driver for SQL Server 对高可用性和灾难恢复的支持
SSPROP_INIT_NETWORKADDRESS 类型VT_BSTR

右/写:读/写

描述:运行SQL Server实例的服务器的网络地址,由该 DBPROP_INIT_DATASOURCE 属性指定。
SSPROP_INIT_NETWORKLIBRARY 类型VT_BSTR

右/写:读/写

描述:用于与SQL Server实例通信的网络库(DLL)名称。 名称中不应包含路径或 .dll 文件扩展名。

可以使用 SQL Server 客户端配置实用工具来自定义其默认值。

注意:此特性仅支持 TCP 和命名管道。 如果该属性在使用时带有前缀,最后将得到导致错误的双前缀,因为该属性用于在内部生成前缀。
SSPROP_INIT_PACKETSIZE 类型VT_I4

右/写:读/写

描述:表式数据流(TDS)数据包大小(字节单位)。 数据包大小的属性值必须是 0 512到32,767之间或之间。 默认值为 0,这意味着实际的数据包大小由服务器决定。
SSPROP_INIT_SERVER_CERTIFICATE 类型VT_BSTR

右/写:读/写

默认VT_EMPTY

描述:指定证书文件的路径,以匹配 SQL Server 的 TLS/SSL 证书。 此选项只有在启用 Strict 加密后才能使用。 接受的证书格式为 PEM、DER 和 CER。 如果指定,则通过查看提供的证书是否完全匹配来检查 SQL Server 证书。
SSPROP_INIT_SERVERSPN 类型VT_BSTR

右/写:读/写

默认VT_EMPTY

描述:指定服务器的SPN。 空字符串导致 OLE DB Driver for SQL Server 使用提供程序生成的默认 SPN。
SSPROP_INIT_TAGCOLUMNCOLLATION 类型VT_BOOL

写作

默认VARIANT_FALSE

描述:在数据库更新时使用服务器端光标时使用。 该属性用从服务器而不是客户端上的代码页获得的排序规则信息来标记数据。 当前,该属性仅供分布式查询进程使用,因为它知道目标数据的排序规则,并能正确转换它。
SSPROP_INIT_TNIR 类型VT_BOOL

右/写:读/写

默认VARIANT_TRUE

描述:当主机名关联多个IP时,当主机名的第一个解析IP未响应时,TNIR会影响连接顺序。 TNIR 与 MultiSubnetFailover 交互,以提供其他连接顺序。 有关详细信息,请参阅使用透明网络 IP 解析
SSPROP_INIT_TRUST_SERVER_CERTIFICATE 1 类型VT_BOOL

右/写:读/写

默认VARIANT_FALSE

描述:用于启用或禁用服务器证书验证。 该属性是读写的,但在连接建立后尝试设置该属性会出错。

如果客户端配置为要求进行证书验证,则忽略该属性。 然而,应用程序可以结合 SSPROP_INIT_ENCRYPT 使用它来保证其与服务器的连接是加密的,即使客户端配置为不需加密且客户端未配置证书。

客户端应用程序可以在打开连接后查询此属性,以确定使用的实际加密和验证设置。

注意:使用加密而不进行证书验证,可以部分防止数据包嗅探,但不能防止中间人攻击。 它允许加密登录和发送到服务器的数据,而无需验证服务器证书。

有关详细信息,请参阅 OLE DB 中的加密和证书验证
SSPROP_INIT_USEPROCFORPREP 类型VT_I4

右/写:读/写

默认SSPROPVAL_USEPROCFORPREP_ON

描述:SQL Server 存储过程的用途。 定义了使用 SQL Server 临时存储过程以支持该 ICommandPrepare 接口。 仅当连接到 SQL Server 6.5 时,该属性才有意义。 对于更高版本,将忽略该属性。

SSPROPVAL_USEPROCFORPREP_OFF:当命令被准备时,不会创建临时存储过程。

SSPROPVAL_USEPROCFORPREP_ON:当命令被准备时,会创建一个临时存储过程。 释放会话时,删除临时存储过程。

SSPROPVAL_USEPROCFORPREP_ON_DROP:当命令被准备时,会创建一个临时存储过程。 当命令未准备好 ICommandPrepare::Unprepare,当为命令 ICommandText::SetCommandText对象指定新命令时,或释放所有对该命令的应用引用,该过程将被丢弃。
SSPROP_INIT_WSID 类型VT_BSTR

右/写:读/写

描述:一条标识工作站的字符串。

1 为了提高安全性,在使用身份验证/访问令牌初始化属性或其相应的连接字符串关键字时,会修改加密和证书验证行为。 有关详细信息,请参阅加密和证书验证

在提供者特定属性集 DBPROPSET_SQLSERVERDATASOURCEINFO中,SQL Server 的 OLE DB 驱动定义了额外的属性。 更多信息请参见 数据源信息属性

SQL Server 字符串的 OLE DB 驱动

OLE DB Driver for SQL Server 可以识别提供程序字符串属性值中类似 ODBC 的语法。 当与 OLE DB 数据源建立连接时,提供者字符串属性作为 OLE DB 初始化属性 DBPROP_INIT_PROVIDERSTRING 的值提供。 该属性指定在实现与 OLE DB 数据源的连接时所需的特定于 OLE DB 访问接口的连接数据。 在字符串中,各元素是使用分号分隔的。 字符串中的最后一个元素必须以分号结束。 每个元素均由一个关键字、一个等号字符和在初始化时传递的值组成。 例如:

Server=MyServer;UID=MyUserName;

使用 OLE DB Driver for SQL Server,使用者永远都不需要使用提供程序字符串属性。 通过使用 OLE DB 或适用于 SQL Server 的 OLE DB 驱动程序特定的初始化属性,使用者可设置在提供程序字符串中反映的所有初始化属性。

关于 OLE DB 驱动中可用的关键词列表,请参见“ 使用连接字符串关键字配合 OLE DB 驱动 for SQL Server”。