Como corrijo o erro 'Provedor de pipes nomeados, erro 40 - Não foi possível abrir uma conexão com o' SQL Server '?

152

Não consigo conectar ao meu banco de dados de um site. Eu recebo este erro:

Provedor de pipes nomeados, erro: 40 - Não foi possível abrir uma conexão com o SQL Server

Tentei usar o endereço IP local para conectar-se e também um público. Eu tentei:

  1. Sim, o site pode se comunicar com o servidor
  2. Canais nomeados / TCP está ativado.
  3. Conexões remotas são permitidas.
  4. O Firewall do Windows está desativado
  5. Criou uma exceção para a porta 1433 no Firewall do Windows.
  6. Habilitou tudo no SQL Server Configuration Manager.

O que mais posso fazer aqui?

Damien
fonte
2
Pode valer a pena verificar se o SQL Server está realmente usando a porta 1433. Pode estar usando algo diferente da porta padrão.
Rajeev Shenoy
Verifique também, durante o ping, que o nome do servidor esteja definido corretamente (ou bem escrito). Este foi o problema no meu caso!
Yann Chabot
@RajeevShenoy: Como você pode saber sem uma conexão (qual é o problema)? Posso dizer à porta, enquanto conectada, usando o netstat, mas isso só funciona se houver uma conexão.
MSIS

Respostas:

117

Resolver esse problema é muito fácil:

  1. Vá para o painel de controle.
  2. procure serviços.
  3. Abra a janela Serviços locais nos seus resultados de pesquisa
  4. Reinicie seu serviço MSSQLSERVER.

Captura de tela das etapas:

Captura de tela das etapas

Kazem
fonte
1
Uau, estúdio de Gestão não iria começar meu serviço, mesmo que foi definido para Graças automáticas
johnny 5
Obrigado, isso ajudou. Vou continuar tendo que iniciar o serviço a partir de cada vez? Eu não precisava anteriormente.
precisa saber é o seguinte
3
E se este serviço não estiver aqui? Eu instalei o SQL Server 17. Eu não vejo este serviço ....
Ciaran Gallagher
1
Fazendo um backup de banco de dados de 170 GB, o serviço foi interrompido. Graças a isso, foram necessários apenas 5 minutos para reiniciar o servidor sql que estava sendo usado por um cliente importante. Muito obrigado.
Shondeslitch
2
Todas as ações foram verificadas, mas a reinicialização não funcionou para mim. Ainda está recebendo o mesmo erro.
JayPex
89

E a solução mais simples - verifique se a barra está de volta ...

Passei cerca de uma hora tentando descobrir o que há de errado com SERVER / INSTANCENAME quando tudo está configurado corretamente, nomeado pipes, direitos de acesso de usuário ... e de repente me ocorreu que não era uma barra, é uma barra invertida ( \).

O horror, a vergonha ...

mizuki nakeshu
fonte
2
Eu tinha o problema do OP e, por acaso, estava faltando as informações do SERVIDOR / INSTANCENAME (havia um ponto lá).
LuxDie
@LuxDie Onde você coloca SERVER \ INSTANCENAME e onde está localizado?
tom_mai78101
Esta é a chave, não se deve esquecer que você precisa se conectar a um "banco de dados" que está hospedado em uma seguradora em um servidor. Este erro será gerado se você usar apenas o nome do host do servidor para a conexão e tentar usar o nome da instância como banco de dados ou vice-versa.
MichaelHuelsen
Resolvido meu problema. Cadeia de conexão de trabalho: Server=MyServerName\DOLPHIN=Trusted_Connection=True;Database=DolphinPlatformdurante o desenvolvimento (C #), eu estava me conectando a um servidor MSSQL 2017 instalado localmente, mas quando fui implantá-lo, o servidor remoto instalado pelo fornecedor de software estava sendo executado como um Instance. Fiquei pensando que era um problema de autenticação porque estava sendo executado como um serviço ou algo assim até que eu encontrei isso.
Alan
49

É um processo de três etapas realmente após a instalação do SQL Server:

  1. Habilitar pipes nomeados SQL Config Manager -> SQL Server Network Consif -> Protocolos -> Pipes nomeados -> Clique com o botão direito do mouse -> Reiniciar

pipes nomeados ativados

  1. Reinicie o servidor SQL Config Manager -> Serviços do SQL Server -> SQL Server (SQLEXPRESS) -> Clique com o botão direito do mouse -> Reiniciar

  2. Use nomes de servidor e instância adequados (ambos são necessários!) Normalmente, seria . \ SQLEXPRESS , por exemplo, veja a captura de tela na caixa de diálogo de conexão QueryExpress.

insira a descrição da imagem aqui

Aí está.

Pompair
fonte
desde que você tenha uma resposta de pontuação alta relativamente atrasada. O que é isso, quando você tem um serviço que se comunica bem com o servidor sql e depois de 3 horas de execução, ele começa a receber esse erro que persiste por 10 minutos ou mais. Em seguida, o serviço continua sendo executado como antes do erro. ???
TS
Isto é para conexões locais? O que é adicionalmente necessário para que as conexões remotas através da rede funcionem?
Kissaki
19

Acabei de instalar o desenvolvedor do SQL SERVER 2012. Quando eu estava criando meu primeiro pacote SSIS, recebi esse erro de pipes ao tentar criar uma tarefa de conexão de dados no SQL Server 2012 Data Tools na caixa Gerenciador de conexões. Eu resolvi com a ajuda do post acima.

Se escolher uma instância nomeada e você chamar sua instância nomeada SSQDatabase1 e o nome do seu PC for PCX1. Você deve inserir PCX1 \ SSQDatabase1 e não apenas SSQDatabase1 ou receberá o erro de pipes nomeados.

rockz1
fonte
16

Um thread no MSDN Social, Re: Named Pipes Provider, erro: 40 - Não foi possível abrir uma conexão com o SQL Server , possui uma lista bastante decente de possíveis problemas relacionados ao seu erro. Você pode querer ver se algum deles pode ser o que você está enfrentando.

  • Cadeia de conexão incorreta, como usar SqlExpress
  • Pipes nomeados (NP) não foram habilitados na instância SQL
  • A conexão remota não foi ativada
  • Servidor não iniciado ou aponte para um servidor não real na sua cadeia de conexão
  • Outros motivos, como contexto de segurança incorreto
  • tente testes básicos de conectividade entre as duas máquinas em que você está trabalhando
Khan
fonte
Passou por eles, infelizmente, isso não ajudou. :(
Damien
4
Ok, descubra isso. Acontece que, quando instalei o servidor, fiz uma instância nomeada. Você não pode se conectar a uma instância nomeada da mesma maneira que faria com uma instância padrão. Portanto, fonte de dados: localhost \ nome da instância que funciona. Ainda não consegui usá-lo com um endereço IP, mas feliz em finalmente conectar-me.
Damien
Fico feliz em ouvir, mas por curiosidade você pode se conectar a ele usando ip.ip.ip.ip/NamedInstance?
Khan
10

Acabei de ativar o TCP / IP, VIA, pipes nomeados no gerenciador de configuração do Sql Server, meu problema foi resolvido, consulte isso para obter mais informações Resolvendo o erro de pipes nomeados 40

Samanth
fonte
link morto. alguma informação sobre o que disse?
Kissaki
7

Use SERVER \\ INSTANCE NAME. Usar a barra invertida dupla no meu projeto resolveu o meu problema.

Tamizh venthan
fonte
Este também funcionou para mim, mas alguém pode me dizer por que isso funcionou?
GWR
Eu diria corda escapar, mas depende do contexto
mizuki nakeshu
Se essa sequência estiver no código C #, @"server\instance"ou "server\\instance"deve funcionar. Se estiver em um arquivo de configuração, você só quer o servidor de texto sem formatação \ instance.
Denise Skidmore
7

Graças a Damian ...

Canais nomeados TCP / IP ... ambos ativados

Configuração da Web .... (para host local)

<add name="FooData" connectionString="Data Source=localhost\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
Terri
fonte
5

Teve o mesmo problema. Passou 6 horas quando teve que migrar alguns servidores. Tentei todas as sugestões disponíveis sobre este tópico e outros.

A solução foi tão simples quanto a reinicialização do servidor!

dia das bruxas
fonte
1
Infelizmente, redefinir o servidor também resolveu o problema. Todas as outras sugestões mencionadas foram tentadas sem sucesso.
precisa saber é o seguinte
3

no meu caso, eu tinha um servidor independente, alterei a porta padrão da porta do servidor sql 1433 no gerenciador de configuração para algum número e reiniciei o serviço de serviço sql para entrar em vigor. para o servidor. mas não consegui conectar da minha máquina local através do servidor sql, estava recebendo o erro:

Ocorreu um erro relacionado à rede ou à instância 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

esse 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) (Microsoft SQL Server, Erro: 5)

Eu verifiquei e verifiquei todos os itens abaixo

-Pipes nomeados / TCP está ativado. Conexões remotas são permitidas. - O Firewall do Windows está desativado - Criou uma exceção para a porta no Firewall do Windows (isso não foi necessário no meu caso, pois o servidor está na mesma rede de sub-rede). -Ativado tudo no SQL Server Configuration Manager.

então, retornei o número da porta para o padrão 1433 e reiniciei o serviço do servidor sql, e o problema foi resolvido e eu consigo conectar o servidor sql no meu estúdio de gerenciamento local.

balu
fonte
3

Eu tive o mesmo problema. Eu uso o MSSQL Server Management Studio 2017 e resolvi esse problema usando estas etapas:

  1. Verifique se os serviços do SQL Server Services estão funcionando bem ou não.
  2. Verifique também se está funcionando em boas condições o SQL Server (MSSQLSERVER).
  3. Verifique também se o navegador do SQL Server está funcionando bem.
  4. Reinicie o SQL Server (MSSQLSERVER)

e consertou.

Murat
fonte
3
Obrigado por isso! O Navegador do SQL Server foi desativado, portanto, isso foi corrigido para mim!
Sam
2

Tente os seguintes passos:

  1. Abra a janela Serviços (abra "caixa de execução" e digite services.msc).

  2. Procurando serviços SQL (com prefixo SQL).

  3. Inicie-os (se não for possível iniciar. Vá para a etapa 4).

  4. Clique com o botão direito em cada serviço -> Propriedades -> Altere para a guia "Logon" -> escolha logon como "Local ..." -> 0K. Em seguida, inicie os serviços SQL novamente.

Experimente o Open SQL e conecte o banco de dados.

Harry Ho
fonte
2

Você provavelmente encontrará que o nome do seu banco de dados não está correto, verá o nome do servidor no VS como "DESKTOP-0I14BKI", mas se você abrir o SSMS, verá DESKTOP-0I14BKI \ SQLBLAHBLAH , basta adicionar " \ SQLBLAHBLAH " (nome da instância ) ao seu "nome do servidor" nas propriedades de conexão do VS.

Você verá : insira a descrição da imagem aqui

Consertar: insira a descrição da imagem aqui

Scott
fonte
2

TL; DR; Sua instância do SQL Server está usando portas dinâmicas que não estão funcionando. Force o SQL Server a usar a porta estática # 1433.

Detalhes completos : Primeiro de tudo, esse problema é mais provável se você tiver uma combinação de instância padrão e nomeada ou apenas instâncias nomeadas (que foi o meu caso).

Conceito chave : Cada instância do Microsoft SQL Server instalada em um computador usa uma porta diferente para atender às solicitações de conexão recebidas. A instância padrão do SQL Server usa a porta nº 1433. À medida que você instala instâncias nomeadas, elas começam a usar portas dinâmicas, decididas no momento da inicialização do serviço do Windows correspondente à instância nomeada do SQL Server.

Meu código estava falhando (com o código de erro 40) ao conectar-se à única instância nomeada do SQL Server que eu tinha na minha VM. Você pode tentar abaixo as possíveis soluções:

Solução 1 : o código do cliente que tenta se conectar à instância do SQL Server recebe ajuda do serviço de navegador do SQL Server para descobrir o número da porta na qual a instância nomeada está escutando as conexões de entrada. Verifique se o serviço do navegador SQL está sendo executado no seu computador.

Solução 2 : verifique o número da porta (na cor amarela) que sua instância nomeada do SQL Server está usando no gerenciador de configuração do SQL Server, conforme mostrado na captura instantânea abaixo:

insira a descrição da imagem aqui

Use esse número de porta explicitamente na cadeia de conexão ou com o sqlcmdmostrado abaixo:

sqlcmd -s mymachinename,11380 -i deleteDB.sql -o SQLDelete.txt

Solução 3 : force a instância nomeada a usar a porta 1433, que é usada por instância padrão. Lembre-se de que isso funcionará apenas se você não tiver nenhuma instância padrão do SQL Server no seu computador, pois a instância padrão do SQL Server já estaria usando a porta # 1433. O mesmo número de porta não pode ser usado por dois serviços diferentes do Windows.

Marque o TCP Dynamic portscampo em branco e o TCP Portcampo 1433.

insira a descrição da imagem aqui

Mude o número da porta na sua cadeia de conexão, como mostrado abaixo:

sqlcmd -s mymachinename\instanceName -i deleteDB.sql -o SQLDelete.txt

OU

sqlcmd -s mymachinename,1433 -i deleteDB.sql -o SQLDelete.txt

Nota : Toda alteração nas configurações de TCP / IP requer a reinicialização do serviço correspondente do Windows.

Curiosamente, depois de resolver o erro, quando voltei à configuração de porta dinâmica para reproduzir o mesmo erro, isso não aconteceu. Não sei por que.

Leia abaixo os tópicos interessantes para saber mais sobre as portas dinâmicas do SQL Server:

Como configurar a porta do SQL Server em várias instâncias?

Quando uma porta dinâmica é "dinâmica"?

Quando usar uma porta dinâmica TCP e quando Porta TCP?

Eu tenho pistas para a solução do meu problema neste blog.

RBT
fonte
1

No meu caso, abri o SQL Server Management Studio e procurei o SQLEXPRESS no meu mecanismo de banco de dados. Tinha duas instâncias e eu selecionei a correta.

insira a descrição da imagem aqui

DivyaMenon
fonte
1

Se você estiver trabalhando com o núcleo do Asp.net e usando appsettings.json, escreva o servidor como localhost e depois grave o nome da instância sql para o pipe nomeado ativado como este

  "ConnectionString": {
    "dewDB": "server=localhost\\dewelopersql;database=dewdb;User ID=sa;password=XXXXX",
  },
Hamit YILDIRIM
fonte
1

Solução muito simples

use (local)\InstanceName é isso. funcionou para mim.

ProgrammingNinja
fonte
1

Se você tentou reiniciar o serviço MSSQLSERVER e não funcionou, isso pode ser uma solução:

Se você estiver usando SQLExpress, o nome do servidor deve ser o seguinte ComputerName \ SQLExpress. No entanto, para SQLDeveloper, você não precisa corrigir o SQLDeveloper após o seu ComputerName.

Asim Okby
fonte
0

Depois de seguir todas as etapas mencionadas aqui , se ele ainda não se conectar, tente adicionar o DNS com o endereço IP no arquivo hosts na pasta etc. Adicionar um endereço IP em vez do nome DNS na cadeia de conexão deve ser uma solução temporária para verificar se a conexão realmente funciona.

user3307830
fonte
0

Tentei usar o endereço IP local para conectar-se e também um público. Eu tentei:

Sim, o site pode se comunicar com o servidor pipes nomeados / TCP está ativado. Conexões remotas são permitidas. O Firewall do Windows está desativado Criou uma exceção para a porta 1433 no Firewall do Windows. Habilitou tudo no SQL Server Configuration Manager.

eu assegurei e fiz o acima também, e eu só quero compartilhar que o DOUBLE BACKSLASH

oBuilder.DataSource = "SPECIFICPCNAME \ SQLEXPRESS";

O uso de SINGLE BACKSLASH resultou em um erro de construção, ou seja: Erro 1 Sequência de escape não reconhecida

Espero que isso ajude o próximo cara - sacrifiquei o jantar, o lanche da meia-noite e a NBA destaca o tempo para resolver isso (vergonha)

Obrigado a [Tamizh venthan] ^ _ ^

Ronan Masangcay
fonte
0

Habilite o TCP / IP, Protocolo Canalizado, indo para Gerenciamento do Computador -> SQL e Serviços, verifique se o Serviço está Ligado. Enbale a porta no Firewall. Tente fazer login através do prompt de comando -> como administrador; por último, o nome do usuário deve ser (local) \ SQLEXPRESS. Espero que isto ajude.

VaishB
fonte
0

Abra o Gerenciador de Configuração do SQL Server

  1. Selecione Serviços do SQL Server à direita.
  2. Encontre seu servidor a partir da direita e acesse suas propriedades (com o botão direito)
  3. Altere o método de logon para Sistema local.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

zapoo
fonte
0

Eu tive o mesmo problema e resolvi o problema desativando meu firewall (ESET).

O primeiro passo para resolver esse problema deve ser tentar executar ping no seu próprio computador de outro computador. Se você tiver um firewall ativado, poderá não conseguir executar o ping sozinho. Eu tentei executar o ping no meu próprio PC e o ping falhou (não obtive resposta do servidor)

Uğur Gümüşhan
fonte
0

Sugeri as etapas abaixo para resolver seu problema Como corrigir o erro 'Provedor de pipes nomeados, erro 40 - Não foi possível abrir uma conexão com o' SQL Server '

  1. Verifique se há bons serviços dos Serviços do SQL Server ou não.
  2. Verifique também se está em boas condições o SQL Server (MSSQLSERVER) .
  3. Verifique também se o navegador do SQL Server está funcionando bem .
  4. Exclua todos os aliases anteriores , agora crie novos aliases conforme seus requisitos.
  5. Agora verifique o funcionamento da porta padrão do SQL Server 1433
  6. Em seguida, clique em Protocolos de clientes, em seguida, clique em TCP / IP , agora clique com o botão direito do mouse, abra a propriedade, aqui você pode garantir que seu trabalho funcione bem como a porta padrão SQL 1433 .
  7. Abra o SQL Server Management Studio , clique com o botão direito do mouse, clique na opção " Propriedade ", clique na guia Conexões e , finalmente, marque Permitir conexões remotas neste servidor .
  8. Verifique o funcionamento correto ou o seu host IP de ping .
Anjan Kant
fonte
0

Eu estava tentando adicionar uma nova conexão no VS2015. Nenhuma das sugestões aqui funcionou. Suspeitando de algum tipo de bug no assistente, especialmente porque o SSMS conseguiu se conectar muito bem, decidi tentar enganá-lo. Funcionou!

  1. Em vez de adicionar a conexão, use "Criar novo banco de dados do SQL Server". Digite o nome do servidor e um nome aleatório para o novo banco de dados, por exemplo, "teste".

  2. Supondo que isso seja bem-sucedido, abra o Server Explorer no VS, localize a conexão no Data Connections, clique com o botão direito do mouse e selecione Modify Connection.

  3. Altere "test" (da etapa 1) para o nome do banco de dados existente ao qual você deseja se conectar. Clique em "Testar conexão". Desta vez, deve funcionar!

  4. Exclua o banco de dados temporário que você criou na etapa 1.

Roman Starkov
fonte
0

Eu tenho mais uma solução, eu acho. Recentemente, mudei o nome do meu computador, depois que não consegui me conectar ainda depois de tentar todos os métodos acima. Alterei o nome do servidor. Nome do servidor => (procure mais) => no mecanismo de banco de dados, um novo servidor foi encontrado igual ao novo nome dos computadores. Isso funcionou, e a vida é boa novamente.

tauqr_ahmd
fonte
0

Eu lutei durante muito tempo com este antes de perceber meu erro - usei vírgulas em vez de ponto e vírgula na string de conexão

Andy
fonte
0

Eu tive esse problema, mas nenhuma das sugestões acima o corrigiu.

Eu estava vendo esse problema quando implantei meu site no IIS. A correção foi entrar em configurações avançadas no pool de aplicativos padrão e alterar a propriedade de identidade do padrão para Administrador.

Ste Brown
fonte
0

Para mim, foi um problema de firewall.

Primeiro você precisa adicionar a porta (como 1444 e talvez 1434), mas também

C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe

e

%ProgramFiles%\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Binn\SQLAGENT.EXE

A segunda vez que obtive esse problema foi quando voltei ao firewall, os caminhos não estavam corretos e eu precisava atualizar o formulário 12 para 13! Basta clicar em navegar na guia Programas e Serviços para ajudar a perceber isso.

Por fim, tente executar o comando

EXEC xp_readerrorlog 0,1, "não foi possível registrar o Nome Principal do Serviço", Nulo

Para mim, ele retornou o motivo do erro

Dave
fonte
0

Tentei praticamente tudo nesta página, mas eu tinha alguns problemas subjacentes que eram realmente o que precisava ser resolvido. Não consegui fazer certas coisas, como abrir o SQL Server Configuration Manager, que acabou sendo arquivos corrompidos / ausentes do provedor WMI.

Existem várias maneiras tediosas de resolver esses problemas de acordo com o que eu li, mas a ferramenta tweaking.com conseguiu remover e substituir / reparar meus arquivos do provedor WMI (Windows Management Instrumentation).

Eu costumava fazer reparos no computador e, no geral, a ferramenta tweaking.com realmente me impressionou, e isso foi sugerido em uma das páginas do fórum de erros do WMI que visitei.

Depois de corrigir esse problema, consegui me conectar ao meu banco de dados SQL, local e remotamente.

Espero que isso ajude alguém.

Elon Zito
fonte