Nota: Obviamente, mudei os nomes dos servidores e IPs para nomes fictícios.
Aqui está o que está acontecendo. Eu tenho um servidor que estou chamando MYSERVER
executando o Microsoft SQL Server Express 2005. Nesse servidor, eu tenho uma conexão ODBC configurada 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 é configurado assim:
Como eu disse, esse funciona. Mas, a seguir, tenho outro computador que está em um domínio totalmente diferente / não na intranet, que precisa acessar o mesmo SQL Server hospedado no MYSERVER. Por estar em um domínio diferente, ele não reconhece o nome "MYSERVER"; Eu tenho que apontar para o endereço IP do MYSERVER, que diremos é 123.456.789.012. Mas a conexão ODBC não parece funcionar lá. Eu tentei configurá-lo assim:
Isso não funciona. Quando insiro o nome de usuário e a senha e pressiono Avançar, ele fica parado por uns 10 a 20 segundos e, finalmente, volta com o seguinte erro:
Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.
Se eu tentar a mesma coisa, mas alterar o "servidor" 123.456.789.012\SQLEXPRESS
para simplesmente antigo 123.456.789.012
, recebo 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, idiota". Exceto que fiz e verifiquei isso, pois posso executar com êxito :
telnet 123.456.789.012 1433
... a partir da linha de comando, tudo o que eu quero. Então, eu não tenho certeza do que fazer. Eu sei que o SQL Server existe, funciona e uma conexão ODBC pode ser configurada corretamente; Só não tenho certeza do que há de errado nas minhas configurações de conexão que estão lançando 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 (já que eu não especifiquei uma dessa vez). Então, isso significa que eu só preciso usar alguma sintaxe diferente para especificar o IP junto com o nome de uma instância? O que eu faço? Desde já, obrigado.
fonte
Você ativou o serviço Navegador do SQL Server de acordo com Como configurar o SQL Server 2005 para permitir conexões remotas ?
fonte
Esse encadeamento corrigiu a mesma mensagem de erro ao usar o Access para conectar-se a um servidor MSSQL 2008. O MSSQL 2005 e versões anteriores funcionaram bem apenas usando o nome do computador na cadeia de conexão, mas tive que mudar para a cadeia de conexão no Access para o formulário completo quando a instância foi atualizada para 2008:
servername\instancename,portnumber
fonte
Eu tive esse mesmo problema e consegui resolvê-lo alterando o driver SQL para o driver SQL Native Client também. Isso foi estranho, pois no meu caso, isso funcionava bem há anos e depois parou de funcionar. Eu suspeito que isso seja algo parecido com o driver estar corrompido, talvez uma reinstalação do MDAC possa ajudar, mas por enquanto estou feliz que esteja funcionando!
fonte
Ele reconheceria o nome do servidor se fosse totalmente qualificado? Se fosse MYSERVER.domínio.com? Tivemos que fazer isso com o SQL Server ao conectar-se de um domínio diferente. Se você conseguir conectar o DSN do sistema ODBC ao testar a fonte de dados, estará progredindo. Se ele não se conectar à configuração do ODBC, você precisará corrigi-lo primeiro.
fonte
MYSERVER.domain.com\SQLEXPRESS
eMYSERVER.domain.com
, mas esses dois me deram os mesmos erros que listei acima, respectivamente.Você está usando pipes nomeados ou TCP na conexão ODBC que funciona? O TCP está ativado?
fonte
Verifique se você possui os conectores tcp remotos habilitados para o servidor SQL.
fonte
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.
fonte
Eu tive uma questão semelhante. No meu caso, outro sw configura a configuração ODBC para que eu não possa alterar o driver. Eu resolvi meu caso assim:
Então começou a funcionar. SO cliente: Win7 x64 Driver: sqlsrv32.dll
fonte
Pelo que vale, comecei a receber esse erro em uma conexão que estava funcionando anteriormente. Acontece que o serviço MSSQL $ SQLEXPRESS havia sido interrompido de alguma forma. Reiniciar corrigiu o problema.
fonte
Eu também tinha esse problema e era simples: o servidor listado como servidor DNS primário para esse servidor foi removido e o aplicativo não conseguiu mais resolver corretamente o nome do servidor SQL na rede. Tudo imediatamente começou a funcionar novamente quando eu corrigi o servidor DNS local para um funcional.
fonte