none
Problema ao configurar SQL SERVER para acesso remoto. RRS feed

  • Pergunta

  • Estou usando o SQL SERVER 2005 Express.

    O meu problema é o seguinte, estou tentando configurar o SQL SERVER no servidor de banco de dados de uma empresa para acesso remoto...

    Antes de continuar, eu devo dizer que ja montei 2 servidores podendo serem acessados remotamente (via web), ou seja, acho que sei como configurar isso.

    Porém estou tendo problemas com o servidor de uma determinada empresa...

    Eu configurei e consigo acessar o banco de qualquer pc da rede local, atravéz do NOME_DO_SERVIDOR\NOME_DA_INSTANCIA
    + o login e + a senha

    Mas não estou conseguindo acessar esse servidor de fora da rede local, ou seja, pela web... O IP é fixo, mas mesmo assim não esta dando.

    ---

    O grande problema é que eu não tenho total controle sobre o servidor (como eu tive das outras duas vezes que montei 1)...
    Nesse servidor eu só posso instalar e configurar  o SQL SERVER...

    Não tenho acesso a liberações de porta, ou a configuração de IP fixo. Essa função é dada a uma empresa terceira que cuida da rede da empresa.

    O foda é que como sou novato, não sei se são eles que estão errando, ou sou eu que num consigo configurar o server.

    Eu queria uma ajuda de vcs, para que eu possa realizar testes e etc.. para tentar sacar oq deve estar acontecendo para que o servidor não esteja sendo acessado via web.

    ---

    Por favor IDEIAS!!!! To desesperado aqui, vlw aew PEssoal, pessoal desse fórum é realmente 10.
    • Movido Roberson Ferreira _ sexta-feira, 14 de setembro de 2012 14:51 (De:SQL Server - Desenvolvimento Geral)
    terça-feira, 25 de março de 2008 14:59

Respostas

  • Boa Tarde,

     

    Se você vai se conectar a uma instância nomeada, você pode fazê-lo de seguinte forma:

     

    IP,porta. EX: 192.168.0.1,1433

     

    Para utilizar nomes ao invés de IPs e portas (EX: Servidor\SQLExpress) você deverá fazer duas coisas.

     

    A rede externa não faz resolução de nomes já que o DNS não será o mesmo, então você deve colocar uma entrada no arquivo HOSTs das máquinas que irão acessar o servidor. Se desejar chamar a instância nomeada (ex: SQLExpress), você precisará liberar também no firewall a porta UDP 1434 e iniciar o serviço SQL Browser.

     

    Então resumindo você tem os seguintes passos

     

    - Liberar a porta usada pelo SQL Server no Firewall (Obrigatório)

    - Cadastrar a entrada no HOSTs para pode chamar o nome do servidor ao invés do IP (Opcional)

    - Abrir a porta UDP 1434 para poder chamar a instância nomeada ao invés de especificar a porta

     

    Você poderá verificar a porta utilizada pelo SQL Server Express através do SQL Configuration Manager na parte de protocolos. Como na rede local o acesso já é feito a configuração de conexão remotas já deve estar habilitada.

     

    [ ]s,

     

    Gustavo

     

    terça-feira, 25 de março de 2008 16:02
  • Boa Tarde,

     

    O Telnet é um comando para testar o acesso a uma porta específica.

     

    - Abra um prompt de comando na máquina remota (não é no servidor SQL) e digite

     

    telnet ip do servidor porta. Ex: telnet 192.168.0.4 1433

     

    A grosso modo a única porta a ser liberada é a utilizada pelo SQL Server. Essa porta costuma ser a 1433, mas como você está usando uma instância nomeada, certamente não é a 1433. Para verificar a porta que deve ser aberta, vá no SQL Server Configuration Manager e verifique na parte de protocolos TCP/IP qual é a porta utilizada. Posteriormente faça o teste do telnet.

     

    Não abra mais portas do que o necessário. Após o funcionamento feche todas essas portas. Nenhuma das portas que você citou é necessária para resolver o problema. No caso de chamar a instância pelo nome, libere adicionalmente a UDP 1434 (essa não é TCP)

     

    [ ]s,

     

    Gustavo

    terça-feira, 25 de março de 2008 16:13
  • Olá,

     

    Partindo do ponto de que você só está com a porta do SQL Server aberta, tente o seguinte:

     

    Data Source=IP,porta;Initial Catalog=NomedoBancodeDados;Uid=sa;Pwd=<SENHA>

    [ ]s,

     

    Gustavo

    terça-feira, 25 de março de 2008 16:32

Todas as Respostas

  • se interno conecta a grandes chances de ser problemas de filtro de portas mesmo, tente fazer um tellnet na porta 1433 do ip fixo do seu server , se ele responder nao e porta mais acho que vc. nao vai conseguir acesso nao.

     

    qq coisa retorne

     

    Abs/

     

    terça-feira, 25 de março de 2008 15:56
  • Boa Tarde,

     

    Se você vai se conectar a uma instância nomeada, você pode fazê-lo de seguinte forma:

     

    IP,porta. EX: 192.168.0.1,1433

     

    Para utilizar nomes ao invés de IPs e portas (EX: Servidor\SQLExpress) você deverá fazer duas coisas.

     

    A rede externa não faz resolução de nomes já que o DNS não será o mesmo, então você deve colocar uma entrada no arquivo HOSTs das máquinas que irão acessar o servidor. Se desejar chamar a instância nomeada (ex: SQLExpress), você precisará liberar também no firewall a porta UDP 1434 e iniciar o serviço SQL Browser.

     

    Então resumindo você tem os seguintes passos

     

    - Liberar a porta usada pelo SQL Server no Firewall (Obrigatório)

    - Cadastrar a entrada no HOSTs para pode chamar o nome do servidor ao invés do IP (Opcional)

    - Abrir a porta UDP 1434 para poder chamar a instância nomeada ao invés de especificar a porta

     

    Você poderá verificar a porta utilizada pelo SQL Server Express através do SQL Configuration Manager na parte de protocolos. Como na rede local o acesso já é feito a configuração de conexão remotas já deve estar habilitada.

     

    [ ]s,

     

    Gustavo

     

    terça-feira, 25 de março de 2008 16:02
  • desculpe a santa ignorancia mas não entendi essa parte :

    "tente fazer um tellnet na porta 1433 do ip fixo do seu server"

    oq seria tellnet? do meu server no caso do MEU ou daonde estou tentando instalar o SQL?

    Estou achando que é porta mesmo, mas eu ligo para empresa terceirizada e eles ja liberaram todas as portas que pedi.

    no casao 1433, 1434, 80, 8080, 1028 (essa ultima eu num sei o porque de liberar =D mas eu sempre libero por via das duvidas)
    terça-feira, 25 de março de 2008 16:03
  • Boa Tarde,

     

    O Telnet é um comando para testar o acesso a uma porta específica.

     

    - Abra um prompt de comando na máquina remota (não é no servidor SQL) e digite

     

    telnet ip do servidor porta. Ex: telnet 192.168.0.4 1433

     

    A grosso modo a única porta a ser liberada é a utilizada pelo SQL Server. Essa porta costuma ser a 1433, mas como você está usando uma instância nomeada, certamente não é a 1433. Para verificar a porta que deve ser aberta, vá no SQL Server Configuration Manager e verifique na parte de protocolos TCP/IP qual é a porta utilizada. Posteriormente faça o teste do telnet.

     

    Não abra mais portas do que o necessário. Após o funcionamento feche todas essas portas. Nenhuma das portas que você citou é necessária para resolver o problema. No caso de chamar a instância pelo nome, libere adicionalmente a UDP 1434 (essa não é TCP)

     

    [ ]s,

     

    Gustavo

    terça-feira, 25 de março de 2008 16:13
  • 192.168.0.1,1433

    Essa é a resposta, eu estava tentando conectar fazendo
    192.168.0.1\Nome_Instancia
    terça-feira, 25 de março de 2008 16:16
  • Olá R3N4N,

     

    Sua conexão não está errada. É possível conectar-se da forma que você especificou, mas toda vez que usamos nomes ao invés de números, "alguém" tem de resolvê-los, ou seja, converter esses nomes para números.

     

    Quando você coloca 192.168.0.1\Nome_Instancia você está passando um IP e nesse caso o nome do servidor não precisará ser resolvido. No caso do "Nome_Instancia" é preciso que "alguém" identifique que porta é utilizada pelo processo "Nome_Instancia". Isso ficará a cargo do serviço SQL Browser. Para que ele seja acessado, você precisará abrir a porta UDP 1434.

     

    Quando você especifica IP,porta você só está trabalhando com números e nesse caso nenhuma resolução tem de ser feita e nenhuma porta adicional tem de ser aberta. Do ponto de vista de segurança, conectar-se dessa forma é melhor.

     

    No entanto, se posteriormente você deparar-se com uma conexão colocando apenas o IP e a porta, você pode não saber que servidor se trata e de que instância é a referida porta (no caso de um servidor ter mais de uma instância). Por essa situações pode ser interessante preencher a entrada no hosts e abrir a porta UDP 1434. Assim fica mais flexível embora um pouco menos seguro.

     

    Você deve usar a forma que melhor lhe convier. O importante é sempre não abrir mais portas do que as necessárias (a 1028 é desnecessária a menos que o SQL Server esteja escutando nessa porta).

     

    [ ]s,

     

    Gustavo

    terça-feira, 25 de março de 2008 16:28
  • Blz,  consegui, mas estou com outra dúvida agora...

    Como que eu faria a string de conecção acessar isso?

    Tipo, com o nome da instancia é fácil, pois é so fazer:

    Data Source=<IP_SERVIDOR>;Initial Catalog=<NOME_INSTANCIA>;Uid=sa;Pwd=<SENHA>

    com porta nem faço idéia.
    terça-feira, 25 de março de 2008 16:29
  • Olá,

     

    Partindo do ponto de que você só está com a porta do SQL Server aberta, tente o seguinte:

     

    Data Source=IP,porta;Initial Catalog=NomedoBancodeDados;Uid=sa;Pwd=<SENHA>

    [ ]s,

     

    Gustavo

    terça-feira, 25 de março de 2008 16:32
  • Pra quem utiliza delphi com SQL SERVER, esta é a dica de ouro, não utilizar a instância nomeada no acesso remoto. 

    Muito boa Gustavo. 

    Att

    Gilberto Neves 
    Analista de Sistemas 

    www.mistersoftware.com.br

    sexta-feira, 14 de setembro de 2012 12:02