Nombres de entidad de seguridad del servicio (SPN) en conexiones cliente (OLE DB)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Importante

SQL Server Native Client (a menudo abreviado SNAC) se ha quitado de SQL Server 2022 (16.x) y SQL Server Management Studio 19 (SSMS). No se recomiendan ni el proveedor OLE DB de SQL Server Native Client (SQLNCLI o SQLNCLI11) ni el proveedor OLE DB de Microsoft heredado para SQL Server (SQLOLEDB) para el nuevo desarrollo. Cambie al nuevo Controlador Microsoft OLE DB para SQL Server de ahora en adelante.

En este tema se describen propiedades y funciones miembro de OLE DB compatibles con los nombres principales de servicio (SPN) en aplicaciones cliente. Para más información sobre los SPN en las aplicaciones cliente, consulte Compatibilidad con el nombre de la entidad principal de servicio (SPN) en conexiones de cliente. Para ver un ejemplo, consulte Autenticación Kerberos integrada (OLE DB).

Palabras clave de cadena de inicialización de proveedor

Las siguientes palabras clave de cadena de inicialización de proveedor admiten SPN en aplicaciones OLE DB. En la tabla siguiente, los valores de la columna de palabra clave se usan para la cadena del proveedor de IDBInitialize::Initialize. Los valores de la columna de descripción se usan en cadenas de inicialización al conectar con ADO o IDataInitialize::GetDataSource.

Palabra clave Descripción Value
ServerSPN Dirección SPN del servidor SPN del servidor. El valor predeterminado es una cadena vacía, lo que hace que SQL Server Native Client usen el SPN generado por el proveedor predeterminado.
FailoverPartnerSPN SPN de asociado de conmutación por error SPN del asociado de conmutación por error. El valor predeterminado es una cadena vacía, lo que hace que SQL Server Native Client usen el SPN generado por el proveedor predeterminado.

Propiedades de inicialización de origen de datos

Las propiedades siguientes del conjunto de propiedades DBPROPSET_SQLSERVERDBINIT permiten a las aplicaciones especificar los SPN.

Nombre Tipo Uso
SSPROP_INIT_SERVERSPN VT_BSTR, lectura/escritura Especifica el SPN del servidor. El valor predeterminado es una cadena vacía, lo que hace que SQL Server Native Client usen el SPN generado por el proveedor predeterminado.
SSPROP_INIT_FAILOVERPARTNERSPN VT_BSTR, lectura/escritura Especifica el SPN para el asociado de conmutación por error. El valor predeterminado es una cadena vacía, lo que hace que SQL Server Native Client usen el SPN generado por el proveedor predeterminado.

Propiedades de origen de datos

Las propiedades siguientes del conjunto de propiedades DBPROPSET_SQLSERVERDATASOURCEINFO permiten a las aplicaciones detectar el método de autenticación.

Nombre Tipo Uso
SSPROP_INTEGRATEDAUTHENTICATIONMETHOD VT_BSTR, solo lectura Devuelve el método de autenticación que utiliza la conexión. El valor devuelto a la aplicación es el valor que Windows devuelve a SQL Server Native Client. Estos son los valores posibles:
"NTLM", que se devuelve cuando una conexión se abre mediante la autenticación NTLM.
"Kerberos", que se devuelve cuando una conexión se abre mediante la autenticación Kerberos.

Si se ha abierto una conexión y no se puede determinar el método de autenticación, se devuelve VT_EMPTY.

Esta propiedad solo se puede leer cuando se ha inicializado un origen de datos. Si intenta leer la propiedad antes de que se haya inicializado un origen de datos, IDBProperties::GetProperies devolverá DB_S_ERRORSOCCURRED o DB_E_ERRORSOCCURRED, según corresponda, y DBPROPSTATUS_NOTSUPPORTED se establecerá en DBPROPSET_PROPERTIESINERROR para esta propiedad. Este comportamiento está de acuerdo con la especificación básica de OLE DB.
SSPROP_MUTUALLYAUTHENICATED VT_BOOL, solo lectura Devuelve VARIANT_TRUE si los servidores de la conexión se autenticaron mutuamente; de lo contrario, devuelve VARIANT_FALSE.

Esta propiedad solo se puede leer cuando se ha inicializado un origen de datos. Si hay un intento de leer la propiedad antes de que se haya inicializado un origen de datos, IDBProperties::GetProperies devolverá DB_S_ERRORSOCCURRED o DB_E_ERRORSOCCURRED, según corresponda, y DBPROPSTATUS_NOTSUPPORTED se establecerá en DBPROPSET_PROPERTIESINERROR para esta propiedad. Este comportamiento está de acuerdo con la especificación básica de OLE DB

Si este atributo se consulta para una conexión que no usó la autenticación de Windows, se devuelve VARIANT_FALSE.

Compatibilidad de API OLE DB con SPN

La tabla siguiente describe las funciones del miembro OLE DB que admiten SPN en conexiones de cliente:

Función de miembro Descripción
IDataInitialize::GetDataSource pwszInitializationString puede contener las nuevas palabras clave ServerSPN y FailoverPartnerSPN.
IDataInitialize::GetInitializationString Si SSPROP_INIT_SERVERSPN y SSPROP_INIT_FAILOVERPARTNERSPN tienen valores no predeterminados, se incluirán en la cadena de inicialización mediante ppwszInitString como valores de palabra clave para ServerSPN y FailoverPartnerSPN. De lo contrario, estas palabras clave no estarán incluidas en la cadena de inicialización.
IDBInitialize::Initialize Si están habilitados los mensajes configurando DBPROP_INIT_PROMPT en las propiedades de inicialización de origen de datos, se mostrará el cuadro de diálogo Inicio de sesión de OLE DB. Esto permite escribir SPN tanto para el servidor principal como para su asociado de conmutación por error.

La cadena de proveedor de DPPROP_INIT_PROVIDERSTRING, si se establece, reconoce las nuevas palabras clave ServerSPN y FailoverPartnerSPN y usa sus valores, si están presentes, para inicializar SSPROP_INIT_SERVER_SPN y SSPROP_INIT_FAILOVER_PARTNER_SPN.

Se puede llamar a IDBProperties::SetProperties para establecer las propiedades SSPROP_INIT_SERVER_SPN y SSPROP_INIT_FAILOVER_PARTNER_SPN antes de llamar a IDBInitialize::Initialize. Ésta es una alternativa a utilizar una cadena de proveedor.

Si una propiedad se establece en más de un lugar, un valor establecido mediante programación tiene precedencia sobre un conjunto de valores en la cadena de proveedor. Un conjunto de valores en una cadena de inicialización tiene precedencia sobre un conjunto de valores en un cuadro de diálogo de inicio de sesión.

Si la misma palabra clave aparece más de una vez en la cadena del proveedor, el valor de primera aparición tiene prioridad.
IDBProperties::GetProperties Se puede llamar a IDBProperties::GetProperties para obtener los valores de las nuevas propiedades de inicialización de origen de datos SSPROP_INIT_SERVERSPN y SSPROP_INIT_FAILOVERPARTNERSPN y de las nuevas propiedades de origen de datos SSPROP_AUTHENTICATIONMETHOD y SSPROP_MUTUALLYAUTHENTICATED.
IDBProperties::GetPropertyInfo IdbProperties::GetPropertyInfo incluirá las nuevas propiedades de inicialización de origen de datos SSPROP_INIT_SERVERSPN y SSPROP_INIT_FAILOVERPARTNERSPN, o bien las nuevas propiedades de origen de datos SSPROP_AUTHENTICATION_METHOD y SSPROP_MUTUALLYAUTHENTICATED.
IDBProperties::SetProperties Se puede llamar a IDBProperties::SetProperties para establecer los valores de las nuevas propiedades de inicialización de origen de datos SSPROP_INITSERVERSPN y SSPROP_INIT_FAILOVERPARTNERSPN.

Estas propiedades se pueden devolver en cualquier momento, pero si el origen de datos ya está abierto, se devolverá el error siguiente: DB_E_ERRORSOCCURRED, "La operación de múltiples pasos de OLE DB generó errores. Compruebe los valores de estado de OLE DB si es posible. No se realizó ningún trabajo."

Consulte también

SQL Server Native Client (OLE DB)