Mantenimiento y solución de problemas del conector de SQL Server

Se aplica a:SQL Server

En este artículo se proporciona información adicional acerca del conector de SQL Server. Para obtener más información acerca del conector de SQL Server, consulte Administración extensible de claves con Azure Key Vault (SQL Server), Pasos de instalación de Administración extensible de claves con Azure Key Vault y Usar el conector de SQL Server con características de cifrado de SQL.

Nota:

Aunque Microsoft Entra ID es el nuevo nombre de Azure Active Directory (Azure AD), para evitar interrumpir los entornos existentes, Azure AD sigue estando en algunos elementos codificados de forma rígida como campos de interfaz de usuario, proveedores de conexiones, códigos de error y cmdlets. En este artículo, los dos nombres son intercambiables.

A Instrucciones de mantenimiento para el conector de SQL Server

Sustitución incremental de claves

Importante

  • El Conector de SQL Server requiere que en el nombre de clave solo se usen los caracteres "a-z", "A-Z", "0-9" y "-", con un límite de 26 caracteres. No funcionará el uso de diferentes versiones de claves bajo el mismo nombre de clave en el Almacén de claves de Azure con el conector de SQL Server. Para girar una clave de Azure Key Vault que está usando SQL Server, se debe crear una clave con un nombre de clave nuevo.
  • Al rotar versiones de la clave, no deshabilite la versión usada originalmente para cifrar la base de datos. SQL Server no podrá recuperar la base de datos, ya que puede quedarse bloqueada en un estado "pendiente de recuperación" y generar un volcado de memoria de excepción criptográfica hasta que la versión original esté habilitada.

Normalmente, es necesario crear versiones de las claves asimétricas de servidor para el cifrado de SQL Server cada uno o dos años. Es importante tener en cuenta que aunque el Almacén de claves permite versiones de clave, los clientes no deben usar esta característica para implementar el control de versiones. El conector de SQL Server no se puede ocupar de los cambios en la versión de clave de Key Vault. Para implementar el control de versiones de claves, cree una nueva clave en Key Vault y vuelva a cifrar la clave de cifrado de datos en Management Studio.

Para TDE, así es cómo se lograría:

  • En PowerShell: cree una nueva clave asimétrica (con un nombre diferente de la clave asimétrica de TDE actual) en el Almacén de claves.

    Add-AzKeyVaultKey -VaultName 'ContosoDevKeyVault' `
      -Name 'Key2' -Destination 'Software'
    
  • Uso de Management Studio o sqlcmd.exe: use las instrucciones siguientes, tal como se muestra en el paso 3, sección 3.

    Importe la nueva clave asimétrica.

    USE master
    CREATE ASYMMETRIC KEY [MASTER_KEY2]
    FROM PROVIDER [EKM]
    WITH PROVIDER_KEY_NAME = 'Key2',
    CREATION_DISPOSITION = OPEN_EXISTING
    GO
    

    Cree un nuevo inicio de sesión que se asociará con la nueva clave asimétrica (como se muestra en las instrucciones de TDE).

    USE master
    CREATE LOGIN TDE_Login2
    FROM ASYMMETRIC KEY [MASTER_KEY2]
    GO
    

    Cree una nueva credencial para asignarse al inicio de sesión.

    CREATE CREDENTIAL Azure_EKM_TDE_cred2
        WITH IDENTITY = 'ContosoDevKeyVault',
       SECRET = 'EF5C8E094D2A4A769998D93440D8115DAADsecret123456789='
    FOR CRYPTOGRAPHIC PROVIDER EKM;
    
    ALTER LOGIN TDE_Login2
    ADD CREDENTIAL Azure_EKM_TDE_cred2;
    GO
    

    Elija la base de datos cuya clave de cifrado de base de datos le gustaría volver a cifrar.

    USE [database]
    GO
    

    Vuelva a cifrar la clave de cifrado de la base de datos.

    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER ASYMMETRIC KEY [MASTER_KEY2];
    GO
    

Actualización del conector de SQL Server

Las versiones 1.0.0.440 y anteriores se han reemplazado y ya no se admiten en entornos de producción. Las versiones 1.0.1.0 y posteriores se admiten en los entornos de producción. Use las instrucciones siguientes para actualizar a la versión más reciente disponible en el Centro de descarga de Microsoft.

Actualizar

  1. Detenga el servicio SQL Server mediante el Administrador de configuración de SQL Server.
  2. Desinstale la versión anterior mediante Panel de control\Programas\Programas y características.
    1. Nombre de aplicación: Conector de SQL Server para Microsoft Azure Key Vault
    2. Versión: 15.0.300.96 (o anterior)
    3. Fecha del archivo DLL: 30/01/2018 (o anterior)
  3. Instale (actualice) un nuevo Conector de SQL Server para Microsoft Azure Key Vault
    1. Versión: 15.0.2000.440
    2. Fecha del archivo DLL: 11/09/2020
  4. Inicie el servicio SQL Server.
  5. Compruebe que se pueda acceder a las bases de datos cifradas

Reversión

  1. Detenga el servicio SQL Server mediante el Administrador de configuración de SQL Server.

  2. Desinstale la nueva versión mediante Panel de control\Programas\Programas y características.

    1. Nombre de aplicación: Conector de SQL Server para Microsoft Azure Key Vault
    2. Versión: 15.0.2000.440
    3. Fecha del archivo DLL: 24/11/2020
  3. Instale la versión anterior del Conector de SQL Server para Microsoft Azure Key Vault.

    1. Versión 15.0.300.96
    2. Fecha del archivo DLL: 30/01/2018
  4. Inicie el servicio SQL Server.

  5. Compruebe que las bases de datos con TDE sean accesibles

  6. Después de comprobar que la actualización funciona, puede eliminar la antigua carpeta del conector de SQL Server (si decide cambiar el nombre en lugar de desinstalar en el paso 3)

Versiones anteriores del Conector de SQL Server

Vínculos profundos a versiones anteriores del Conector de SQL Server

Puesta en marcha de la entidad de servicio principal de SQL Server

SQL Server usa entidades de servicio creadas en Microsoft Entra ID (anteriormente, Azure Active Directory) como credenciales para acceder al almacén de claves. La entidad de servicio tiene Id. de cliente y clave de autenticación. Una credencial de SQL Server se configura con el nombre de almacén, el identificador de cliente y la clave de autenticación. La clave de autenticación es válida durante un determinado período de tiempo (uno o dos años). Antes de que expire el período de tiempo se debe generar una nueva clave en Microsoft Entra ID para la entidad de servicio. Después, la credencial debe cambiarse en SQL Server. Management Studio mantiene una caché para la credencial en la sesión actual, por lo que cuando se cambia una credencial, Management Studio se debe reiniciar.

Copia de seguridad y recuperación de claves

Se debe realizar una copia de seguridad del almacén de claves con cierta frecuencia. Si se pierde una clave asimétrica en el almacén, se puede restaurar desde la copia de seguridad. La clave debe restaurarse con el mismo nombre que antes, que es lo que hace el comando de PowerShell Restore (consulta los pasos siguientes).
Si el almacén se ha perdido, tendrás que volver a crear un almacén y restaurar la clave asimétrica en el almacén usando el mismo nombre que antes. El nombre del almacén puede ser diferente (o el mismo que antes). Debe establecer los permisos de acceso en el nuevo almacén para conceder a la entidad de servicio de SQL Server el acceso necesario a los escenarios de cifrado de SQL Server y ajustar la credencial de SQL Server para que se refleje el nuevo nombre del almacén.

En resumen, estos son los pasos:

  • Realice una copia de seguridad de la clave del almacén (con el cmdlet de PowerShell Backup-AzureKeyVaultKey).
  • En caso de error del almacén, cree un nuevo almacén en la misma región geográfica. El usuario que crea el almacén debería estar en el mismo directorio predeterminado que el programa de instalación de la entidad de servicio para SQL Server.
  • Restaure la clave en el nuevo almacén mediante el cmdlet Restore-AzureKeyVaultKey de PowerShell, que restaura la clave con el mismo nombre que antes. Si ya existe una clave con el mismo nombre, se producirá un error en la restauración.
  • Conceda permisos a la entidad de servicio de SQL Server para que use este nuevo almacén.
  • Modifique la credencial de SQL Server que usa el motor de base de datos para reflejar el nuevo nombre de almacén (si es necesario).

Se pueden restaurar las copias de seguridad de claves en regiones de Azure, siempre y cuando permanezcan en la misma región geográfica o nube nacional: Estados Unidos, Canadá, Japón, Australia, India, APAC, Brasil y Europa, China, US Gov o Alemania.

B. Preguntas más frecuentes

En el Almacén de claves de Azure

¿Cómo funcionan las operaciones de clave con el Almacén de claves de Azure?
La clave asimétrica en el Almacén de claves se usa para proteger las claves de cifrado de SQL Server. La parte pública de la clave asimétrica es la única que sale del almacén: el almacén no exporta nunca la parte privada. Todas las operaciones de cifrado en las que se usa la clave asimétrica se realizan en el servicio Azure Key Vault y se protegen con la seguridad del servicio.

¿Qué es un URI de clave?
Todas las claves del Almacén de claves de Azure tienen un identificador uniforme de recursos, (URI), que se puede usar para hacer referencia a la clave en la aplicación. Use el formato https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey para obtener la versión actual y el formato https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey/cgacf4f763ar42ffb0a1gca546aygd87 para obtener una versión específica.

Configurar SQL Server

¿Qué son los puntos de conexión a los que necesita tener acceso el Conector de SQL Server? El conector se comunica con dos puntos de conexión, que deben estar permitidos. El único puerto requerido para la comunicación saliente a estos otros servicios es el puerto 443 para Https:

  • login.microsoftonline.com/*:443
  • .vault.azure.net/:443

Además, comprobar la lista de revocación de certificados podría crear tráfico HTTP en el puerto 80.

Nota:

El uso del conector de SQL Server para Azure Key Vault detrás de un firewall o servidor proxy puede afectar al rendimiento si el tráfico se retrasa o bloquea. Familiarícese con Access Azure Key Vault detrás de un firewall para asegurarse de que se han implementado las reglas correctas.

¿Cómo conectarse a Azure Key Vault a través de un servidor proxy HTTP(S)? El conector usa la configuración de proxy de Internet Explorer. Esta configuración se puede controlar por medio de la directiva de grupo o el registro, pero es importante tener en cuenta que no son opciones de configuración de todo el sistema y deben estar destinadas a la cuenta de servicio que ejecuta la instancia de SQL Server. Si un administrador de bases de datos ve o edita la configuración en Internet Explorer, solo afectará a la cuenta del administrador de la base de datos en lugar del motor de SQL Server. No se recomienda iniciar sesión en el servidor de forma interactiva mediante la cuenta de servicio; esta opción está bloqueada en muchos entornos seguros. Los cambios en la configuración de proxy configurado pueden requerir que se reinicie la instancia de SQL Server para que surtan efecto, ya que se almacenan en caché cuando el conector intenta conectarse por primera vez a un almacén de claves.

¿Qué tamaños de clave de Azure Key Vault son compatibles con el Conector de SQL Server? La última compilación del Conector de SQL Server admite claves de Azure Key Vault de los tamaños 2048 y 3072.

Nota:

La vista «sys.asymmetric_keys» notifica el tamaño de clave como 2048 aunque se use el tamaño de clave 3072. Es un problema conocido de esta vista y el equipo de producto de SQL Server lo solucionará en una versión futura.

¿Cuáles son los niveles de permiso mínimos necesarios para cada paso de configuración en SQL Server?
Aunque puede realizar todos los pasos de configuración como miembro del rol fijo de servidor sysadmin, Microsoft le anima a minimizar los permisos que usa. En la lista siguiente se define el nivel de permiso mínimo para cada acción.

  • Para crear un proveedor de servicios criptográficos, son necesarios el permiso CONTROL SERVER o la pertenencia al rol fijo de servidor sysadmin .

  • Para cambiar una opción de configuración y ejecutar la instrucción de RECONFIGURE , debe tener concedido el permiso ALTER SETTINGS de nivel de servidor. Los roles fijos de servidor sysadmin y ALTER SETTINGS serveradmin tienen el permiso de forma implícita.

  • Para cread una credencial, necesita el permiso ALTER ANY CREDENTIAL .

  • Para agregar una credencial a un inicio de sesión, necesita el permiso ALTER ANY LOGIN .

  • Para crear una clave asimétrica, necesita el permiso CREATE ASYMMETRIC KEY .

¿Cómo puedo cambiar el directorio predeterminado de Microsoft Entra para que mi almacén de claves se cree en la misma suscripción y directorio de la entidad de servicio que creé para el conector de SQL Server?

Captura de pantalla que muestra los pasos de ayuda del directorio predeterminado para cambiar Microsoft Entra ID.

  1. Vaya a Azure Portal.

  2. Seleccione el icono Configuración en la esquina superior derecha de la página.

  3. En la página Directorios y suscripciones, selecciona Todos los directorios para ver todos los directorios de Microsoft Entra a los que pertenece.

  4. Puede cambiar el directorio de inicio o cambiar a otro directorio si tiene varios directorios.

    Nota:

    Puede que no tenga los permisos para realmente cambiar el directorio predeterminado de la suscripción a Azure. En este caso, crea la entidad de servicio de Microsoft Entra dentro del directorio predeterminado para que esté en el mismo directorio que Azure Key Vault que se usará más adelante.

Para obtener más información sobre Microsoft Entra ID, consulta Cómo están relacionadas las suscripciones de Azure con Microsoft Entra ID.

C. Explicaciones de código de error para el conector de SQL Server

Nota:

Aunque Microsoft Entra ID es el nuevo nombre de Azure Active Directory (Azure AD), para evitar interrumpir los entornos existentes, Azure AD sigue estando en algunos elementos codificados de forma rígida como campos de interfaz de usuario, proveedores de conexiones, códigos de error y cmdlets. En este artículo, los dos nombres son intercambiables.

Códigos de error del proveedor:

Código de error Símbolo Descripción
0 scp_err_Success La operación se ha realizado correctamente.
1 scp_err_Failure Se produjeron errores en la operación.
2 scp_err_InsufficientBuffer Este error indica al motor que asigne más memoria para el búfer.
3 scp_err_NotSupported No se admite la operación. Por ejemplo, el tipo de clave o el algoritmo especificado no es compatible con el proveedor EKM.
4 scp_err_NotFound El proveedor EKM no ha podido encontrar el algoritmo o la clave especificada.
5 scp_err_AuthFailure Error durante la autenticación con el proveedor EKM.
6 scp_err_InvalidArgument El argumento proporcionado no es válido.
7 scp_err_ProviderError Se ha producido un error sin especificar en el proveedor EKM que ha detectado el motor de SQL.
401 acquireToken El servidor ha respondido con el error 401 a la solicitud. Asegúrese de que el secreto y el id. de cliente son correctos, y que la cadena de credenciales es una concatenación de secreto e id. de cliente de AAD sin guiones.
404 getKeyByName El servidor respondió con un error 404 porque no se encontró el nombre de clave. Asegúrese de que el nombre de clave existe en el almacén.
2049 scp_err_KeyNameDoesNotFitThumbprint El nombre de la clave es demasiado largo para caber en la huella digital del motor de SQL. El nombre de la clave no debe superar los 26 caracteres.
2050 scp_err_PasswordTooShort La cadena de secreto, que es la concatenación del identificador de cliente y el secreto de AAD, no llega a 32 caracteres.
2051 scp_err_OutOfMemory El motor de SQL se ha quedado sin memoria y no se ha podido asignar la memoria para el proveedor EKM.
2052 scp_err_ConvertKeyNameToThumbprint No se ha podido convertir el nombre de la clave en una huella digital.
2053 scp_err_ConvertThumbprintToKeyName No se ha podido convertir la huella digital en un nombre de clave.
2058 scp_err_FailureInRegistry No se pudo realizar la operación en el Registro. La cuenta del servicio SQL Server no tiene permiso para crear la clave del Registro.
3000 ErrorSuccess La operación de AKV se ha realizado correctamente.
3001 ErrorUnknown Se ha producido un error en la operación de AKV con un error sin especificar.
3002 ErrorHttpCreateHttpClientOutOfMemory No se puede crear un elemento HttpClient para la operación de AKV debido a que no hay memoria suficiente.
3003 ErrorHttpOpenSession No se puede abrir una sesión Http debido a un error de red.
3004 ErrorHttpConnectSession No se puede conectar una sesión Http debido a un error de red.
3005 ErrorHttpAttemptConnect No se puede intentar una conexión debido a un error de red.
3006 ErrorHttpOpenRequest No se puede abrir una solicitud debido a un error de red.
3007 ErrorHttpAddRequestHeader No se puede agregar un encabezado de solicitud.
3008 ErrorHttpSendRequest No se puede enviar una solicitud debido a un error de red.
3009 ErrorHttpGetResponseCode No se puede obtener un código de respuesta debido a un error de red.
3010 ErrorHttpResponseCodeUnauthorized El servidor ha respondido con el error 401 a la solicitud.
3011 ErrorHttpResponseCodeThrottled El servidor ha limitado la solicitud.
3012 ErrorHttpResponseCodeClientError La solicitud que se envió desde el conector no es válida. Normalmente esto significa que el nombre de clave no es válido o contiene caracteres no válidos.
3013 ErrorHttpResponseCodeServerError El servidor ha respondido con un código de respuesta entre 500 y 600.
3014 ErrorHttpQueryHeader No se puede realizar una consulta para el encabezado de respuesta.
3015 ErrorHttpQueryHeaderOutOfMemoryCopyHeader No se puede copiar el encabezado de respuesta debido a que no hay memoria suficiente.
3016 ErrorHttpQueryHeaderOutOfMemoryReallocBuffer No se puede realizar una consulta al encabezado de respuesta debido a que no hay memoria suficiente al reasignar un búfer.
3017 ErrorHttpQueryHeaderNotFound No se encuentra el encabezado de consulta en la respuesta.
3018 ErrorHttpQueryHeaderUpdateBufferLength No se puede actualizar la longitud del búfer al realizar una consulta del encabezado de respuesta.
3019 ErrorHttpReadData No se pueden leer los datos de respuesta debido a un error de red.
3076 ErrorHttpResourceNotFound El servidor respondió con un error 404 porque no se encontró el nombre de clave. Asegúrese de que el nombre de la clave existe en el almacén.
3077 ErrorHttpOperationForbidden El servidor respondió con un error 403 porque el usuario no tiene el permiso adecuado para realizar la acción. Asegúrese de que tiene el permiso para la operación especificada. Como mínimo, el conector requiere los permisos 'get, list, wrapKey, unwrapKey' para funcionar adecuadamente.
3100 ErrorHttpCreateHttpClientOutOfMemory No se puede crear un HttpClient para la operación de AKV debido a que no hay memoria suficiente.
3101 ErrorHttpOpenSession No se puede abrir una sesión HTTP debido a un error de red.
3102 ErrorHttpConnectSession No se puede conectar una sesión HTTP debido a un error de red.
3103 ErrorHttpAttemptConnect No se puede intentar realizar una conexión debido a un error de red.
3104 ErrorHttpOpenRequest No se puede abrir una solicitud debido a un error de red.
3105 ErrorHttpAddRequestHeader No se puede agregar un encabezado de solicitud.
3106 ErrorHttpSendRequest No se puede enviar una solicitud debido a un error de red.
3107 ErrorHttpGetResponseCode No se puede obtener un código de respuesta debido a un error de red.
3108 ErrorHttpResponseCodeUnauthorized El servidor ha respondido con el error 401 a la solicitud. Asegúrese de que el secreto y el identificador de cliente son correctos, y que la cadena de credenciales es una concatenación de secreto e identificador de cliente de AAD sin guiones.
3109 ErrorHttpResponseCodeThrottled El servidor ha limitado la solicitud.
3110 ErrorHttpResponseCodeClientError La solicitud no es válida. Normalmente esto significa que el nombre de clave no es válido o contiene caracteres no válidos.
3111 ErrorHttpResponseCodeServerError El servidor ha respondido con un código de respuesta entre 500 y 600.
3112 ErrorHttpResourceNotFound El servidor respondió con un error 404 porque no se encontró el nombre de clave. Asegúrese de que el nombre de clave existe en el almacén.
3113 ErrorHttpOperationForbidden El servidor respondió con un error 403 porque el usuario no tiene el permiso adecuado para realizar la acción. Asegúrese de que tiene el permiso para la operación especificada. Como mínimo, se necesitan los permisos "get, wrapKey, unwrapKey".
3114 ErrorHttpQueryHeader No se puede realizar una consulta para el encabezado de respuesta.
3115 ErrorHttpQueryHeaderOutOfMemoryCopyHeader No se puede copiar el encabezado de respuesta debido a que no hay memoria suficiente.
3116 ErrorHttpQueryHeaderOutOfMemoryReallocBuffer No se puede realizar una consulta al encabezado de respuesta debido a que no hay memoria suficiente al reasignar un búfer.
3117 ErrorHttpQueryHeaderNotFound No se encuentra el encabezado de consulta en la respuesta.
3118 ErrorHttpQueryHeaderUpdateBufferLength No se puede actualizar la longitud del búfer al realizar una consulta del encabezado de respuesta.
3119 ErrorHttpReadData No se pueden leer los datos de respuesta debido a un error de red.
3120 ErrorHttpGetResponseOutOfMemoryCreateTempBuffer No se puede obtener el cuerpo de respuesta debido a memoria insuficiente al crear un búfer temporal.
3121 ErrorHttpGetResponseOutOfMemoryGetResultString No se puede obtener el cuerpo de respuesta debido a memoria insuficiente al obtener la cadena de resultado.
3122 ErrorHttpGetResponseOutOfMemoryAppendResponse No se puede obtener el cuerpo de respuesta debido a memoria insuficiente al anexar la respuesta.
3200 ErrorGetAADValuesOutOfMemoryConcatPath No se pueden obtener valores de encabezado de desafío de Azure Active Directory debido a memoria insuficiente al concatenar la ruta de acceso.
3201 ErrorGetAADDomainUrlStartPosition No se puede encontrar la posición inicial de la dirección URL de dominio de Azure Active Directory en el encabezado de desafío de respuesta con formato incorrecto.
3202 ErrorGetAADDomainUrlStopPosition No se puede encontrar la posición final de la dirección URL del dominio de Azure Active Directory en el encabezado de desafío de respuesta con formato incorrecto.
3203 ErrorGetAADDomainUrlMalformatted El encabezado de desafío de respuesta de Azure Active Directory tiene un formato incorrecto y no contiene la dirección URL de dominio de AAD.
3204 ErrorGetAADDomainUrlOutOfMemoryAlloc Memoria insuficiente al asignar el búfer para la dirección URL del dominio de Azure Active Directory.
3205 ErrorGetAADTenantIdOutOfMemoryAlloc Memoria insuficiente al asignar el búfer para el valor tenantId de Azure Active Directory.
3206 ErrorGetAKVResourceUrlStartPosition No se puede encontrar la posición inicial de la dirección URL del recurso de Azure Key Vault en el encabezado de desafío de respuesta con formato incorrecto.
3207 ErrorGetAKVResourceUrlStopPosition No se puede encontrar la posición final de la dirección URL del recurso de Azure Key Vault en el encabezado de desafío de respuesta con formato incorrecto.
3208 ErrorGetAKVResourceUrlOutOfMemoryAlloc Memoria insuficiente al asignar el búfer para la dirección URL del recurso de Azure Key Vault.
3300 ErrorGetTokenOutOfMemoryConcatPath No se puede obtener el token debido a memoria insuficiente al concatenar la ruta de acceso de la solicitud.
3301 ErrorGetTokenOutOfMemoryConcatBody No se puede obtener el token debido a memoria insuficiente al concatenar el cuerpo de la respuesta.
3302 ErrorGetTokenOutOfMemoryConvertResponseString No se puede obtener el token debido a memoria insuficiente al convertir la cadena de respuesta.
3303 ErrorGetTokenBadCredentials No se puede obtener el token debido a credenciales incorrectas. Asegúrese de que la cadena de credenciales o el certificado sean válidos.
3304 ErrorGetTokenFailedToGetToken Aunque las credenciales son correctas, la operación todavía no pudo obtener un token válido.
3305 ErrorGetTokenRejected El token es válido, pero lo rechaza el servidor.
3306 ErrorGetTokenNotFound No se encuentra el token en la respuesta.
3307 ErrorGetTokenJsonParser No se puede analizar la respuesta JSON del servidor.
3308 ErrorGetTokenExtractToken No se puede extraer el token de la respuesta JSON.
3400 ErrorGetKeyByNameOutOfMemoryConvertResponseString No se puede obtener la clave por nombre debido a memoria insuficiente al convertir la cadena de respuesta.
3401 ErrorGetKeyByNameOutOfMemoryConcatPath No se puede obtener la clave por nombre debido a memoria insuficiente al concatenar la ruta de acceso.
3402 ErrorGetKeyByNameOutOfMemoryConcatHeader No se puede obtener la clave por nombre debido a memoria insuficiente al concatenar el encabezado.
3403 ErrorGetKeyByNameNoResponse No se puede obtener la clave por nombre debido a que no hay respuesta del servidor.
3404 ErrorGetKeyByNameJsonParser No se puede obtener la clave por nombre debido a un error al analizar la respuesta JSON.
3405 ErrorGetKeyByNameExtractKeyNode No se puede obtener la clave por nombre debido a un error al extraer el nodo de clave de la respuesta.
3406 ErrorGetKeyByNameExtractKeyId No se puede obtener la clave por nombre debido a un error al extraer el identificador de clave de la respuesta.
3407 ErrorGetKeyByNameExtractKeyType No se puede obtener la clave por nombre debido a un error al extraer el tipo de clave de la respuesta.
3408 ErrorGetKeyByNameExtractKeyN No se puede obtener la clave por nombre debido a un error al extraer la clave N de la respuesta.
3409 ErrorGetKeyByNameBase64DecodeN No se puede obtener la clave por nombre debido a un error al decodificar la N en base64.
3410 ErrorGetKeyByNameExtractKeyE No se puede obtener la clave por nombre debido a un error al extraer la clave E de la respuesta.
3411 ErrorGetKeyByNameBase64DecodeE No se puede obtener la clave por nombre debido a un error al decodificar la E en base64.
3412 ErrorGetKeyByNameExtractKeyUri No se puede extraer el URI de clave de la respuesta.
3500 ErrorBackupKeyOutOfMemoryConvertResponseString No se puede realizar una copia de seguridad de la clave debido a memoria insuficiente al convertir la cadena de respuesta.
3501 ErrorBackupKeyOutOfMemoryConcatPath No se puede realizar una copia de seguridad de la clave debido a memoria insuficiente al concatenar la ruta de acceso.
3502 ErrorBackupKeyOutOfMemoryConcatHeader No se puede realizar una copia de seguridad de la clave debido a memoria insuficiente al concatenar el encabezado de la solicitud.
3503 ErrorBackupKeyNoResponse No se puede realizar una copia de seguridad de la clave debido a que no hay respuesta del servidor.
3504 ErrorBackupKeyJsonParser No se puede realizar una copia de seguridad de la clave debido a un error al analizar la respuesta JSON.
3505 ErrorBackupKeyExtractValue No se puede realizar una copia de seguridad de la clave debido a un error al extraer el valor de la respuesta JSON.
3506 ErrorBackupKeyBase64DecodeValue No se puede realizar la copia de seguridad de la clave debido a un error al decodificar el campo de valor en Base64.
3600 ErrorWrapKeyOutOfMemoryConvertResponseString No se puede ajustar la clave debido a memoria insuficiente al convertir la cadena de respuesta.
3601 ErrorWrapKeyOutOfMemoryConcatPath No se puede ajustar la clave debido a memoria insuficiente al concatenar la ruta de acceso.
3602 ErrorWrapKeyOutOfMemoryConcatHeader No se puede ajustar la clave debido a memoria insuficiente al concatenar el encabezado.
3603 ErrorWrapKeyOutOfMemoryConcatBody No se puede ajustar la clave debido a memoria insuficiente al concatenar el cuerpo.
3604 ErrorWrapKeyOutOfMemoryConvertEncodedBody No se puede ajustar la clave debido a memoria insuficiente al convertir el cuerpo codificado.
3605 ErrorWrapKeyBase64EncodeKey No se puede ajustar la clave debido a un error al codificar la clave en base64.
3606 ErrorWrapKeyBase64DecodeValue No se puede ajustar la clave debido a un error al descodificar el valor de respuesta en base64.
3607 ErrorWrapKeyJsonParser No se puede ajustar la clave debido a un error al analizar la respuesta JSON.
3608 ErrorWrapKeyExtractValue No se puede ajustar la clave debido a un error al extraer el valor de la respuesta.
3609 ErrorWrapKeyNoResponse No se puede ajustar la clave debido a que no hay respuesta del servidor.
3700 ErrorUnwrapKeyOutOfMemoryConvertResponseString No se puede desajustar la clave debido a memoria insuficiente al convertir la cadena de respuesta.
3701 ErrorUnwrapKeyOutOfMemoryConcatPath No se puede desajustar la clave debido a memoria insuficiente al concatenar la ruta de acceso.
3702 ErrorUnwrapKeyOutOfMemoryConcatHeader No se puede desajustar la clave debido a memoria insuficiente al concatenar el encabezado.
3703 ErrorUnwrapKeyOutOfMemoryConcatBody No se puede desajustar la clave debido a memoria insuficiente al concatenar el cuerpo.
3704 ErrorUnwrapKeyOutOfMemoryConvertEncodedBody No se puede desajustar la clave debido a memoria insuficiente al convertir el cuerpo codificado.
3705 ErrorUnwrapKeyBase64EncodeKey No se puede desajustar la clave debido a un error al codificar la clave en base64.
3706 ErrorUnwrapKeyBase64DecodeValue No se puede desajustar la clave debido a un error al decodificar el valor de respuesta en base64.
3707 ErrorUnwrapKeyJsonParser No se puede desajustar la clave debido a un error al extraer el valor de la respuesta.
3708 ErrorUnwrapKeyExtractValue No se puede desajustar la clave debido a un error al extraer el valor de la respuesta.
3709 ErrorUnwrapKeyNoResponse No se puede desajustar la clave debido a que no hay respuesta del servidor.
3800 ErrorSecretAuthParamsGetRequestBody Error al crear el cuerpo de la solicitud con el valor clientId y el secreto de AAD.
3801 ErrorJWTTokenCreateHeader Error al crear el encabezado de token JWT para la autenticación con AAD.
3802 ErrorJWTTokenCreatePayloadGUID Error al crear el GUID para la carga de token JWT para la autenticación con AAD.
3803 ErrorJWTTokenCreatePayload Error al crear la carga de token JWT para la autenticación con AAD.
3804 ErrorJWTTokenCreateSignature Error al crear la firma de token de JWT para la autenticación con AAD.
3805 ErrorJWTTokenSignatureHashAlg Error al obtener el algoritmo hash SHA256 para la autenticación con AAD.
3806 ErrorJWTTokenSignatureHash Error al crear el hash SHA256 para la autenticación del token JWT con AAD.
3807 ErrorJWTTokenSignatureSignHash Error al firmar el hash del token JWT para la autenticación con AAD.
3808 ErrorJWTTokenCreateToken Error al crear el token JWT para la autenticación con AAD.
3809 ErrorPfxCertAuthParamsImportPfx Error al importar el certificado pfx para la autenticación con AAD.
3810 ErrorPfxCertAuthParamsGetThumbprint Error al obtener la huella digital del certificado pfx para la autenticación con AAD.
3811 ErrorPfxCertAuthParamsGetPrivateKey Error al obtener la clave privada del certificado pfx para la autenticación con AAD.
3812 ErrorPfxCertAuthParamsSignAlg Error al obtener el algoritmo de firma RSA para la autenticación del certificado pfx con AAD.
3813 ErrorPfxCertAuthParamsImportForSign Error al importar la clave privada de pfx para la firma RSA para la autenticación con AAD.
3814 ErrorPfxCertAuthParamsCreateRequestBody Error al crear el cuerpo de la solicitud desde el certificado pfx para la autenticación con AAD.
3815 ErrorPEMCertAuthParamsGetThumbprint Error de descodificación de la huella digital en base64 para la autenticación con AAD.
3816 ErrorPEMCertAuthParamsGetPrivateKey Error al obtener la clave privada RSA de PEM para la autenticación con AAD.
3817 ErrorPEMCertAuthParamsSignAlg Error al obtener el algoritmo de firma RSA para la autenticación de clave privada de PEM con AAD.
3818 ErrorPEMCertAuthParamsImportForSign Error al importar la clave privada de PEM para la firma RSA para la autenticación con AAD.
3819 ErrorPEMCertAuthParamsCreateRequestBody Error al crear el cuerpo de la solicitud a partir de la clave privada de PEM para la autenticación con AAD.
3820 ErrorLegacyPrivateKeyAuthParamsSignAlg Error al obtener el algoritmo de firma RSA para la autenticación de clave privada heredada con AAD.
3821 ErrorLegacyPrivateKeyAuthParamsImportForSign Error al importar la clave privada heredada para la firma RSA para la autenticación con AAD.
3822 ErrorLegacyPrivateKeyAuthParamsCreateRequestBody Error al crear el cuerpo de la solicitud a partir de la clave privada heredada para la autenticación con AAD.
3900 ErrorAKVDoesNotExist Error de nombre de Internet no resuelto. Esto suele indicar que se ha eliminado Azure Key Vault.
4000 ErrorCreateKeyVaultRetryManagerOutOfMemory No se puede crear un RetryManager para la operación de AKV debido a que no hay memoria suficiente.

Si no ve el código de error en esta tabla, estas son algunas razones más por las que se puede estar produciendo el error:

  • Es posible que no disponga de acceso a Internet y no pueda acceder a Azure Key Vault. Compruebe la conexión a Internet.

  • Es posible que el servicio del Almacén de claves de Azure esté fuera de servicio. Vuelva a intentarlo en otro momento.

  • Es posible que haya quitado la clave asimétrica del Almacén de datos de Azure o SQL Server. Restaure la clave.

  • Si recibes un error de «No se puede cargar la biblioteca», asegúrate de tener la versión adecuada de Visual Studio C++ Redistribuible instalada en función de la versión de SQL Server que estás ejecutando. En la tabla siguiente se especifica qué versión instalar desde el Centro de descarga de Microsoft.

El registro de eventos de Windows también registra los errores asociados con el Conector de SQL Server, lo que puede ayudar proporcionando contexto adicional sobre el motivo por el que se produce el error. El origen del registro de eventos de la aplicación Windows será "Conector de SQL Server para Microsoft Azure Key Vault".

Bibliotecas en tiempo de ejecución de C++ para el conector de SQL Server 1.0.5.0

SQL Server Version (Versión de SQL Server) Vínculo de instalación redistribuible si usa el conector de SQL Server 1.0.5.0
2008, 2008 R2, 2012, 2014 Paquetes redistribuibles de Visual C++ para Visual Studio 2013
2016, 2017, 2019 Visual C++ Redistributable para Visual Studio 2015

Bibliotecas en tiempo de ejecución de C++ para el conector de SQL Server 1.0.4.0

SQL Server Version (Versión de SQL Server) Vínculo de instalación redistribuible si usa el conector de SQL Server 1.0.4.0
2008, 2008 R2, 2012, 2014, 2016, 2017, 2019 Paquetes redistribuibles de Visual C++ para Visual Studio 2013

Referencias adicionales

Más información acerca de la Administración extensible de claves:

Cifrados de SQL compatibles con EKM:

Comandos de Transact-SQL relacionados:

Documentación del Almacén de claves de Azure: