Configurando a VM com o SQL Express para ser acessado usando o SSMS do host

1

Estou tentando configurar minha VM com o SQL Server 2008 R2 Express para que eu possa acessar remotamente o SQL usando o SQL Server Management Studio a partir da máquina host.

Configuração da VM

  1. executando o Windows Web Server 2008 R2
  2. Existem duas NICs:
    • Conectado para se conectar à Internet
    • Somente host, para que eu possa me comunicar mais rapidamente pela rede virtual
  3. Os serviços do SQL Engine e do navegador estão em execução
  4. Eu ativei o protocolo TCP / IP para o SQL Express, mas não configurei nenhum endereço IP (guia separada)
  5. Adicionei regras de firewall recebidas para:
    • 1433 porta TCP
    • 1434 porta UDP
  6. Se eu examinar as conexões de rede, vejo minhas NICs conectadas a redes. Posso configurar a rede de ponte para o Workplace , mas não consigo alterar o tipo de rede da rede somente de host. Então, é definido como Público por padrão. Não tenho certeza se isso tem alguma coisa a ver com isso, mas é assim.

Configuração do HOST

A única coisa que fiz no meu host é que coloquei um nome no IP da minha VM. E eu fiz isso com o endereço IP somente para host. Eu adicionei uma entrada no meu arquivo HOSTS.

Problema

Em seguida, abro o SSMS na máquina host e, se eu selecionar Procurar por mais na janela de diálogo Conectar ao Servidor , posso ver a instância SQL da VM. Mas quando tento me conectar a ele, isso é o que eu recebo quando tento me conectar das três maneiras a seguir:

  • nome da máquina (meu arquivo HOSTS fará o remapeamento de IP)

  • endereçoIPderedeemponte

  • endereço IP somente para host

Pergunta1:OquemaispossoconfigurarparapoderacessarainstânciaSQLdaminhamáquinavirtual?Sepossível,eutambémgostariadeconfigurá-lo,paraqueeupossaacessá-losomenteviaredeHotsenãoatravésdaponte.Masissoseriaapenasumbônusseeupudesseconfigurá-lodessamaneira.

Pergunta2:PrecisorealmentequeoSQLBrowsersejaexecutado,porque,atéondeeusei,sócuidadainstânciaSQLquepodeserdescoberta.SeeuseiqueainstânciadoSQLéeeuseiqueeleusaaporta1433,nãoconsigosimplesmenteconectarusandoesteNomedoservidor:

DATAVM\SQLEXPRESS,1433

Editar

Esteéoresultadodonetstat:

Também corri portqry no host para verificar minha instância do SQL na minha VM. Se eu tentar um endereço IP em ponte, eu realmente obtenho a resposta do SQL Browser:

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 eu posso ver neste resultado, minha instância do SQL está realmente escutando na porta TCP 49159.

Então eu fui na configuração do SQL e mudei essa porta para 1433.

Pergunta 3: É normal que a porta não esteja configurada como 1433 por padrão? Devo alterá-lo de volta para 49159 e alterar minha regra de firewall de entrada para passar por essa porta ou shuld agora deixo em 1433?

Ao alterar a porta para 1433 , posso conectar-me à VM a partir do meu SSMS da máquina host . Mas eu só posso fazer isso usando um endereço IP em ponte.

Pelo que entendi as configurações TCP / IP no protocolo SQL, os Endereços IP devem listar todos os endereços IP da máquina. Eu posso ver 5 deles:

  1. endereço V6 da NIC em ponte
  2. endereço NIC V4 com ponte
  3. localhost V6 (:: 1)
  4. localhost V4 (127.0.0.1)
  5. alguns? Endereço V6 que não está relacionado à rede em ponte nem somente host (fe80 :: 100: 7f: fffe% 12)

Suponho que esta seja também a razão pela qual não consigo me conectar usando uma rede somente host ... Mas como eu configuro minha VM para que eu possa (e possivelmente desabilitar a ponte)?

    
por Robert Koritnik 11.02.2012 / 18:04

2 respostas

0

Solução

Conforme eu me aprofundo nisso, parece cada vez mais que isso é mais um problema de rede do que a configuração do SQL Server. E foi.

Eu resolvi o problema de rede e você pode ler sobre a solução em ServerFault . Isso ajudará você a configurar a rede virtual somente para hosts, para que ela não fique tão bloqueada quanto o Windows a definir por padrão.

Mas há outra coisa. E isso são ** Endereços IP que podem ser vistos no Protocolo TCP / IP na configuração da instância do SQL Server.

O problema aqui é que essa lista de IPs só é preenchida quando você instala sua instância do SQL Server. Se você fizer alguma alteração em seus adaptadores de rede, essas alterações não serão refletidas na configuração do SQL Server. Este é um problema conhecido desde 2006 e ainda não resolvido.

No meu caso, adicionei uma NIC adicional que é somente host e, como minha Instância do SQL já foi instalada, esses Endereços IP não aparecem na configuração. Como se constata, você pode manualmente adicionar as configurações novas ou alteradas usando o editor de registro.

Navegue para:

HKEY_LOCAL_MACHINE
  SOFTWARE
    Microsoft
      Microsoft SQL Server
        MSSQL10_50.[InstanceName]
          MSSQLServer
            SuperSocketNetLib
              Tcp

Você encontrará todos os endereços IP que você pode configurar lá. Desde que eu tive que adicionar mais dois endereços eu exportei o IP2 e então editei o arquivo * .reg salvo:

  1. Alterou a primeira linha e alterou o IP2 para IP n (onde n é o máximo atual + 1)
  2. Endereço IP alterado e endereço IP v6 adicionado da rede somente host
  3. Copiou e colou todas essas linhas
  4. IP incrementado n por 1
  5. Endereço IP alterado e endereço IP v4 adicionado da rede somente host

Salva o arquivo e o importa para o editor de registro. Posso ver mais dois endereços IP no editor de registro.

Abrai a configuração do SQL Server e agora tenho mais dois endereços OP na configuração da instância SQL do protocolo TCP / IP que posso configurar individualmente.

É isso. Obras.

    
por 13.02.2012 / 10:38
0

O SQL Browser é necessário para instâncias nomeadas se eu estiver me lembrando corretamente. Sua instância nomeada escuta em uma porta diferente (que você descobriu) e o SQL Browser revelará essa porta. Você também pode configurar sua instância para ouvir em uma porta específica usando a configuração de rede do SQL.

Eu achei a comunicação de rede host-para-vm um pouco frustrante às vezes também.

Já tentou desligar o seu firewall na VM apenas para testar? Isso geralmente é o primeiro passo para apontar problemas de conectividade. Mais de 90% dos problemas de conectividade são problemas de firewall.

    
por 12.02.2012 / 20:27