Ativar conexões remotas para o SQL Server Express 2012

Acabei de instalar o SQL Server Express 2012 no meu servidor doméstico. Eu estou tentando se conectar a ele do Visual Studio 2012 do meu PC de mesa e repetidamente recebendo o erro conhecido:

Ocorreu um erro relacionado à rede ou a uma instância específica ao estabelecer uma conexão com o SQL Server. O servidor não foi encontrado ou não estava acessível. Verifique se o nome da instância está correto e se o SQL Server está configurado para permitir conexões remotas. (provedor: provedor de pipes nomeados, erro: 40 – não foi possível abrir uma conexão com o SQL Server)

O que eu fiz para tentar consertar isso:

  • Executar o SQL Server Configuration Manager no servidor e ativar o navegador do SQL Server
  • Adicione uma exceção do Firewall do Windows no servidor para TCP, portas 1433 e 1434 na sub-rede local.
  • Verifique se eu tenho um login na instância do SQL Server para o usuário que estou logado como na área de trabalho.
  • Verifique se estou usando a Autenticação do Windows na instância do SQL Server.
  • Repetidamente reinicie o SQL Server e o servidor dang inteiro.
  • Puxe todo o meu cabelo para fora.

Como posso obter o SQL Server 2012 Express para permitir conexões remotas?

Bem, feliz eu perguntei . A solução que finalmente descobri estava aqui:

Como configuro o SQL Server Express para permitir conexões tcp / ip remotas na porta 1433?

  1. Execute o SQL Server Configuration Manager.
  2. Vá para Configuração de Rede do SQL Server> Protocolos para SQLEXPRESS.
  3. Certifique-se de que o TCP / IP esteja ativado.

Até agora, tudo bem e inteiramente esperado. Mas então:

  1. Clique com o botão direito do mouse em TCP / IP e selecione Propriedades .
  2. Verifique se, em IP2, o endereço IP está definido para o endereço IP do computador na sub-rede local.
  3. Role para baixo até IPAll.
  4. Certifique-se de que TCP Dynamic Ports esteja em branco . (O meu foi definido para um número de porta de 5 dígitos.)
  5. Certifique-se de que a Porta TCP esteja configurada para 1433 . (O meu estava em branco.)

(Além disso, se você seguir estas etapas, não será necessário habilitar o SQL Server Browser e só será necessário permitir a porta 1433, não 1434.)

Essas cinco etapas extras são algo que não me lembro de ter feito em uma versão anterior do SQL Server, Express ou outra. Eles parecem ter sido necessários porque estou usando uma instância nomeada (myservername \ SQLEXPRESS) no servidor em vez de uma instância padrão. Veja aqui:

Configurar um servidor para escutar em uma porta TCP específica (SQL Server Configuration Manager)

A maneira correta de se conectar ao SQL Server remoto (sem abrir a porta UDP 1434 e habilitar o navegador do SQL Server) é usar ip e porta em vez de instância nomeada .

Usar ip e porta em vez de instância nomeada também é mais seguro, pois reduz a área de superfície de ataque.

Talvez 2 fotos falem 2000 palavras …

Este método usa a porta especificada (é nisso que a maioria das pessoas quer acreditar).

insira a descrição da imagem aqui

Este método requer a abertura da porta UDP 1434 e do SQL Server Browser em execução.

insira a descrição da imagem aqui

Mais uma coisa…

Kyralessa fornece ótimas informações, mas eu tenho uma outra coisa para adicionar, onde fiquei perplexo mesmo depois deste artigo.

Em Configuração de Rede do SQL Server> Protocolos para Servidor> TCP / IP Ativado. Clique com o botão direito do mouse em TCP / IP e escolha propriedades. Sob os endereços IP, você precisa definir Habilitado como Sim para cada tipo de conexão que estiver usando.

insira a descrição da imagem aqui

Você pode usar isso para resolver esse problema:

Vá para START> EXECUTE e execute o CLICONFG.EXE.

O protocolo Named Pipes será o primeiro da lista. Anote-o e promova o TCP / IP.

Teste o aplicativo completamente.

Espero que isso ajude.

Você também pode definir

Ouça tudo para não

na checkbox de diálogo do protocolo, em seguida, no endereço IP IP1 (digamos)

conjunto ativado para Sim,

definir o endereço IP do ano

defina TCP dynamic para branco e

Porta TCP para 1433 (ou qualquer outro)

Eu tive esse problema recentemente. 2015 ago

Resolvido abrindo o SQL Server Configuration Manager

  • Configuração de rede do SQL Server -> Protocolos para SQLEXPRESS
  • Propriedades no TCP / IP -> guia Endereços IP
  • Tudo fica padrão, apenas defina IPALL: Porta TCP para 1433

Pode se conectar ao SQL Server Manager para a máquina: [hostaddress], 1433

Exemplo:

insira a descrição da imagem aqui

Este artigo me ajudou …

Como habilitar conexões remotas no SQL Server

Tudo no SQL Server foi configurado, meu problema era o firewall estava bloqueando a porta 1433

Na minha instalação do SQL Server 2012 Developer Edition, instalada com as configurações padrão, tive apenas que carregar o SQL Server Configuration Manager -> Configuração de Rede do SQL Server -> Protocolos para MSSQLSERVER e alterar o TCP / IP de Desativado para Ativado.

Eu tive que adicionar uma regra de porta de input do firewall para abrir a porta UDP 1434. Este é o único que o Sql Server Browser escuta.

Eu prefiro a maneira de “Rosdi Kasim” como isso não requer configuração detalhada no IP.

Eu definitivamente vou esquecê-lo novamente quando eu tentar outro servidor novamente.

Keep It Simple Stupid (KISS) simplesmente ative o serviço Sql Server Browser e adicione o \ SQLEXPRESS por trás do IP quando conectar o servidor.

O uso direto do IP sem “\ SQLEXPRESS” foi o meu ponto de falha, pois não usa a porta padrão.

Obrigado.

Eu tive o mesmo problema com a instância nomeada instalada localmente do SQL Server 2014. Conectar-se usando o FQDN\InstanceName falharia, ao conectar usando apenas o hostname\InstanceName funcionado. Por exemplo: conectar usando mycomputername\sql2014 funcionou, mas usando mycomputername.mydomain.org\sql2014 não. O DNS foi resolvido corretamente, o TCP / IP foi habilitado no SQL Configuration Manager, as regras do Firewall do Windows foram adicionadas (e, em seguida, o firewall foi desligado para testes para garantir que não estava bloqueando nada), mas nenhuma delas resolveu o problema.

Finalmente, tive que iniciar o serviço ” SQL Server Browser ” no SQL Server e isso resolveu o problema de conectividade.

Eu nunca tinha percebido que o serviço Navegador do SQL Server na verdade ajudava o SQL Server a fazer conexões; Fiquei com a impressão de que ele simplesmente ajudou a preencher as listas suspensas quando você clicava em “procurar mais” para se conectar, mas na verdade ajuda a alinhar solicitações de clientes com o número de porta correto a ser usado se o número da porta não for atribuído explicitamente como as ligações de sites ajudam a aliviar o mesmo problema em um servidor Web IIS que hospeda vários sites).

Este item de conexão é o que me deu a pista sobre o serviço Navegador do SQL Server: https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine- nome

  • quando você usa wstst05 \ sqlexpress como um nome de servidor, o código do cliente separa o nome da máquina do nome da instância e o wstst05 é comparado com o nome do netbios. Não vejo nenhum problema para eles corresponderem e a conexão é considerada local. A partir daí, recuperamos as informações necessárias SEM entrar em contato com o SQL Browser e nos conectarmos à instância do SQL via Shared Memory sem nenhum problema.
  • quando você usa wstst05.capatest.local \ sqlexpress, o código do cliente falha na comparação do nome (wstst05.capatest.local) com o nome do netbios (wstst05) e considera a conexão “remote”. Isso ocorre por design e definitivamente vamos considerar melhorar isso no futuro. De qualquer forma, devido a considerar a conexão remota e o fato de ser uma instância nomeada, o cliente decide que precisa usar o SQLBrowser para resolução de nomes. Ele tenta entrar em contato com o SQL Browser em wstst05.capatest.local (porta UDP 1434) e aparentemente essa parte falha. Daí o erro que você recebe.

O motivo do serviço “SQL Server Browser” do TechNet (ênfase adicionada por mim): https://technet.microsoft.com/pt-br/library/ms181087(v=sql.120).aspx

Na seção “Usando o SQL Server Browser”:

Se o serviço Navegador do SQL Server não estiver em execução, você ainda poderá se conectar ao SQL Server se fornecer o número de porta ou o pipe nomeado correto. Por exemplo, você pode se conectar à instância padrão do SQL Server com TCP / IP, se estiver sendo executado na porta 1433. No entanto, se o serviço Navegador do SQL Server não estiver em execução, as seguintes conexões não funcionarão :

  • Qualquer componente que tente se conectar a uma instância nomeada sem especificar totalmente todos os parâmetros (como a porta TCP / IP ou o pipe nomeado) .
  • Qualquer componente que gere ou transmita informações do servidor \ instância que possam posteriormente ser usadas por outros componentes para reconectar.
  • Conectando-se a uma instância nomeada sem fornecer o número da porta ou o canal.
  • DAC para uma instância nomeada ou a instância padrão, se não estiver usando a porta TCP / IP 1433.
  • O serviço redirecionador OLAP.
  • Enumerando servidores no SQL Server Management Studio, Enterprise Manager ou Query Analyzer.

Se você estiver usando o SQL Server em um cenário cliente-servidor (por exemplo, quando seu aplicativo estiver acessando o SQL Server em uma rede), se você parar ou desabilitar o serviço Navegador do SQL Server, atribua um número de porta específico a cada instância e escreva seu código de aplicativo cliente para sempre usar esse número de porta. Essa abordagem tem os seguintes problemas :

  • Você deve atualizar e manter o código do aplicativo cliente para garantir que ele esteja se conectando à porta correta.
  • A porta escolhida para cada instância pode ser usada por outro serviço ou aplicativo no servidor, fazendo com que a instância do SQL Server fique indisponível.

E mais informações do mesmo artigo da seção “Como o SQL Server Browser funciona”:

Como apenas uma instância do SQL Server pode usar uma porta ou pipe , números de porta e nomes de canal diferentes são atribuídos para instâncias nomeadas, incluindo o SQL Server Express. Por padrão, quando habilitadas, as instâncias nomeadas e o SQL Server Express são configurados para usar portas dinâmicas, ou seja, uma porta disponível é atribuída quando o SQL Server é iniciado. Se você quiser, uma porta específica pode ser atribuída a uma instância do SQL Server. Ao se conectar, os clientes podem especificar uma porta específica; mas se a porta for designada dinamicamente, o número da porta poderá ser alterado a qualquer momento em que o SQL Server for reiniciado, portanto, o número de porta correto é desconhecido para o cliente. … Quando os clientes do SQL Server solicitam resources do SQL Server, a biblioteca de rede do cliente envia uma mensagem UDP ao servidor usando a porta 1434. O SQL Server Browser responde com a porta TCP / IP ou o pipe nomeado da instância solicitada. A biblioteca de rede no aplicativo cliente, em seguida, conclui a conexão enviando uma solicitação ao servidor usando a porta ou o pipe nomeado da instância desejada

Eu tive que adicionar porta via Gerenciador de Configurações e adicionar o número da porta na minha conexão sql [host] \ [nome da instância db], 1433

Observe a (vírgula) entre instancename e port

Eu tive um problema diferente do que todas as respostas até agora mencionadas!

Eu deveria começar dizendo que eu tinha no Visual Studio, e não no SQL Server Express, mas a solução deveria ser exatamente a mesma.

Bem, é realmente simples e talvez um pouco tolo. Quando eu tentei criar um database e Visual Studio sugeriu o nome do SQL Server que me deu meu nome de usuário do Windows e desde que é realmente o nome do servidor eu fui para ele.

Na realidade, era realmente meu nome de usuário do Windows + \SQLEXPRESS . Se você não alterou nenhuma configuração, provavelmente esta também é sua. Se funcionar, pare de ler; esta é minha resposta. Se não funcionar, talvez o nome seja diferente.

Se, como eu, você só tiver esse problema no Visual Studio para verificar o que é seu, siga estas etapas:

  1. Abra o ícone do SQL Server Management Studio .
  2. Se você não vir seu servidor (encheckboxdo à esquerda por padrão), pressione F8 ou vá para Exibir -> Object Explorer .
  3. Clique com o botão direito no nome do servidor e escolha Propriedades (O último item)
  4. No canto inferior esquerdo você pode ver o nome real do seu servidor em ” Servidor ” (não Conexão, mas acima dela).

Este é o nome do servidor e é para isso que você deve tentar se conectar! não o que o Visual Studio sugere!

No meu caso, o database estava sendo executado em uma porta não padrão. Verifique se a porta que você está conectando é a mesma que a porta em que o database está sendo executado. Se houver mais instâncias do SQL Server, verifique a correta.

Tudo o que você precisa fazer é abrir a porta relevante no firewall do servidor.

Só mais uma coisa para verificar é que você digitou a instância nomeada corretamente!

Este artigo é muito útil na solução de problemas de conexão: Como solucionar problemas de conexão com o mecanismo de database do SQL Server