Como faço para essa conexão ODBC do SQL Server funcionar?

29

Nota: Eu obviamente mudei os nomes dos servidores e IPs para os fictícios.

Aqui está o que está acontecendo. Eu tenho um servidor, que estou chamando MYSERVER , executando o Microsoft SQL Server Express 2005. Neste servidor, eu tenho uma conexão ODBC apontando para si mesma, e isso já funciona perfeitamente. Efetuo login usando a Autenticação do SQL Server (não a autenticação do Windows) e é configurada assim:

Comoeudisse,essefunciona.Masdepois,eutenhooutrocomputadorqueestáemumdomíniototalmentediferente/nãonaintranet,queprecisaacessaressemesmoSQLServerhospedadonoMYSERVER.Porestaremumdomíniodiferente,nãoreconheceonome"MYSERVER"; Eu tenho que apontar para o endereço IP do MYSERVER, que vamos dizer é 123.456.789.012. Mas a conexão ODBC parece não funcionar lá. Eu tentei configurá-lo assim:

Issonãofunciona.QuandocolocoonomedeusuárioeasenhaepressionoPróximo,eleficaparadoporunsbons10a20segundose,finalmente,retornacomoseguinteerro:

Connectionfailed:SQLState:'01000'SQLServerError:1326[Microsoft][ODBCSQLServerDriver][DBNETLIB]ConnectionOpen(Connect()).Connectionfailed:SQLState:'08001'SQLServerError:17[Microsoft][ODBCSQLServerDriver][DBNETLIB]SQLServerdoesnotexistoraccessdenied.

Seeutentaramesmacoisa,masalteraro"servidor" de 123.456.789.012\SQLEXPRESS para o antigo 123.456.789.012 , obtenho um erro diferente:

Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.

Agora eu sei o que você está pensando. Você pode estar pensando: "duh, você provavelmente não abriu o firewall para a porta 1433, manequim." Exceto que eu fiz, e eu verifiquei isso, como eu posso com sucesso executar:

telnet 123.456.789.012 1433

... da linha de comando, tudo que eu quero. Então não tenho certeza do que fazer. Eu sei que o SQL Server existe, funciona, e uma conexão ODBC pode ser configurada corretamente; Eu só não sei o que é que eu tenho errado em minhas configurações de conexão que está jogando esses erros. Com base no último erro que listei, parece que ele pode se conectar ao servidor, mas simplesmente não consegue encontrar a instância (desde que eu não especifiquei uma vez). Então isso significa que eu só preciso usar alguma sintaxe diferente para especificar o IP junto com um nome de instância? O que eu faço? Agradecemos antecipadamente.

    
por SoaperGEM 06.11.2009 / 01:22

10 respostas

17

Os pipes nomeados e os protocolos TCIP para o SQL server 2005 estão desabilitados por padrão. Você os habilitou em "SQL Server Configuration Manager"? Você pode encontrar os protocolos na configuração da Rede do SQL Server e na configuração do SQL Client nativo xx.

A conexão no próprio servidor funciona graças ao protocolo "Memória compartilhada".

    
por 06.11.2009 / 10:53
5

Você ativou o serviço Navegador do SQL Server de acordo com Como configurar o SQL Server 2005 para permitir conexões remotas ?:

If you are running SQL Server 2005 by using an instance name and you are not using a specific TCP/IP port number in your connection string, you must enable the SQL Server Browser service to allow for remote connections. For example, SQL Server 2005 Express is installed with a default instance name of Computer Name\SQLEXPRESS.

    
por 06.11.2009 / 04:50
3

Este tópico corrigiu a mesma mensagem de erro ao usar Acesso para se conectar a um servidor MSSQL 2008. MSSQL 2005 e anteriores funcionavam bem apenas usando o nome do computador na cadeia de conexão, mas eu tive que mudar para a string de conexão no Access para o formulário completo quando a instância foi atualizada para 2008:

servername\instancename,portnumber

    
por 10.04.2011 / 17:53
1

Ele reconheceria o nome do servidor se ele fosse totalmente qualificado? Se fosse MYSERVER.domain.com? Nós tivemos que fazer isso com o SQL Server ao conectar de um domínio diferente. Se você conseguir conectar o DSN do Sistema ODBC ao testar a fonte de dados, estará progredindo. Se não se conectar na configuração do ODBC, você deve consertar isso primeiro.

    
por 06.11.2009 / 01:53
1

Você está usando pipes nomeados ou TCP na conexão ODBC que funciona? O TCP está ativado?

    
por 06.11.2009 / 05:07
1

Verifique se você tem tcp connectios remotas habilitadas para o servidor SQL.

    
por 06.11.2009 / 07:17
1

Eu tive esse mesmo problema e consegui resolvê-lo, alterando o driver SQL para o driver do SQL Native Client também. Isso foi estranho, como no meu caso, isso estava funcionando há anos e depois parou de funcionar. Eu suspeito que isso é algo nos moldes do driver estar corrompido, talvez um reinstalador do MDAC possa ajudar, mas por enquanto estou feliz que esteja funcionando!

    
por 08.02.2010 / 13:56
0

Apenas um tiro selvagem aqui, mas o que acontece se você colocar uma barra invertida dupla antes do nome do servidor ou endereço IP? Parece-me que normalmente é necessário para a maioria das outras conexões Windows / Microsoft.

    
por 06.11.2009 / 04:02
0

Eu tive um problema semelhante. No meu caso, outro sw configura o ODBC para que eu não possa mudar o driver. Eu resolvi meu caso assim:

  1. Defina as configurações de TCP / IP para o servidor para usar a porta 1433
  2. No cliente, insira o endereço do servidor como: 192.168.1.5,1433 (nenhum nome de instância)

Então começou a funcionar. SO cliente: Win7 x64 Driver: sqlsrv32.dll

    
por 28.08.2015 / 17:29
0

Por que vale a pena, comecei a receber esse erro em uma conexão que estava funcionando anteriormente. Descobriu-se que o serviço MSSQL $ SQLEXPRESS havia parado de alguma forma. Reiniciar resolveu o problema.

    
por 07.11.2015 / 06:05