Para fins de solução de problemas, gostaria de poder verificar se um cliente pode se conectar a uma instância do SQL Server, independentemente do aplicativo que possivelmente não pode se conectar ao SQL Server.
Existe uma maneira fácil (ou seja, não ter que instalar software de terceiros) para fazer isso usando as ferramentas padrão do sistema Windows? Talvez usando scripts ou aplicativos de rede?
Um método de teste simples para conectividade SQL é criar um arquivo de texto vazio, com uma extensão de arquivo "UDL". Você pode criá-lo no Bloco de Notas. E pode ter qualquer nome. Eu uso "TestSQL.UDL"
Salve-o na área de trabalho de um PC com Windows e clique duas vezes nele.
Uma caixa de diálogo "Data Link Properties" aparecerá onde você pode inserir o endereço IP do servidor SQL e também um nome de usuário e senha SQL.
Clique no botão "Testar conexão" para ver se você pode se conectar.
Se o servidor estiver usando TCP/IP, a maneira mais simples é apenas fazer um telnet para a porta do SQL Server e ver se ela se conecta. Por padrão, essa é a porta 1433, então isso deve funcionar:
Isso provavelmente será apropriado na maioria dos casos.
Se estiver usando uma porta diferente ou portas dinâmicas (comuns com uma instância nomeada), você precisará determinar em qual porta está escutando no momento. Verifique o gerenciador de configuração do SQL Server para ver se é uma porta específica ou portas dinâmicas. Se estiver usando portas dinâmicas, contanto que você não tenha várias instâncias no servidor,
netstat -abn
é provavelmente a maneira mais simples de encontrar o que está usando. Caso contrário, procure no log de eventos do Windows ou no log de erros do SQL Server uma mensagem indicando qual porta está em uso pela instância.Se o SQL Server estiver usando pipes nomeados, acredito que, se você conseguir acessar compartilhamentos na máquina, terá conectividade de rede adequada. Este artigo diz que você pode ir além e tentar se conectar ao compartilhamento IPC$:
http://msdn.microsoft.com/en-us/library/aa275787%28v=sql.80%29.aspx
Isso foi escrito para o SQL Server 2000, mas não imagino que esse aspecto tenha mudado muito, se é que mudou.
Desde que você tenha o
Microsoft.SqlServer.Smo
assembly em seu GAC na máquina local, isso pode ser feito facilmente com o PowerShell:Há tantas maneiras de verificar a conectividade - cansei de pesquisar no Google toda vez que precisava verificar a conectividade do SQL no Windows, macOS, linux; para ajudar com isso, criei uma imagem docker para testar a conectividade do SQL. É muito (muito) básico e provavelmente vou melhorar essa hora extra, mas espero que economize tempo das pessoas. Ok, então para testar a conectividade do SQL basta executar este comando:
docker run -it ssaadi/test-sql-conn
Ele solicitará o nome do host, instância, porta etc. e, em seguida, tentará se conectar e executar
select @@servername
ou exibir um erro se falhar.O script é criado em python e usa pymssql para conexão sql - o código-fonte muito básico pode ser encontrado aqui: https://github.com/sameersaadi/test-sql-conn