Mensaje de error cuando intenta conectarse a una instancia de SQL Server 2005: "no hay ningún proceso en el otro extremo de la canalización" o "el host remoto fuerza la cierre de una conexión existente"


Síntomas


Considere el siguiente escenario. Una instancia de Microsoft SQL Server 2005 está instalada en un equipo que ejecuta Microsoft Windows XP o Microsoft Windows 2000. Intenta conectarse a la instancia. En este caso, recibirá uno de los siguientes mensajes de error según el protocolo que use para la conexión:
  • Cuando intenta conectarse a la instancia mediante el protocolo de canalizaciones con nombre o el protocolo de memoria compartida, recibe el siguiente mensaje de error:
    No hay ningún proceso en el otro extremo de la canalización.
  • Cuando intenta conectarse a la instancia con el protocolo TCP/IP, recibe el siguiente mensaje de error:
    El host remoto forzará la cierre de una conexión existente.

Causa


Este problema se produce porque un certificado que tiene la especificación de clave AT_SIGNATURE se usa para el cifrado de capa de sockets seguros (SSL) para la instancia. No se puede usar un certificado que tenga la especificación de clave AT_SIGNATURE para el cifrado SSL en SQL Server 2005. En un equipo que ejecuta Microsoft Windows Server 2003, el certificado se reconoce como no válido. Por lo tanto, el servicio SQL Server no carga el certificado y el servicio no se inicia. Sin embargo, en un equipo con Windows XP o Windows 2000, el servicio SQL Server carga el certificado y el servicio se inicia correctamente. Este comportamiento hace que se produzca un error en la conexión.

Resolución


Para resolver este problema, use un certificado válido. Debe usar un certificado que tenga la especificación de clave AT_EXCHANGE. Puede examinar la especificación clave del certificado mediante la utilidad certutil (certutil. exe). Para ello, siga estos pasos:
  1. En un símbolo del sistema, ejecute el siguiente comando:
    Certutil-Store-v My-CertificateSerialNumber
    Nota En este comando, CertificateSerialNumber es un marcador de posición para el número de serie del certificado que especifique para la instancia. Para obtener el número de serie del certificado, busque la siguiente subclave del registro y, a continuación, obtenga el valor de la entrada de registro del certificado:
    HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib
  2. En el texto de resultado, busque una sección similar a la siguiente:
    CERT_KEY_PROV_INFO_PROP_ID (2): contenedor de claves = c3748a7420955ed4ee1dffb26484a0df_64756357-bf11-4528-B106-59c407d8a6e8 Provider = Microsoft RSA SChannel Cryptographic Provider = c Flags = 60 especificación = 1
    Para un certificado válido, la propiedad especificación de especificación tiene un valor de 1. Si la propiedad especificación de clave tiene un valor de 2, el certificado tiene la especificación de clave AT_SIGNATURE. Por lo tanto, experimenta el problema que se menciona en la sección "síntomas" cuando usa el certificado.

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".

Más información


Le recomendamos encarecidamente que use el administrador de configuración de SQL Server para especificar un certificado para una instancia. El administrador de configuración de SQL Server muestra solo los certificados que son válidos para que los use el servidor. Por lo tanto, puede evitar seleccionar un certificado que no sea válido.