Estoy tratando de configurar mi VM con SQL Server 2008 R2 Express para que solo pueda acceder de forma remota a SQL usando SQL Server Management Studio desde la máquina host.
Configuración de VM
- ejecutando Windows Web Servidor 2008 R2
- Hay dos NIC:
- Puente para que se conecte a internet.
- Host solo para que pueda comunicarme más rápido a través de la red virtual
- Los servicios del motor SQL y del navegador se están ejecutando
- He habilitado el protocolo TCP / IP para SQL Express pero no he configurado ninguna dirección IP (pestaña separada)
- He añadido reglas de firewall entrantes para:
- 1433 puerto TCP
- 1434 puerto UDP
- Si veo conexiones de red, veo que mis dos NIC están conectadas a las redes. Puedo configurar la red puenteada para Lugar de trabajo pero no puedo cambiar el tipo de red de la red de solo host. Así que está listo para Público por defecto. No estoy seguro de si esto tiene algo que ver con eso, pero así es como es.
Configuración de host
Lo único que hice en mi host es que le puse un nombre a mi VM IP. Y lo he hecho con la dirección IP de sólo host. He añadido una entrada en mi archivo HOSTS.
Problema
Luego abro SSMS en mi máquina host y si selecciono Buscar más en el Conectar al servidor ventana de diálogo realmente puedo ver la instancia de SQL de mi máquina virtual. Pero cuando intento conectarme a esto, esto es lo que obtengo cuando intento conectarme de las siguientes tres maneras:
nombre de la máquina (mi archivo HOSTS hará la reasignación de IP)
dirección IP de la red puenteada
dirección IP solo para el host
Pregunta 1: ¿Qué más puedo configurar para poder acceder a la instancia de SQL de mi VM? Si es posible, también me gustaría configurarlo, de modo que solo pueda acceder a él a través de la red de solo Hots y no a través de la red puente. Pero eso solo sería una ventaja adicional si pudiera configurarlo de esa manera.
Pregunta 2: ¿Realmente necesito el navegador SQL para ejecutarse porque, por lo que sé, solo se ocupa de que la instancia de SQL sea detectable? Si sé que la instancia de SQL es ahí y sé que usa el puerto 1433, ¿no puedo simplemente conectarme usando este Nombre del servidor :
DATAVM\SQLEXPRESS,1433
Editar
Este es el resultado de netstat:
Yo tambien corri portqry en el host para comprobar mi instancia de SQL en mi máquina virtual. Si intento la dirección IP puenteada, en realidad obtengo la respuesta del navegador SQL:
Starting portqry.exe -n 192.168.1.143 -e 1434 -p UDP ...
Querying target system called:
192.168.1.143
Attempting to resolve IP address to a name...
IP address resolved to Datavm
querying...
UDP port 1434 (ms-sql-m service): LISTENING or FILTERED
Sending SQL Server query to UDP port 1434...
Server's response:
ServerName DATAVM
InstanceName SQLEXPRESS
IsClustered No
Version 10.50.1600.1
tcp 49159
Como puedo ver en este resultado, mi instancia de SQL realmente está escuchando en el puerto TCP 49159.
Así que fui a la configuración SQL y cambié este puerto a 1433.
Pregunta 3: ¿Es normal que el puerto no esté configurado en 1433 por defecto? ¿Debo cambiarlo de nuevo a 49159 y cambiar la regla de mi firewall entrante para pasar por este puerto o debería dejarlo en 1433?
Cambiando de puerto a 1433 Puedo conectarme a la VM desde mi máquina host SSMS . Pero solo puedo hacer esto usando una dirección IP puenteada.
Como entiendo la configuración de TCP / IP en el protocolo de SQL el Direcciones IP debe enumerar todas las direcciones IP de la máquina. Puedo ver 5 de ellos:
- dirección NIC V6 puenteada
- dirección NIC V4 puenteada
- localhost V6 (:: 1)
- localhost V4 (127.0.0.1)
- algunos ? Dirección V6 que no está relacionada con la red con puente ni con la del host (fe80 :: 100: 7f: fffe% 12)
Supongo que esta es también la razón por la que no puedo conectarme utilizando una red solo de host ... ¿Pero cómo configuro mi VM para que pueda (y posiblemente deshabilite la red puente)?
fuente
netstat -a
y es posible que también desee configurar las direcciones IP (paso cuatro) para ver si eso mejora algo.Respuestas:
SQL Browser es necesario para las instancias con nombre si estoy recordando correctamente. Su instancia nombrada escucha en un puerto diferente (que usted descubrió) y el Explorador SQL revelará ese puerto. También puede configurar su instancia para escuchar en un puerto específico utilizando la configuración de red SQL.
He encontrado que la comunicación de red de host a vm también es un poco frustrante a veces.
¿Ha intentado apagar su firewall en la máquina virtual solo para probar? Eso suele ser el paso 1 en los problemas de conectividad de pin-point. 90% + de los problemas de conectividad son problemas de firewall.
fuente
Solución
A medida que profundizo en esto, parecía más y más que esto es más un problema de red que la configuración de SQL Server. Y fue.
He resuelto el problema de la red y puedes leer acerca de la solución en ServerFault . Esto le ayudará a configurar la red virtual de solo Host para que no esté tan bloqueada como Windows la configura de forma predeterminada.
Pero hay alguna otra cosa. Y esas son ** Direcciones IP que se pueden ver en el Protocolo TCP / IP en la configuración de la instancia de SQL Server.
El problema aquí es que esta lista de IP solo se rellena cuando instala su instancia de SQL Server. Si realiza cambios en sus adaptadores de red, dichos cambios no se reflejarán en la configuración de SQL Server. Esto es un problema conocido Desde 2006 y aún no se ha resuelto.
En mi caso, agregué una NIC adicional que es solo de host y debido a que mi instancia de SQL ya se ha instalado, esas direcciones IP no aparecen en la configuración. Pues resulta que puedes a mano agrega esas configuraciones nuevas o modificadas usando el editor de registro.
Navegar a:
Encontrará todas las direcciones IP que puede configurar allí. Como tuve que agregar dos direcciones más, exporté IP2 y luego edité el archivo * .reg guardado:
Guardó el archivo y lo importó en el editor de registro. Entonces puedo ver dos direcciones IP más en el editor de registro.
Abrí la configuración de SQL Server y sí, ahora tengo dos direcciones OP adicionales en la configuración de la instancia de SQL del protocolo TCP / IP que puedo configurar individualmente.
Eso es. Trabajos.
fuente