Activar as ligações remotas para a SQL Server Express 2012

Acabei de instalar o SQL Server Express 2012 no meu servidor doméstico. Estou a tentar ligar-me a ele a partir do Visual Studio 2012 do meu computador de secretária, e a obter repetidamente o erro bem conhecido:

Ocorreu um erro relacionado com a rede ou específico de uma instância ao estabelecer uma ligação ao servidor SQL. O servidor não foi encontrado ou não estava acessível. Verifique se o nome da instância está correto e se o servidor SQL está configurado para permitir conexões remotas. (fornecedor: fornecedor nomeado de tubos, erro: 40-não foi possível abrir uma ligação ao servidor de SQL)

O que fiz para tentar resolver isto ...
  • executar o Gestor de configuração do servidor SQL no servidor e activar o navegador do servidor SQL
  • Adicione uma excepção de Firewall do Windows no servidor para o TCP, portos 1433 e 1434 na sub-rede local.
  • verifique se tenho um login na instância do servidor SQL para o utilizador em que estou logado como no ecrã.
  • verifique se estou a usar a autenticação do Windows no SQL Instância do servidor.
  • reiniciar repetidamente o servidor SQL e todo o servidor dang.
  • Tira - me o cabelo todo.

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

Author: Ryan Lundy, 2012-07-01

16 answers

Ainda bem que perguntei. A solução que finalmente descobri foi aqui:

Como é que configuro o SQL Server Express para permitir ligações TCP/ip Remotas no Porto 1433?

  1. execute o Gestor de configuração do servidor SQL.
  2. Ir para a configuração da rede de servidores SQL > protocolos para o SQLEXPRESS.
  3. certifica-te que o TCP/IP está activo.
Até agora, tudo bem, e totalmente esperado. Mas depois ...
  1. carregue com o botão direito no TCP / IP e seleccione propriedades .
  2. verifique se, sob o IP2, o endereço IP está definido para o endereço IP do computador na sub-rede local.
  3. Vá até IPAll.
  4. Certifique-se que As portas dinâmicas do TCP são em branco. (O meu foi definido para um número de cinco dígitos.)
  5. Certifique-se que a porta TCP está configurada como 1433. (O meu estava em branco.)

(também, se seguir estes passos, é Não necessário para activar o navegador do servidor SQL, e você só precisa permitir o porto 1433, não 1434.)

Estes cinco passos extras são algo que não me lembro de ter tido de fazer numa versão anterior do servidor SQL, expresso ou não. Eles parecem ter sido necessários porque eu estou usando uma instância nomeada (myservername\SQLEXPRESS) no servidor em vez de uma instância padrão. Veja aqui:

Configurar um servidor para ouvir num Porto TCP específico (Gestor de configuração do servidor SQL)

 716
Author: Ryan Lundy, 2013-10-10 22:53:06

A forma correcta de se ligar ao servidor SQL remoto (sem abrir o porto UDP 1434 e activar o navegador do servidor SQL) é usar o ip e o porto em vez de a instância nomeada.

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

Talvez 2 imagens falem 2000 palavras...

Este método utiliza o porto especificado (isto é o que a maioria das pessoas quer I acreditar)..

enter image description here

Este método requer a abertura do navegador de servidores UDP 1434 e SQL em execução..

enter image description here

 101
Author: Rosdi Kasim, 2013-06-05 10:40:36

Mais Uma Coisa...

Kyralessa fornece uma grande informação, mas tenho outra coisa a acrescentar onde fiquei perplexo, mesmo depois deste artigo.

Sob a configuração da rede do servidor SQL > protocolos para o servidor > TCP/IP activo. Carregue com o botão direito no TCP/IP e escolha as propriedades. Sob os endereços IP que você precisa definir ativado para Sim para cada tipo de conexão que você está usando.

enter image description here

 29
Author: Pete, 2014-05-08 19:57:43

Pode usar isto para resolver este problema:

Ir para iniciar > executar, e executar CLICONFG.EXE.

O protocolo de tubos nomeado será o primeiro da lista.Demote-o e promova o TCP/IP.

Testa a aplicação cuidadosamente.

Espero que isto ajude.
 16
Author: Ageu, 2013-05-20 04:22:21

Também pode definir

Ouçam todos o NO

Na janela do protocolo, então no endereço IP ip ip ip ip ip ip ip IP IP1 (say)

Activado em Sim,

Define yr IP address,

Define a dinâmica TCP em branco e

Porta TCP para 1433 (ou seja o que for)

 14
Author: johnroster, 2012-11-26 12:16:01
Tive um problema recentemente. 2015 ago

Resolvido abrindo o Gestor de configuração do servidor SQL

  • Configuração da rede de servidores SQL - > protocolos para o SQLEXPRESS
  • propriedades do TCP / IP - > tab
  • tudo permanece por omissão, apenas configura o Porto IPALL: TCP para 1433

Pode ligar - se com O gestor de servidores SQL à máquina: [hostaddress], 1433

Exemplo:

enter image description here

 10
Author: DDan, 2015-08-20 16:42:14
Este artigo ajudou-me...

Como activar as ligações remotas no servidor SQL

Tudo no servidor SQL estava configurado, o meu problema era o firewall estava a bloquear a porta 1433

 9
Author: JGilmartin, 2013-08-14 20:28:02

Na minha instalação da edição de desenvolvimento do SQL Server 2012, instalada com a configuração predefinida, só tive de carregar o Gestor de configuração do servidor SQL -> configuração da rede do servidor SQL -> protocolos para o servidor MSSQL e mudar o TCP/IP de desactivado para activo.

 6
Author: Phil, 2013-01-04 14:27:25
Tive de adicionar uma firewall para abrir a porta UDP 1434. Este é o único navegador de servidor Sql que ouve.
 5
Author: tom redfern, 2014-07-10 13:28:52

Prefiro a maneira de "Rosdi Kasim" porque isso não requer configuração de detalhes no IP.

Vou esquecer - me de novo quando voltar a tentar criar outro servidor.

Mantenha-o simples estúpido (KISS), activando simplesmente o serviço de navegação do servidor Sql, adicionando depois o \SQLEXPRESS por trás do IP quando ligar o servidor.

Usar directamente o IP sem "\SQLEXPRESS " foi o meu ponto de falha, uma vez que não usa a porta predefinida.

Obrigado.
 3
Author: ALien, 2014-03-03 16:46:35

Eu tinha o mesmo problema com o servidor SQL 2014 instalado localmente chamada instância. A ligação com o FQDN\InstanceName falharia, ao mesmo tempo que a ligação com apenas o meu hostname\InstanceName funcionava. Por exemplo: ligar usando mycomputername\sql2014 funcionou, mas usando mycomputername.mydomain.org\sql2014 não funcionou. O DNS resolveu corretamente, o TCP / IP foi ativado dentro do Gerenciador de configuração SQL, as regras do Firewall do Windows foram adicionadas (e então desligou o firewall para testar para garantir que ele não estava bloqueando nada), mas nenhum desses corrigiu o problema.

Finalmente, Eu ... teve de iniciar o serviço "SQL Server Browser" no servidor SQL e isso corrigiu a questão da conectividade.

Eu nunca tinha percebido que o serviço Navegador do SQL Server, na verdade, ajudou o SQL Server em fazer conexões; eu estava sob a impressão de que ele simplesmente ajudou a preencher os menus suspensos quando você clicou em "procurar" servidores de ligar, mas ele realmente ajuda a alinhar as solicitações do cliente com a porta correta # para usar, se a porta # não é explicitamente atribuído (semelhante ao como as ligações do site ajudam a aliviar o mesmo problema em um servidor web IIS que hospeda vários sites).

Este item de ligação foi o que me deu a pista sobre o serviço de navegação do servidor SQL: https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine-name

  • quando usa o wstst05\sqlexpress como 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 netbios. Não vejo nenhum problema para eles corresponderem. e a ligação é considerada local. De lá, recuperamos o informação necessária sem contactar o navegador SQL e ligar-se ao Instância SQL via memória compartilhada sem qualquer problema.
  • quando utilizar o wstst05.capatest.local\sqlexpress, o código do cliente falha na comparação do nome (wstst05.capatest.local) para o netbios nome (wstst05) e considera a conexão "remota". Isto é ... por design e vamos definitivamente considerar melhorar isso no futuro. De qualquer forma, devido a considerar a conexão remota e o fato que é uma instância nomeada, o cliente decide que precisa usar SQLBrowser para resolução de nomes. Ele tenta entrar em contato com o navegador SQL em wstst05.capatest.local (Porto UDP 1434) e aparentemente essa parte falha. Daí o erro que você tem.

A razão para o serviço" SQL Server Browser " da TechNet (ênfase adicionada por mim): https://technet.microsoft.com/en-us/library/ms181087 (V=sql.120).aspx

Da secção "usar o navegador do servidor SQL":

Se o serviço de navegação do servidor de SQL não estiver a correr, ainda poderá para se ligar ao servidor SQL se indicar o número de Porto correcto ou encaminhamento. Por exemplo, você pode se conectar à instância padrão de SQL Server with TCP / IP if it is running on port 1433. No entanto, se o serviço de navegação do servidor SQL não está em execução, seguinte as ligações não funcionam:

  • qualquer componente que tente ligar-se a uma instância nomeada sem especificar completamente todos os parâmetros (como a porta TCP / IP ou chamada pipe) .
  • qualquer componente que gera ou passa informação de instância do servidor\que possa ser mais tarde usada por outros componentes para se reconectar.
  • a ligar-se a uma instância com nome sem indicar o número de porta ou o tubo.
  • DAC para um nomeado instância ou instância padrão se não usar o porto TCP/IP 1433.
  • O serviço de redirector OLAP.
  • enumerando servidores em SQL Server Management Studio, Enterprise Manager, ou Query Analyzer.

Se estiver a usar o servidor SQL num cenário cliente-servidor (por exemplo, quando a sua aplicação está a aceder ao servidor SQL através de uma rede), se se parar ou desactivar o serviço de navegação do servidor SQL, terá de atribuir um número de porto específico para cada instância e escrever o seu cliente código da aplicação para usar sempre esse número de porta. Esta abordagem problemas seguintes:

  • Você deve atualizar e manter o código de aplicação cliente para garantir que ele está conectando-se ao porto adequado.
  • o porto que escolher para cada instância pode ser usado por outro serviço ou aplicação no servidor, causando a instância de SQL Servidor indisponível.

E mais informações do mesmo artigo do " How SQL Navegador de servidores funciona " Secção:

Porque apenas uma instância do servidor SQL pode usar uma porta ou um tubo , os diferentes números de porto e nomes dos tubos são atribuídos com o nome instâncias, incluindo o SQL Server Express. Por omissão, quando activo, tanto as instâncias nomeadas como a SQL Server Express estão configuradas para usar portas dinâmicas, ou seja, uma porta disponível é atribuída quando SQL O servidor começa. Se você quiser, um porto específico pode ser atribuído a um instância do servidor SQL. Quando conectando, os clientes podem especificar um porto específico; mas se o porto for dinamicamente atribuído, o porto o número pode alterar a qualquer momento que o servidor SQL seja reiniciado, por isso a porta correcta o número é desconhecido para o cliente. ... Quando os clientes do servidor SQL solicitam Recursos do servidor SQL, a biblioteca de rede cliente envia uma mensagem UDP para o servidor usando a porta 1434. O navegador do servidor SQL responde com o Porta TCP/IP ou tubo nomeado da instância solicitada. Rede biblioteca na aplicação do cliente, em seguida completa a ligação por enviar um pedido para o servidor usando o porto ou o cachimbo nomeado do instância desejada

 3
Author: BateTech, 2015-10-20 18:08:45

Tive de adicionar Porto através do Gestor de configuração e adicionar o número de porto na minha ligação SQL [Máquina]\[Nome da instância db],1433

Note a, (vírgula) entre o instancename e o porto

 2
Author: wchoward, 2015-07-16 10:37:06

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

Devia começar por dizer que o tinha em estúdio Visual, e não em SQL Server Express, mas a solução devia ser exactamente a mesma. Bem, Deus, na verdade é muito simples e talvez um pouco tolo. Quando eu tentei criar uma base de dados e Visual Studio sugeriu o nome do servidor SQL que me deu o nome de usuário do Windows e como é na verdade o nome do servidor que eu fui para ele. Na realidade, era o meu nome de utilizador do Windows + \SQLEXPRESS. Se você não mudou nenhuma configuração este provavelmente é seu também. Se funcionar, pare de ler; esta é a minha resposta. Se não funcionar, talvez o nome seja diferente.

Se, como eu, você só tinha este problema em estúdio Visual para verificar o que é seu siga estes passos:

  1. Open SQL Server Management Studioícone.
  2. Se não vir o seu servidor (acoplado à esquerda por por omissão) carregue emF8 or go to View - > Object Explorer .
  3. carregue com o botão direito no nome do servidor e escolha Propriedades (o último item)
  4. na parte inferior esquerda, poderá ver o nome actual do seu servidor em " Servidor " (Não ligação, mas acima dela).

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

 1
Author: MasterMastic, 2013-01-24 12:20:41

No meu caso, a base de dados estava a correr num porto não-padrão. Verifique se o porto em que está a ligar-se é o mesmo que o porto em que a base de dados está a correr. Se houver mais instâncias do servidor SQL, verifique a correta.

 1
Author: qub1n, 2015-09-02 19:22:05

Tudo o que precisas de fazer é abrir a porta relevante na firewall do servidor.

 0
Author: user1968210, 2013-01-10 21:43:38

Mais uma coisa a verificar é que escreveu correctamente a instância com o nome!

Este artigo é muito útil na resolução de problemas de ligação: Como resolver problemas ligando-se ao motor de Base de dados do servidor SQL

 0
Author: Matt Burrell, 2014-06-19 10:35:44