初始化和授权属性

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

下载 OLE DB 驱动程序

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

属性 ID 说明
DBPROP_AUTH_CACHE_AUTHINFO OLE DB Driver for SQL Server 不缓存身份验证信息。

OLE DB Driver for SQL Server 在尝试设置属性值时返回 DB_S_ERRORSOCCURRED。 DBPROP 结构的 dwStatus 成员指示 DBPROPSTATUS_NOTSUPPORTED 。
DBPROP_AUTH_ENCRYPT_PASSWORD OLE DB Driver for SQL Server 使用标准的 Microsoft SQL Server 安全机制来隐藏密码。

OLE DB Driver for SQL Server 在尝试设置属性值时返回 DB_S_ERRORSOCCURRED。 DBPROP 结构的 dwStatus 成员指示 DBPROPSTATUS_NOTSUPPORTED 。
DBPROP_AUTH_INTEGRATED 如果 DBPROP_AUTH_INTEGRATED 设置为空指针、Null 字符串或“SSPI”VT_BSTR 值,则适用于 SQL Server 的 OLE DB 驱动程序使用 Windows 身份验证模式来授权用户访问由 DBPROP_INIT_DATASOURCE 和 DBPROP_INIT_CATALOG 属性指定的 SQL Server 数据库。

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

OLE DB Driver for SQL Server 在尝试设置属性值时返回 DB_S_ERRORSOCCURRED。 DBPROP 结构的 dwStatus 成员指示 DBPROPSTATUS_NOTSUPPORTED 。
DBPROP_AUTH_PASSWORD 分配给 SQL Server 登录名的密码。 选用 SQL Server 身份验证来授权访问 SQL Server 数据库时,将使用该属性。
DBPROP_AUTH_PERSIST_ENCRYPTED 保存身份验证信息时,OLE DB Driver for SQL Server 不加密这些信息。

OLE DB Driver for SQL Server 在尝试设置属性值时返回 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 支持异步启动。

如果设置 DBPROP_INIT_ASYNCH 属性中的 DBPROPVAL_ASYNCH_INITIALIZE 位,将导致 IDBInitialize::Initialize 成为非阻止调用 。 有关详细信息,请参阅执行异步操作
DBPROP_INIT_CATALOG 要连接的现有 SQL Server 数据库的名称。
DBPROP_INIT_DATASOURCE 运行 Microsoft SQL Server 实例的服务器的网络名称。 如果计算机上运行了 SQL Server 的多个实例,则需要按 \\ServerName\InstanceName 的形式指定 DBPROP_INIT_DATASOURCE 值,以连接到特定的 SQL Server 实例。 转义序列 \\ 用于表示反斜杠自身。
DBPROP_INIT_GENERALTIMEOUT 指明在多少秒后请求(数据源初始化和命令执行除外)超时。如果值为 0,则表示无限期超时。通过网络连接运行或用于分布式/事务方案的提供程序可以支持此属性,以建议登记的组件在遇到长时间运行的请求时触发超时。 数据源初始化和命令执行的超时仍分别由 DBPROP_INIT_TIMEOUT 和 DBPROP_COMMANDTIMEOUT 控制。

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

OLE DB Driver for SQL Server 在尝试设置属性值时返回 DB_S_ERRORSOCCURRED。 DBPROP 结构的 dwStatus 成员指示 DBPROPSTATUS_NOTSUPPORTED 。
DBPROP_INIT_LCID 适用于 SQL Server 的 OLE DB 驱动程序验证区域设置 ID;如果区域设置 ID 不受支持或未在客户端上安装,则返回错误。
DBPROP_INIT_LOCATION OLE DB Driver for SQL Server 在尝试设置属性值时返回 DB_S_ERRORSOCCURRED。 DBPROP 结构的 dwStatus 成员指示 DBPROPSTATUS_NOTSUPPORTED 。
DBPROP_INIT_MODE OLE DB Driver for SQL Server 在尝试设置属性值时返回 DB_S_ERRORSOCCURRED。 DBPROP 结构的 dwStatus 成员指示 DBPROPSTATUS_NOTSUPPORTED 。
DBPROP_INIT_PROMPT OLE DB Driver for SQL Server 支持数据源初始化的所有提示模式。 OLE DB Driver for SQL Server 使用 DBPROMPT_NOPROMPT 作为此属性的默认设置。
DBPROP_INIT_PROTECTION_LEVEL OLE DB Driver for SQL 不支持对与 SQL Server 实例的连接使用保护级别。

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

在提供程序特定的属性集 DBPROPSET_SQLSERVERDBINIT 中,适用于 SQL Server 的 OLE DB 驱动程序定义这些额外的初始化属性。

属性 ID 说明
SSPROP_AUTH_ACCESS_TOKEN1 键入:VT_BSTR

R/W:读取/写入

默认值:VT_EMPTY

说明:用于对 Microsoft Entra ID 进行身份验证的访问令牌。

注意: 如果指定此属性的同时还指定 UIDPWDTrusted_ConnectionAuthentication 连接字符串关键字或其相应属性/关键字,则会出现错误。
SSPROP_AUTH_MODE1 键入:VT_BSTR

R/W:读取/写入

默认值: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)关键字或其相应属性的应用程序将 Authentication 关键字(或其相应属性)的值设置为 ActiveDirectoryIntegrated 以启用新的加密和证书验证行为。

  • 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

R/W:写入

默认值:VT_EMPTY

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

R/W:读取/写入

说明:客户端应用程序名称。
SSPROP_INIT_AUTOTRANSLATE 键入:VT_BOOL

R/W:读取/写入

默认值:VARIANT_TRUE

说明:OEM/ANSI 字符转换。

VARIANT_TRUE:OLE DB Driver for SQL Server 通过 Unicode 转换来转换在客户端和服务器之间发送的 ANSI 字符串,从而将客户端和服务器的代码页之间匹配的扩展字符中的问题数降至最少:

对于发送到 SQL Server char、varchar 或 text 变量、参数或列实例的客户端 DBTYPE_STR 数据,它们先使用客户端 ANSI 代码页 (ACP) 从字符转换到 Unicode,再使用服务器的 ACP 从 Unicode 转换到字符。

对于发送到客户端 DBTYPE_STR 变量的 SQL Server char、varchar 或 text 数据,它们使用服务器 ACP 从字符转换为 Unicode,再使用客户端 ACP 从 Unicode 转换为字符 。

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

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

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

发送到服务器上的 char、varchar 或 text 的 Unicode DBTYPE_WSTR 客户端数据 。

发送到客户端上的 Unicode DBTYPE_WSTR 变量的 char、varchar 或 text 服务器数据 。

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

发送到客户端上的 ANSI DBTYPE_STR 变量的 Unicode char、varchar 或 text 服务器数据 。

VARIANT_FALSE:OLE DB Driver for SQL Server 不执行字符转换。

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

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

R/W:读取/写入

默认值:1

描述:控制在连接丢失的情况下重新连接尝试的次数。 有关详细信息,请参阅空闲连接复原能力
SSPROP_INIT_CONNECT_RETRY_INTERVAL 键入:VT_I4

R/W:读取/写入

默认值:10

描述:指定在连接丢失的情况下,每次连接重试尝试之间的秒数。 有关详细信息,请参阅空闲连接复原能力
SSPROP_INIT_CURRENTLANGUAGE 键入:VT_BSTR

R/W:读取/写入

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

R/W:读取/写入

默认值: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_ENCRYPT1 键入:VT_BSTR

R/W:读取/写入

默认:Mandatory

说明:指定是否加密通过网络传输的数据。

如果启用了“强制协议加密”,则不论 SSPROP_INIT_ENCRYPT 如何设置,始终都会进行加密。 如果该设置已关闭,并且 SSPROP_INIT_ENCRYPT 设置为 MandatoryStrict,那么将进行加密。

如果“强制协议加密”已关闭,并且 SSPROP_INIT_ENCRYPT 设置为 Optional,那么不进行加密。 有效值为 OptionalMandatoryStrict。 对于版本 18.x.x,请参阅 MSOLEDBSQL 主版本差异
SSPROP_INIT_FAILOVERPARTNER 键入:VT_BSTR

R/W:读取/写入

说明:指定用于数据库镜像的故障转移伙伴的名称。 它是初始化属性,并且只能在初始化之前设置。 在初始化之后,它将返回由主服务器返回的故障转移伙伴(如果有)。

这允许智能应用程序缓存最新确定的备份服务器,但这样的应用程序应当知道,仅当初次建立(对于池连接则是重置)连接时该信息才会更新,因而在经过长时间的连接后可能会过时。

建立连接之后,应用程序可以查询该属性,以确定故障转移伙伴的标识。 如果主服务器没有故障转移伙伴,则此属性将返回空字符串。 有关详细信息,请参阅使用数据库镜像
SSPROP_INIT_FAILOVERPARTNERSPN 键入:VT_BSTR

R/W:读取/写入

默认值:VT_EMPTY

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

R/W:读取/写入

说明:指定可附加数据库的主文件名。 附加此数据库并使其成为连接的默认数据库。 若要使用 SSPROP_INIT_FILENAME,必须指定该数据库的名称作为初始化属性 DBPROP_INIT_CATALOG 的值。 如果该数据库名称不存在,它将查找在 SSPROP_INIT_FILENAME 中指定的主文件名,并使用在 DBPROP_INIT_CATALOG 中指定的名称来附加该数据库。 如果数据库是以前附加的,则 SQL Server 不重新附加它。
SSPROP_INIT_HOST_NAME_CERTIFICATE 键入:VT_BSTR

R/W:读取/写入

默认值:VT_EMPTY

说明:验证 SQL Server TLS/SSL 证书时要使用的主机名。 如果未设置 SSPROP_INIT_HOST_NAME_CERTIFICATE 属性,驱动程序将使用 DBPROP_INIT_DATASOURCE 属性值作为主机名来验证 SQL Server TLS/SSL 证书。
SSPROP_INIT_MARSCONNECTION 键入:VT_BOOL

R/W:读取/写入

默认值:VARIANT_FALSE

说明:指定是否对连接启用多重活动结果集 (MARS)。 必须在与数据库建立连接之前将该选项设置为 true。 有关详细信息,请参阅使用多重活动结果集 (MARS)
SSPROP_INIT_MULTISUBNETFAILOVER 键入:VT_BOOL

R/W:读取/写入

默认值:VARIANT_FALSE

说明:MultiSubnetFailover 可加快 SQL Server 中所有 Always On 可用性组和故障转移群集实例的故障转移速度,并且将显著缩短单子网和多子网 Always On 拓扑的故障转移时间。 在多子网故障转移过程中,客户端将尝试并行进行连接。 有关详细信息,请参阅 OLE DB Driver for SQL Server 对高可用性和灾难恢复的支持
SSPROP_INIT_NETWORKADDRESS 键入:VT_BSTR

R/W:读取/写入

说明:运行由 DBPROP_INIT_DATASOURCE 属性指定的 SQL Server 实例的服务器的网络地址。
SSPROP_INIT_NETWORKLIBRARY 键入:VT_BSTR

R/W:读取/写入

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

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

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

R/W:读取/写入

说明:表格格式数据流 (TDS) 包大小(以字节计)。 数据包大小属性值必须为 0 或者介于 512 和 32,767 之间。 默认值为 0,这意味着服务器将决定实际的数据包大小。
SSPROP_INIT_SERVER_CERTIFICATE 键入:VT_BSTR

R/W:读取/写入

默认值:VT_EMPTY

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

R/W:读取/写入

默认值:VT_EMPTY

说明:指定故障转移服务器的 SPN。 空字符串导致 OLE DB Driver for SQL Server 使用提供程序生成的默认 SPN。
SSPROP_INIT_TAGCOLUMNCOLLATION 键入:VT_BOOL

R/W:写入

默认值:VARIANT_FALSE

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

R/W:读取/写入

默认值:VARIANT_TRUE

说明:当存在多个与主机名关联的 IP 时,如果第一个解析的主机名 IP 未响应,TNIR 会影响连接顺序。 TNIR 与 MultiSubnetFailover 交互,以提供其他连接顺序。 有关详细信息,请参阅使用透明网络 IP 解析
SSPROP_INIT_TRUST_SERVER_CERTIFICATE1 键入:VT_BOOL

R/W:读取/写入

默认值:VARIANT_FALSE

说明:用于启用或禁用服务器证书验证。 该属性是读/写属性,但在已建立连接之后尝试设置它将导致错误。

如果客户端配置为要求进行证书验证,则忽略该属性。 但是,应用程序可以将它与 SSPROP_INIT_ENCRYPT 一起使用,以保证即使将客户端配置为不要求加密,并且客户端上不提供证书,仍然会对应用程序与服务器之间的连接进行加密。

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

注意:在不进行证书验证的情况下使用加密可以针对数据包探查提供部分防护,但无法针对中间人攻击进行防护。 它只是允许对发送到服务器的登录名和数据进行加密,而无需验证服务器证书。

有关详细信息,请参阅加密和证书验证
SSPROP_INIT_USEPROCFORPREP 键入:VT_I4

R/W:读取/写入

默认值: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

R/W:读取/写入

说明:用于标识工作站的字符串。

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

在提供程序特定的属性集 DBPROPSET_SQLSERVERDATASOURCEINFO 中,OLE DB Driver for SQL Server 定义了更多属性;有关详细信息,请参阅数据源信息属性

适用于 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 Driver for SQL Server 中可用的关键字列表,请参阅在 OLE DB Driver for SQL Server 中使用连接字符串关键字

另请参阅

数据源对象 (OLE DB)