Recibo demoras extremadamente largas (10 ~ 30 segundos) en SQL Server Management Studio 2014 cuando intento conectarme a una instancia de SQL Server 2012 a través de TCP utilizando la autenticación de Windows . Esto sucede al conectar Object Explorer o una nueva ventana de consulta en blanco. Una vez conectado, ejecutar consultas es rápido. El problema no ocurre cuando me conecto usando la autenticación de SQL Server.
Medio ambiente:
- Windows 7, conectado como usuario de dominio
- Conexión TCP a través de la dirección IP (no el nombre de host)
- El servidor está en una ubicación remota conectada a través de VPN
- Sin cifrado
Cuando inicié sesión en la computadora Windows 7 de un compañero de trabajo con mi cuenta de dominio y me conecté al mismo SQL Server a través de la misma VPN, no hubo demora. Cuando el mismo compañero de trabajo inició sesión en mi PC con su propia cuenta de dominio, experimentó el retraso. Estas pruebas muestran que el problema es exclusivo de mi PC. Además, el problema solo aparece cuando se conecta a este SQL Server y VPN específicos; Puedo conectarme a otros servidores SQL en la red local a través de la autenticación de Windows sin demora.
Cosas que he intentado sin éxito:
- Antivirus y firewall deshabilitados
- Cambié el nombre de la carpeta "12.0" en "% userprofile% \ AppData \ Roaming \ Microsoft \ SQL Server Management Studio" a "_12.0" para obligar a SSMS a recrear mi configuración de usuario.
- Forzar el protocolo de red a TCP en lugar de
<default>
. También probé Canalizaciones con nombre, pero mi servidor no está configurado para eso. - Instalé SSMS 2012 y probé eso en lugar de 2014.
- IPv6 deshabilitado
- Blackholed crl.microsoft.com a 127.0.0.1 en mi archivo etc \ hosts.
- Deshabilitó el Programa de mejora de la experiencia del cliente en SSMS, Visual Studio y Windows.
- Desinstalé todas las aplicaciones relacionadas con SQL Server de mi PC y reinstalé solo 2012.
Pistas de TCPView:
- Usando TCPView, noté que cuando hago una nueva conexión, su estado se ESTABLECE de inmediato, pero luego una o dos conexiones más con el Servidor SQL se intentan continuamente y se cierran con TIME_WAIT . En la computadora de mi compañero de trabajo, estas conexiones están ESTABLECIDAS y son sólidas. Así que estoy bastante seguro de que esta es la fuente de los tiempos de espera, pero ¿para qué sirven las conexiones y por qué fallan? (No tengo complementos en mi SSMS).
¿Algunas ideas?
Actualización: Pista Intellisense / Autocompletar (?):
Noté que una vez que finalmente me conecto, Intellisense / Autocomplete no funciona. ¿Esos requieren conexiones separadas de SSMS? Traté de deshabilitarlos, y no pareció resolver el largo retraso de la conexión.
fuente
Respuestas:
Intente ejecutar un seguimiento con SQL Profiler mientras usted y su compañero de trabajo se conectan al servidor.
Seleccione RPC, SQL Statement & PreConnect - Iniciando / Completado.
Seleccione la opción Guardar resultados en la tabla, luego compare las 2 tablas para encontrar el cuello de botella.
O, dado que se está conectando por IP, podría estar haciendo una búsqueda inversa de DNS. Si es así, agregue una entrada en su archivo de hosts.
fuente
Lo que debe verificar primero es la configuración de DNS de su servidor o cliente
No es raro que su servidor SQL tenga el problema de conectarse a Active Directory. Si intenta con una cuenta local de Windows, estoy seguro de que no tendrá el problema. No es inusual que el servidor esté configurado con DNS público de Internet y cuando SQL Server se conecta a DC para verificar las credenciales y verificarlo, intentará ponerse en contacto con el DNS público en lugar del servidor DNS del AD. Dado que esta información no se almacena en el DNS público, no se podrá verificar y esto causará la demora hasta que logre contactar al servidor DNS o DC adecuado a través del NTLM
Como no está experimentando el problema con otros servidores SQL, es casi seguro que el problema no está relacionado con las configuraciones de AD o DC
Disparar el IPConfig.exe / todos los comandos del cmd para comprobar los servidores DNS configurados. Solo debe tener configurados los servidores DNS de AD. Elimine todos los servidores DNS públicos y deje solo los servidores DNS de AD.
fuente
Extendí el
C:\Windows\System32\drivers\etc\hosts
archivo agregando una línea como esta:201.202.203.204
es la dirección IP de su servidor SQL.mysqlserver
- cualquier nombre que le guste (no tiene que usarlo en ningún lado).Esto hizo que mi servidor fuera más rápido.
Gracias a: d -_- b, Jordan, Rieger, felickz, RobbZ
fuente
Desactive el Firewall de Windows en su servidor SQL para el perfil de red de dominio.
Get-NetFirewallProfile -Profile Domain
para verificar su estado actualSet-NetFirewallProfile -Profile Domain -Enabled False
para apagarlo.Si fuera así, puede volver a encenderlo más tarde y ajustar su configuración. O, si se encuentra en un entorno seguro, puede dejarlo.
Lo extraño es que incluso si Firewall de Windows bloquea la comunicación, aún podrá conectarse, pero tanto el apretón de manos inicial como las solicitudes posteriores serán increíblemente lentas. Mi teoría (basada en ninguna evidencia real) es que en estos casos la comunicación recae en Canalizaciones con nombre, que es mucho más lenta entre las PC remotas.
fuente