Use o SQL Server Management Studio para se conectar remotamente a uma instância do SQL Server Express hospedada em uma máquina virtual do Azure

Tentativa Inicial

Eu tenho uma VM do Azure com o Windows Server 2012, no qual acabei de instalar o componente Mecanismo de Banco de Dados do SQL Server 2012 Express. Então, eu segui as instruçõesAqui para se conectar remotamente com o SQL Server Management Studio.

Crie um terminal TCP para a máquina virtualPortas TCP abertas no firewall do WindowsConfigurar o SQL Server para escutar no protocolo TCPConfigurar o SQL Server para autenticação de modo mistoCriar logons de autenticação do SQL ServerDeterminar o nome DNS da máquina virtualConecte-se ao Mecanismo de Banco de Dados de outro computador

Após o passo sete, recebi o seguinte erro:

Ocorreu um erro relacionado à rede ou a uma instância específica ao estabelecer uma conexão com o SQL Server. O servidor não foi encontrado ou não estava acessível. Verifique se o nome da instância está correto e se o SQL Server está configurado para permitir conexões remotas. (provedor: provedor de pipes nomeados, erro: 40 - não foi possível abrir uma conexão ao SQL Server) (Microsoft SQL Server, erro: 53)

O que mais eu preciso configurar antes de me conectar remotamente?

Solução de problemas

Eu tenho seguido as instruções de solução de problemasAqui. Cada blockquote abaixo é uma etapa descrita nesse link.

Confirme se a instância do Mecanismo de Banco de Dados do SQL Server está instalada e em execução.

Feito. Instalamos o SQL Server Express e ele está sendo executado como uma instância nomeada chamada SQLEXPRESS.

Se você estiver tentando se conectar a uma instância nomeada, verifique se o serviço Navegador do SQL Server está em execução.

Feito. Nós seguimos os passosAqui para ativar o serviço Navegador do SQL Server.

Obtenha o endereço IP do computador.

Feito. Nós os usaremos mais tarde para testar a conectividade e talvez para configurar uma porta estática para o SQLEXPRESS.

10.241.62.155

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

Obtenha o número da porta TCP usada pelo SQL Server.

Feito. oSQL Server Management Studio os logs do servidor mostraram que o servidor estava escutando na porta 49169.

Ativar protocolos

Feito. Já havíamos ativado o TCP / IP no gerenciador de configuração, mas reiniciamos o serviço do SQL Server apenas por precaução.

Testando a conectividade TCP / IP

Feito. Nós costumavamostcping.exe para testar a conectividade (o ping cmd não funciona rapidamente com o Azure). Conseguimos conectar-nos à porta 80.

tcping.exe buddha.cloudapp.net> bem-sucedidotcping.exe buddha.cloudapp.net 80> bem sucedido

Testando uma conexão local

Feito. Nós costumavamossqlcmd.exe a partir do prompt de comando e foram capazes de se conectar localmente via TCP com um nome de usuário e senha.

sqlcmd -S Buddha \ SQLEXPRESS (sucesso via protocolo de memória compartilhada)sqlcmd -S tcp: Buddha \ SQLEXPRESS (sucesso via TCP)sqlcmd -S tcp: Buddha \ SQLEXPRESS -U sa -P (sucesso via TCP com nome de usuário)sqlcmd -S tcp: 10.241.62.155 \ SQLEXPRESS -U sa -P (sucesso com IP interno)

Abrindo uma porta no firewall

Abrimos o porto em que o SQLEXPRESS escuta. Os logs do servidor (acima) mostraram que o SQLEXPRESS estava escutando na porta 49169, mas esta é apenas uma das muitas portas dinâmicas, e nós queríamos configurar a porta estática 1435.

Use WF.msc para criar uma regra TCP de entrada para a porta 1435.Use o Portal de Gerenciamento do Azure para criar um ponto de extremidade TCP para a porta 1435.

As instruções de resolução de problemas também dizem:

Se você estiver se conectando ainstância nomeada ou uma porta diferente da porta TCP 1433, você também deve abrir oPorta UDP 1434 para o serviço Navegador do SQL Server.

Como estamos conectando o SQLEXPRESS (uma instância nomeada), precisamos abrir a porta 1434 para o UDP.

Use WF.msc para criar uma entradaUCP regra para a porta 1434.Use o Portal de Gerenciamento do Azure para criar umUDP ponto final para a porta 1434

Mais pesquisas sobre a conexão com instâncias nomeadas revelaram problemas de portas dinâmicas. A razão pela qual estamos usando a porta 1435 (estática) em vez da porta 49169 (uma das muitas opções efetivas).

Instâncias do SQL Server Express, SQL Server Compact e instâncias nomeadas do Mecanismo de Banco de Dados usam portas dinâmicas. Para configurar essas instâncias para usar uma porta específica, consulteConfigurar um servidor para escutar em uma porta TCP específica (SQL Server Configuration Manager). eAqui.

Feito. Fomos para o SQL Configuration Manager> Configuração de Rede do SQL Server> Protocolos para SQLEXPRESS> TCP / IP, fizemos o seguinte.

Guia de protocolo> Ouvir todos> NÃO.

Guia Endereços IP> para cada endereço listado

Ativado> SimPortas TCP dinâmicas> Em branco (exclua o zero)Porta TCP> 1435 (ou sua escolha)

Depois de reiniciar o serviço SQLEXPRESS, procuramos novamente nos logs do SQL Server Management Studio e descobrimos que o servidor está escutando na porta 1435 !!! Viva!

Testando a conexão

Feito. Abrimos o SQL Server Management Studio em nosso computador local (não-Azure) e conectado.

buddha.cloudapp.net, 1435 ou buddha.cloudapp.net \ SQLEXPRESSsasenha

Sucesso.

questionAnswers(3)

yourAnswerToTheQuestion