Usar o SQL Server Management Studio para se ligar remotamente a uma instância expressa de servidor SQL hospedada numa máquina virtual Azure

Tentativa Inicial

tenho um VM Azure com o Windows Server 2012, no qual acabei de instalar o componente de motor de banco de Dados SQL Server 2012 Express. Em seguida, eu segui as instruções aqui para conectar remotamente com SQL Server Management Studio.

  1. criar um endpoint TCP para a máquina virtual
  2. abrir portas TCP na firewall do Windows
  3. configurar o servidor SQL para ouvir o protocolo TCP
  4. configurar o servidor SQL para o misto autenticação do modo
  5. criar logins de autenticação do servidor SQL
  6. Determine o nome do DNS da máquina virtual
  7. Liga-te ao motor da Base de dados de outro computador.

Depois do passo sete recebi o seguinte erro:

ocorreu um erro relacionado com a rede ou específico de uma instância enquanto a estabelecer uma ligação ao servidor SQL. O servidor não foi encontrado ou não era acessível. Verificar se o nome da instância está correto e que O servidor SQL está configurado para permitir ligações remotas. (fornecedor: Nome Fornecedor de tubos, erro: 40-não foi possível abrir uma ligação ao servidor SQL) (Microsoft SQL Server, Error: 53)

que mais preciso de configurar antes de me ligar remotamente?

Resolução de problemas

tenho seguido as instruções de resolução de problemas aqui. Cada bloco abaixo é um passo descrito que essa ligação.

Confirme a instância da Base de dados do servidor SQL O motor está instalado e a correr.

Feito. Instalámos o SQL Server Express, e está a correr como uma instância chamada SQLEXPRESS.

Se está a tentar ligar-se a uma instância com nome, certifique-se que a O serviço de navegação do servidor SQL está em execução.

Feito. Seguimos os passos aqui para ligar o serviço de navegação do servidor SQL.

Arranja o endereço IP do computador.

Feito. Vamos usá-los mais tarde para testar conectividade e talvez para configurar uma porta estática para SQLEXPRESS.

10.241.62.155

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

obter o número de porta TCP usado pelo servidor SQL.

Feito. Os registos do servidor SQL ([68]) mostraram que o servidor estava a ouvir no Porto 49169.

Activar Os Protocolos

Feito. Já tínhamos activado o TCP / IP no Gestor de configuração, mas reiniciámos o serviço de servidor SQL apenas em caso.

testar a conectividade TCP / IP

Feito. Nós usamos a gravação.exe para testar a conectividade (cmd ping não funciona rapidamente com Azure.) Nós fomos capazes de conectar à porta 80.

  • RCP.exe buddha.cloudapp.net > bem sucedido
  • RCP.exe buddha.cloudapp.net 80 > bem sucedido

testar uma ligação Local

Feito. Usámos sqlcmd.exe a partir da linha de comandos e foram capazes de se ligar localmente via TCP com um nome de utilizador e senha.

  • sqlcmd-S Buddha\SQLEXPRESS (sucesso através do protocolo de memória partilhada)
  • sqlcmd-S tcp:Buddha\SQLEXPRESS (sucesso via TCP)
  • sqlcmd - S tcp: Buddha\SQLEXPRESS-U sa-P (sucesso através do TCP com nome de utilizador) {[[10]}
  • sqlcmd - S tcp: 10. 241. 62. 155\SQLEXPRESS-U sa-P (sucesso com IP interno)

Abrir Uma porta na Firewall

Abrimos a porta onde o SQLEXPRESS ouve. Servidor (acima) mostrou que o SQLEXPRESS estava ouvindo no Porto 49169, mas este é apenas um dos muitos portos dinâmicos, e queríamos configurar o porto estático 1435.

  • utilize WF.msc para criar uma regra TCP para a porta 1435.
  • utilize o portal de gestão Azure para criar um ponto final TCP para a porta 1435.

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

Se estiver a ligar-se a uma instância com nome ou a um porto diferente do TCP Porto 1433, você também deve abrir o porta UDP 1434 para o servidor SQL Serviço de navegação.

Uma vez que estamos a ligar o SQLEXPRESS (uma instância com nome), precisávamos de abrir a porta 1434 para o UDP.

  • utilize WF.msc to create an inbound UCP rule for port 1434.
  • utilizar o portal de gestão Azure para criar um parâmetro de avaliação UDP para o porto 1434

mais investigação sobre a ligação a instâncias nomeadas revelou problemas portuários dinâmicos. A razão pela qual estamos a usar o porto 1435 (static) instead of port 49169 (one of many effective options.)

instâncias do SQL Server Express, do SQL Server Compact, e nome instâncias do motor de banco de dados usam portas dinâmicas. Para configurar estes instâncias para usar um porto específico, veja configurar um servidor para ouvir uma porta tcp específica (SQL Server Configuration Manager). e Aqui.

Feito. Fomos ao SQL Configuration Manager > SQL Server Network Configuration > protocolos para SQLEXPRESS > TCP / IP, fizemos o seguinte.

Página do Protocolo > ouvir tudo > não.

Página de endereços IP > para cada endereço listado

  • Activo > Sim
  • portas dinâmicas TCP > em branco (apagar o zero)
  • porta TCP > 1435 (ou a sua escolha)

Depois de reiniciar o serviço SQLEXPRESS, voltámos a ver os registos do Estúdio de gestão do servidor SQL, e descobrimos que o servidor está a ouvir na porta 1435!!! Viva!

testar a Ligação

Feito. Nós abrimos SQL Server Management Studio em nosso computador local (não-Azure) e conectado.

  • buddha.cloudapp.net, 1435 ou Buda.cloudapp. net\SQLEXPRESS
  • sa
  • senha
Sucesso.

Author: Shaun Luttin, 2013-04-11

3 answers

Aqui estão as três páginas web nas quais encontramos a resposta. A parte mais difícil foi configurar portas estáticas para o SQLEXPRESS.

Provisionamento de uma máquina Virtual do servidor SQL no Windows Azure . Estas instruções iniciais forneceram 25% da resposta.

Como resolver a situação ligando-se ao motor de banco de dados do servidor SQL. Ler isto cuidadosamente forneceu mais 50% da resposta.

Como configurar o servidor SQL para ouvir em diferentes portos endereços IP diferentes?. Esta opção activou a configuração de portas estáticas para instâncias nomeadas (eg SQLEXPRESS.) Levou-nos os últimos 25% do caminho para a resposta.

 15
Author: Shaun Luttin, 2013-04-11 23:25:18
O facto de estar a receber um erro do Fornecedor de tubos de nomes diz-nos que não está a usar o protocolo TCP/IP quando está a tentar estabelecer a ligação. Tente adicionar o prefixo " tcp " e indicar o número do porto:
tcp:name.cloudapp.net,1433
 14
Author: Paul Keister, 2013-04-11 19:22:36
Eu também lutei com algo parecido. Meu palpite é que o seu problema real é conectar-se a uma instância SQL Express rodando em uma máquina diferente. Os passos para fazer isso podem ser resumidos da seguinte forma:
  1. Certifique-se que o SQL Express está configurado para a autenticação SQL, bem como para a autenticação do Windows (por omissão). Faz isto através do SQL Server Management Studio (SSMS) Server Properties/Security
  2. no SSMS criar um novo login chamado "sqlUser", por exemplo, com uma senha adequada, "sql", por exemplo. Certifique-se de que este novo login está definido para a autenticação SQL, não para a autenticação do Windows. Segurança do servidor SSMS / Logins/propriedades / General. Assegurar também que a" Política de Aplicação de senha " está desligada
  3. em Propriedades/funções de servidor, garanta que este novo utilizador tem o papel de" sysadmin "
  4. no SQL Server Configuration Manager SSCM (procurar pelo SQLServerManagerxx.ficheiro msc no Windows\SysWOW64 se não conseguir encontrar o SSCM) na configuração/protocolos da rede do servidor SQL para o SQLExpress certifique-se que o TCP/IP é habilitado. Você pode desativar tubos com nomes se quiser
  5. Botão direito do protocolo TCP / IP e na página IPAddresses, certifique-se de que cada um dos endereços IP está configurado como activo Yes, e Porto TCP 1433 (este é o porto por omissão para o servidor SQL)
  6. no Firewall do Windows (WF.msc) criar duas novas regras de entrada-uma para o servidor SQL e outra para o serviço de navegação SQL. Para o servidor SQL você precisa abrir o Porto TCP 1433 (se você estiver usando o porto padrão para o servidor SQL) e muito importante para o SQL Serviço de navegação precisa de abrir a porta UDP 1434 . Indique estas duas regras adequadamente na sua firewall
  7. Parar e reiniciar o serviço de servidor SQL usando o SSCM ou os Serviços.msc snap-in
  8. nos Serviços.msc snap-in certifique-se de que o tipo de arranque do serviço de navegação SQL é automático e depois inicie este serviço

Neste ponto, deverá ser capaz de se ligar remotamente, usando a autenticação SQL, a senha do utilizador "sqlUser" SQL "à instância SQL Express configurada como acima. A dica final e maneira fácil de verificar isso é criar um arquivo de texto vazio com o .Extensão UDL, diga " teste.UDL " no seu ambiente de trabalho. Se fizer duplo-click para editar este ficheiro, invoca a janela de Propriedades da ligação de dados da Microsoft com a qual poderá testar rapidamente a sua ligação SQL remota

 2
Author: JohnB, 2017-07-21 07:39:26