Utilice SQL Server Management Studio para conectarse de forma remota a una instancia de SQL Server Express alojada en una máquina virtual de Azure


Intento inicial

Tengo una VM Azure con Windows Server 2012, en la que acabo de instalar el componente SQL Server 2012 Express Database Engine. Luego, seguí las instrucciones aquí para conectarme de forma remota con SQL Server Management Studio.

  1. Crear un punto final TCP para la máquina virtual
  2. Abrir puertos TCP en el firewall de Windows
  3. Configurar SQL Server para escuchar en el protocolo TCP
  4. Configurar SQL Server para el modo mixto autenticación
  5. Crear inicios de sesión de autenticación de SQL Server
  6. Determinar el nombre DNS de la máquina virtual
  7. Conectarse al Motor de base de datos desde otro ordenador

Después del paso siete recibí el siguiente error:

Se produjo un error relacionado con la red o específico de la instancia mientras establecer una conexión con SQL Server. El servidor no fue encontrado o no era accesible. Compruebe que el nombre de la instancia es correcto y que SQL El servidor está configurado para permitir conexiones remotas. (proveedor: Named Proveedor de tuberías, error: 40-No se pudo abrir una conexión a SQL Server) (Servidor de Microsoft SQL, Error: 53)

¿Qué más debo configurar antes de conectarme de forma remota?

Solución de problemas

He estado siguiendo las instrucciones de solución de problemas aquí. Cada blockquote a continuación es un paso descrito que ese enlace.

Confirme la instancia del motor de base de datos SQL Server está instalado y corriendo.

Hecho. Instalamos SQL Server Express, y se está ejecutando como una instancia llamada SQLEXPRESS.

Si está intentando conectarse a una instancia con nombre, asegúrese de que El servicio SQL Server Browser se está ejecutando.

Hecho. Hemos seguido los pasos aquí para activar el servicio SQL Server Browser.

Obtenga la dirección IP de la computadora.

Hecho. Usaremos estos más adelante para probar conectividad y tal vez para configurar un puerto estático para SQLEXPRESS.

10.241.62.155

Fe80:: 45c:8c29:e19f: f78b%15

Obtenga el número de puerto TCP utilizado por SQL Server.

Hecho. Los registros del servidor SQL Server Management Studio mostraron que el servidor estaba escuchando en el puerto 49169.

Habilitar protocolos

Hecho. Ya habíamos habilitado TCP / IP en el configuration manager, pero reiniciamos el servicio SQL Server justo en caso.

Probando la conectividad TCP/IP

Hecho. Usamos tcping.exe para probar la conectividad (cmd ping no funciona rápidamente con Azure. Pudimos conectarnos al puerto 80.

  • tcping.exe buddha.cloudapp.net > éxito
  • tcping.exe buddha.cloudapp.net 80 > éxito

Probando una conexión Local

Hecho. Usamos sqlcmd.exe desde el símbolo del sistema y fueron capaces de conectarse localmente a través de TCP con un nombre de usuario y contraseña.

  • sqlcmd-S Buddha\SQLEXPRESS (éxito a través del protocolo de memoria compartida)
  • sqlcmd-S tcp: Buddha\SQLEXPRESS (éxito vía TCP)
  • sqlcmd-S tcp: Buddha\SQLEXPRESS-U sa-P (éxito a través de TCP con nombre de usuario)
  • sqlcmd-S tcp: 10.241.62.155\SQLEXPRESS-U sa-P (éxito con IP interna)

Abrir un puerto en el Firewall

Abrimos el puerto en el que SQLEXPRESS escucha. Los registros del servidor (arriba) mostraban que SQLEXPRESS estaba escuchando en el puerto 49169, pero este es solo uno de los muchos puertos dinámicos, y queríamos configurar el puerto estático 1435.

  • Use WF.msc para crear una regla TCP entrante para el puerto 1435.
  • Utilice Azure Management Portal para crear un punto final TCP para el puerto 1435.

Las instrucciones de solución de problemas también dicen:

Si se está conectando a una instancia con nombre o a un puerto que no sea TCP puerto 1433, también debe abrir el puerto UDP 1434 para el servidor SQL Servicio de navegador.

Dado que estamos conectando SQLEXPRESS (una instancia con nombre), necesitábamos abrir el puerto 1434 para UDP.

  • Use WF.msc para crear una regla inbound UCP para el puerto 1434.
  • Utilice Azure Management Portal para crear un UDP endpoint para el puerto 1434

La investigación adicional sobre la conexión a instancias nombradas reveló problemas de puertos dinámicos. La razón por la que estamos utilizando el puerto 1435 (estático) en lugar de puerto 49169 (una de las muchas opciones efectivas.)

Instancias de SQL Server Express, SQL Server Compact y Named las instancias del Motor de base de datos utilizan puertos dinámicos. Para configurar estos instancias para usar un puerto específico, consulte Configurar un servidor para escuchar Un Puerto TCP Específico (SQL Server Configuration Manager). y aquí.

Hecho. Fuimos a SQL Configuration Manager > SQL Server Network Configuration > Protocols for SQLEXPRESS > TCP / IP, hicimos lo siguiente.

Pestaña Protocolo > Escuchar todo > NO.

Pestaña de direcciones IP > para cada dirección listada

  • Habilitado > Sí
  • Puertos dinámicos TCP > En blanco (eliminar el cero)
  • Puerto TCP > 1435 (o su elección)

Después de reiniciar el servicio SQLEXPRESS, nuevamente buscamos en los registros de SQL Server Management Studio y encontramos que el Servidor está escuchando en el puerto 1435.!! ¡Hurra!

Probando la conexión

Hecho. Nos abierto SQL Server Management Studio en nuestro equipo local (no Azure)y conectado.

  • buddha.cloudapp.net, 1435 O buddha. cloudapp. net\SQLEXPRESS
  • sa
  • contraseña

Éxito.

Author: Shaun Luttin, 2013-04-11

3 answers

Aquí están las tres páginas web en las que encontramos la respuesta. La parte más difícil fue configurar puertos estáticos para SQLEXPRESS.

Aprovisionamiento de una máquina virtual de SQL Server en Windows Azure. Estas instrucciones iniciales proporcionaron el 25% de la respuesta.

Cómo solucionar problemas de conexión al Motor de base de datos de SQL Server. Leer esto cuidadosamente proporcionó otro 50% de la respuesta.

Cómo configurar SQL server para escuchar en diferentes puertos en diferentes direcciones IP?. Esto permitió configurar puertos estáticos para instancias con nombre (por ejemplo, SQLEXPRESS. Nos llevó el 25% final del camino a la respuesta.

 15
Author: Shaun Luttin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-11 23:25:18

El hecho de que esté recibiendo un error del Proveedor de Tuberías de nombres nos dice que no está utilizando el protocolo TCP/IP cuando está tratando de establecer la conexión. Intente agregar el prefijo " tcp " y especificar el número de puerto:

tcp:name.cloudapp.net,1433
 14
Author: Paul Keister,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-11 19:22:36

Yo también luché con algo similar. Mi suposición es que su problema real es conectarse a una instancia de SQL Express que se ejecuta en una máquina diferente. Los pasos para hacer esto se pueden resumir de la siguiente manera:

  1. Asegúrese de que SQL Express esté configurado para la autenticación SQL, así como para la autenticación de Windows (el valor predeterminado). Esto se hace a través de SQL Server Management Studio (SSMS) Server Properties/Security
  2. En SSMS crear un nuevo inicio de sesión llamado "sqlUser", por ejemplo, con una contraseña adecuada, " sql", decir. Asegúrese de que este nuevo inicio de sesión esté configurado para la autenticación SQL, no para la autenticación de Windows. SSMS Server Security / Logins / Properties / General. También asegúrese de que" Aplicar la política de contraseñas " esté desactivada
  3. En Propiedades/Roles de servidor asegúrese de que este nuevo usuario tenga el rol "sysadmin"
  4. En SQL Server Configuration Manager SSCM (buscar SQLServerManagerxx.msc en Windows \ SysWOW64 si no puede encontrar SSCM) en SQL Server Network Configuration/Protocols for SQLExpress asegúrese de que TCP / IP esté habilitado. Puede deshabilitar Canalizaciones con nombre si desea
  5. Haga clic con el botón derecho en protocolo TCP / IP y en la pestaña Direcciones IP, asegúrese de que cada una de las direcciones IP esté configurada en Habilitado Sí, y el puerto TCP 1433 (este es el puerto predeterminado para SQL Server)
  6. En el Firewall de Windows (WF.msc) cree dos nuevas reglas de entrada: una para SQL Server y otra para SQL Browser Service. Para SQL Server necesita abrir el puerto TCP 1433 (si está utilizando el puerto predeterminado para SQL Server) y muy importante para el navegador SQL Servicio necesita abrir el puerto UDP 1434. Nombre estas dos reglas adecuadamente en su firewall
  7. Detenga y reinicie el servicio SQL Server usando SSCM o los Servicios.complemento msc
  8. En los Servicios.complemento msc asegúrese de que el tipo de inicio del servicio SQL Browser sea Automático y luego inicie este servicio

En este punto debería ser capaz de conectarse remotamente, usando Autenticación SQL, contraseña de usuario "sqlUser" "sql" a la instancia de SQL Express configurada como arriba. Un consejo final y una manera fácil de comprobar esto es crear un archivo de texto vacío con el .Extensión UDL, diga " Test.UDL " en tu escritorio. Al hacer doble clic para editar este archivo, se invoca el cuadro de diálogo de propiedades de Microsoft Data Link con el que puede probar rápidamente su conexión SQL remota

 2
Author: JohnB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-21 07:39:26