Tempo limite do SQL Server na primeira tentativa


9

Estou tendo um problema estranho ao tentar me conectar ao SQL Server 2008 em execução em um segundo computador (ambos os computadores executando o Win7 de 64 bits), por meio das fontes de dados do Visual Studio ou do próprio console de gerenciamento do SQL.

Na primeira tentativa de conexão, o tempo limite é excedido. Segunda tentativa funciona bem.

Consigo acessar compartilhamentos no segundo computador sem nenhuma dificuldade, apenas parece ser a primeira vez que tento conectar-me ao SQL para cada instância do aplicativo. Ou seja, se eu abrir duas instâncias do Visual Studio, ambas falharão na primeira tentativa de conexão, mas serão bem-sucedidas na segunda. Eu tenho que conectar duas vezes para cada instância (independentemente da sequência de falha / sucesso em qualquer outro aplicativo).

Espero que faça sentido.

Algum conselho?


Qual método de nomeação você está usando para se conectar à outra máquina, está usando um endereço IP (por exemplo, 192.168.1.1) ou um nome como: MySqlServer. Suspeito que este seja um problema de resolução de nomes. Você pode confirmar que, colocando o nome do servidor Sql no arquivo hosts, nesse caso, o problema deve desaparecer.
Coding Gorilla

Pelo nome da máquina, mas está na minha rede doméstica e posso obter compartilhamentos usando o nome da máquina. É apenas o SQL que me dá problemas.
SergioL 10/09

Respostas:


6

Acho que encontrei a solução, pelo menos no meu caso, está funcionando. Estou usando o nome da instância e isso implica automaticamente uma porta dinâmica para o serviço do servidor sql. Alterei as configurações de dinâmico para uma porta fixa e abri o firewall nessa porta.

SQL Server Configuration Manager -> Configuração de Rede do SQL Server -> Protocolos para 'InstanceName' -> TCP / IP -> Propriedades -> Endereços IP -> IP Tudo ->

Aqui você vê duas opções:

  • Portas dinâmicas TCP: 51250 (geradas aleatoriamente)
  • Porta TCP: vazia - coloquei aqui 1433 e abri o firewall (caso ainda não estivesse aberto). Você pode colocar qualquer porta que desejar (coloquei 1433 porque era a única instância. No caso de várias instâncias, você deve escolher para cada instância uma porta diferente e depois abri-las no firewall)

O script usado para facilitar sua tarefa de abrir as portas que eu baixei do MS e estou reproduzindo aqui (os comentários estão em alemão, mas devem ser óbvios):

@echo =========  Ports des SQL-Servers  ===================
@echo Aktivieren von Port 1433 für die SQLServer-Standardinstanz
netsh firewall set portopening TCP 1433 "SQLServer" 
@echo Aktivieren von Port 1434 für dedizierte Administratorverbindungen
netsh firewall set portopening TCP 1434 "SQL-Administratorverbindung" 
@echo Aktivieren von Port 4022 für den konventionellen SQL Server-Service Broker  
netsh firewall set portopening TCP 4022 "SQL-Service Broker" 
@echo Aktivieren von Port 135 für Transact-SQL-Debugger/RPC 
netsh firewall set portopening TCP 135 "SQL-Debugger/RPC" 
@echo =========  Ports für Analysedienste  ==============
@echo Aktivieren von Port 2383 für die SSAS-Standardinstanz
netsh firewall set portopening TCP 2383 "Analysedienste" 
@echo Aktivieren von Port 2382 für den SQL Server-Browserdienst
netsh firewall set portopening TCP 2382 "SQL-Browser" 
@echo =========  Verschiedene Anwendungen  ==============
@echo Aktivieren von Port 80 für HTTP 
netsh firewall set portopening TCP 80 "HTTP" 
@echo Aktivieren von Port 443 für SSL
netsh firewall set portopening TCP 443 "SSL" 
@echo Aktivieren des Ports für die Schaltfläche 'Durchsuchen' des SQL Server-Browserdiensts
netsh firewall set portopening UDP 1434 "SQL-Browser" 
@echo Zulassen von Multicast-/Broadcastantwort auf UDP (Aufzählung der Browserdienste OK)
netsh firewall set multicastbroadcastresponse ENABLE

2

Meu melhor palpite aqui é que você tem AUTO_CLOSE ativado para o banco de dados. Isso significa que o banco de dados precisa girar quando você se conecta, o que está causando o tempo limite inicial.

O segundo palpite é que ele pode estar relacionado à resolução do nome do host. Portanto, leva muito tempo para resolver o nome do host pela primeira vez (talvez por transmissão?), Mas é armazenado em cache nas tentativas de conexão subseqüentes. O que você está usando para resolver o host? está no DNS? Tente alterar a cadeia de conexão para um formato de porta IP. ou seja, 192.168.100.100,1433

Você também pode tentar executar ipconfig /flushdnsapós uma tentativa bem-sucedida de conexão e ver se você obtém o mesmo comportamento. A solução desonesta é colocar a pesquisa no seu arquivo HOSTS, mas você deve corrigi-la corretamente.


Já definido como desativado (0) em todos os bancos de dados. No entanto, não é apenas a primeira tentativa do cliente, é a primeira tentativa para cada aplicativo em execução no cliente (portanto, a segunda tentativa do SQL Studio se conecta, enquanto está em execução, eu giro o VS2010, ele falha na primeira conexão, mas obtém êxito na segunda ... mesmo que o estúdio já esteja conectado e em execução).
SergioL

talvez sua resolução de DNS / nome de host esteja relacionada? tente alterar sua seqüência de conexão para conectar usando o sql server IP / porta e ver se ele vai embora
Nick Kavadias

2

Parece um tiro no escuro usando uma venda nos olhos, mas pode ajudar. Há um tópico antigo nos fóruns do Microsoft SQL Developer que descreve o que parece ser o mesmo problema, juntamente com uma possível correção. O servidor dele está executando o Windows Server 2008, mas também pode ser relevante para a sua configuração do Win7.

O segmento:

http://social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/58bd9c4d-0572-4567-8e32-82a7fd600022

No tópico:

Sim, eu corrigi este problema.

Meu servidor Windows 2008 foi configurado para rejeitar ligações SASL LDAP (consulte o aviso 2886).

Desde que configurei meu servidor para não rejeitar essas ligações, as conexões do sql server 2008 funcionam corretamente.

Você pode consultar o Microsoft KB 935834 para obter informações sobre como modificar as configurações de assinatura LDAP (não é possível vincular a ele porque eu sou um novo usuário).

Espero que ajude!


0

Desativar firewall. Rede de teste (ping). Detectar o tráfego de rede no servidor sql (use o wireshark )


0

Você pode tentar executar o SQL Profiler antes de se conectar pela primeira vez com o VS ou o SSMS e ver o que está acontecendo no SQL Server?

Além disso, você verificou os logs de eventos para ver se alguma coisa está sendo registrada?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.