Как исправить ошибку "Named Pipes Provider, ошибка 40 - Не удалось открыть соединение с" SQL Server "? - программирование

Как исправить ошибку "Named Pipes Provider, ошибка 40 - Не удалось открыть соединение с" SQL Server "?

Я не могу подключиться к моей базе данных с сайта. Я получаю эту ошибку:

Поставщик именованных труб, ошибка: 40 - Не удалось открыть соединение с SQL Server

Я попытался использовать локальный IP-адрес для подключения, а также для публичного. Я пробовал:

  • Да, сайт может связываться с сервером
  • Именованные каналы /TCP включены.
  • Разрешены удаленные подключения.
  • Брандмауэр Windows отключен.
  • Создал исключение для порта 1433 в брандмауэре Windows.
  • Включено все в диспетчере конфигурации SQL Server.

Что еще я могу сделать здесь?

4b9b3361

Ответ 1

Решение этой проблемы очень просто:

  • Перейдите на панель управления.
  • поиск служб.
  • Откройте окно локальных служб из результатов поиска
  • Перезапустите службу MSSQLSERVER.

Снимок экрана с шагами:

Screenshot of the steps

Ответ 2

И самое простое решение - проверьте, вернулась ли ваша черта...

Я потратил около часа, пытаясь выяснить, что случилось с SERVER/INSTANCENAME, когда все настроено правильно, именованные каналы, права доступа пользователя... и вдруг это меня поразило, это не косая черта, это обратная косая черта (\).

Ужас, позор...

Ответ 3

Это трехэтапный процесс после установки SQL Server:

  • Включить именованные каналы. SQL Config Manager → Сетевой Консорциум SQL Server → Протоколы → Именованные каналы → Щелкните правой кнопкой мыши → Перезапустить

named pipes enabled

  1. Перезагрузите сервер SQL Config Manager → Службы SQL Server → SQL Server (SQLEXPRESS) → Щелкните правой кнопкой мыши → Перезагрузить

  2. Используйте правильные имена серверов и экземпляров (оба необходимы!) Обычно это будет .\SQLEXPRESS, например, см. Скриншот из диалогового окна QueryExpress.

введите описание изображения здесь

Там у вас есть.

Ответ 4

Я только что установил разработчика SQL SERVER 2012. Когда я создавал свой первый пакет SSIS, я получил эту ошибку в трубке, когда пытался создать задачу подключения к данным в инструментах данных SQL Server 2012 в окне диспетчера подключений. Я решил с помощью поста выше.

Если вы выберите именованный экземпляр, и вы вызываете свой именованный экземпляр SSQDatabase1, а ваше имя ПК - PCX1. Вы должны ввести PCX1\SSQDatabase1, а не только SSQDatabase1 или вы получите сообщение об именованных каналах.

Ответ 5

Тема в MSDN Social, Re: поставщик именованных каналов, ошибка: 40 - Не удалось открыть соединение с SQL Server, имеется довольно приличный список возможных проблем, связанных с вашей ошибкой. Возможно, вы захотите узнать, может ли кто-то из них быть тем, что вы испытываете.

  • Неверная строка подключения, например, использование SqlExpress
  • Именованные каналы (NP) не были включены в экземпляре SQL
  • Удаленное соединение не было включено
  • Сервер не запущен или указывает на ненастоящий сервер в строке подключения
  • Другие причины, такие как неправильный контекст безопасности
  • Попробуйте базовые тесты соединения между двумя компьютерами, на которых вы работаете

Ответ 6

i Только что включенный TCP/IP, VIA, именованные каналы в диспетчере конфигурации сервера Sql, моя проблема решена, обратитесь к этому за дополнительной информацией Устранение именованных труб Ошибка 40

Ответ 7

Используйте СЕРВЕР\\ИМЯ ИНСТРУМЕНТА. Использование двойной обратной косой черты в моем проекте решило мою проблему.

Ответ 8

Спасибо Дамиану...

TCP/IP Именованные трубы ... оба включены

Web Config.... (для локального хоста)

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

Ответ 9

Имела ту же проблему. Прошло 6 часов, когда пришлось перенести некоторые серверы. Пробовал все предложения по этой теме и другим.

Решение было таким же простым, как перезагрузка сервера!

Ответ 10

в моем случае у меня был автономный сервер, я изменил порт по умолчанию порт сервера SQL Server 1433 в конфигурационном менеджере на некоторое количество и перезапустил службу службы sql, чтобы вступить в силу, я смог подключиться к серверу sql через студию управления если я вхожу на сервер. но я не смог подключиться к локальной машине через сервер sql, я получал ошибку:

При установлении соединения с SQL Server возникла связанная с сетью или конкретная ошибка экземпляра. Сервер не найден или не был доступен. Проверьте правильность имени экземпляра и

что SQL Server настроен для удаленного подключения. (поставщик: поставщик именованных труб, ошибка: 40 - не удалось открыть соединение с SQL Server) (Microsoft SQL Server, ошибка: 5)

Я проверил и проверил все ниже

-Имя подключений /TCP включен. Разрешены соединения. -Windows Firewall отключен -Создал исключение для portin брандмауэра Windows (это не было необходимо в моем случае, поскольку сервер находится в той же сети подсети). -Используйте все в диспетчере конфигурации SQL Server.

затем я восстановил номер порта до значения по умолчанию 1433 и перезапустил службу sql-сервера, и проблема была решена, и я могу подключить SQL-сервер из моей локальной студии управления.

Ответ 11

У меня такая же проблема. Я использую MSSQL Server Management Studio 2017 и решил эту проблему, выполнив следующие действия:

  1. Проверить работоспособность служб SQL Server Services или нет.
  2. Также проверьте работоспособность SQL Server (MSSQLSERVER).
  3. Также проверьте, нормально ли работает браузер SQL Server.
  4. Перезапустите SQL Server (MSSQLSERVER)

и исправил это.

Ответ 12

Попробуйте выполнить следующие действия:

  • Откройте окно "Открытые службы" (откройте "run box" и введите services.msc).

  • Поиск служб SQL (с префиксом SQL).

  • Запустите их (если не удается запустить. Перейти к шагу 4).

  • Right_click для каждой службы → Свойства → Изменить на вкладку "Войти" → выбрать журнал как "Локальный..." → 0K. Затем запустите службы SQL снова.

Попробуйте открыть SQL и подключиться к базе данных.

Ответ 13

Скорее всего, вы обнаружите, что имя вашей БД неверно, вы увидите имя сервера в VS как "DESKTOP-0I14BKI", но если вы откроете SSMS, вы увидите DESKTOP-0I14BKI\SQLBLAHBLAH, просто добавьте "\ SQLBLAHBLAH" (имя экземпляра) ) к вашему "имени сервера" в свойствах подключения VS.

Вы увидите: enter image description here

Исправить: enter image description here

Ответ 14

Если вы работаете с ядром Asp.net и используете appsettings.json, тогда пишите сервер в качестве локального хоста и после записи имени экземпляра sql для включенного именованного канала, как это

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

Ответ 15

TL; DR; Ваш экземпляр SQL Server использует динамические порты, которые не работают. Заставить SQL Server использовать статический порт # 1433.

Полная информация: во-первых, эта проблема более вероятна, если у вас есть смесь по умолчанию и именованного экземпляра или только именованных экземпляров (что было моим случаем).

Основная концепция. Каждый экземпляр Microsoft SQL Server, установленный на компьютере, использует отдельный порт для прослушивания входящих запросов на подключение. Экземпляр SQL Server по умолчанию использует порт № 1433. Когда вы устанавливаете именованные экземпляры, они начинают использовать динамические порты, которые определяются во время запуска службы Windows, соответствующей именованному экземпляру SQL Server.

Мой код не смог (с кодом ошибки 40) подключиться к единственному именованному экземпляру SQL Server, который был у меня на виртуальной машине. Вы можете попробовать следующие возможные решения:

Решение № 1: Клиентский код, пытающийся подключиться к экземпляру SQL Server, получает справку из службы браузера SQL Server, чтобы выяснить номер порта, на котором ваш именованный экземпляр прослушивает входящие подключения. Убедитесь, что на вашем компьютере запущена служба браузера SQL.

Решение № 2. Проверьте номер порта (желтым цветом), который использует ваш именованный экземпляр SQL Server, из диспетчера конфигурации SQL Server, как показано на снимке ниже:

enter image description here

Используйте этот номер порта явно в строке подключения или с помощью sqlcmd показанного ниже:

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

Решение № 3: Принудительно ваш именованный экземпляр использовать порт № 1433, который используется экземпляром по умолчанию. Помните, что это будет работать, только если у вас нет экземпляра SQL Server по умолчанию на вашем компьютере, так как экземпляр SQL Server по умолчанию уже использует порт # 1433. Один и тот же номер порта не может использоваться двумя разными службами Windows.

Пометьте поле TCP Dynamic ports пустым, а поле TCP Port - 1433.

enter image description here

Измените номер порта в строке подключения, как показано ниже:

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

ИЛИ ЖЕ

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

Примечание. Каждое изменение настроек TCP/IP требует соответствующего перезапуска службы Windows.

Интересно, что после устранения ошибки, когда я вернулся к настройке динамического порта, чтобы воспроизвести ту же ошибку, тогда это не произошло. Не уверен почему.

Пожалуйста, прочитайте ниже интересные темы, чтобы узнать больше о динамических портах SQL Server:

Как настроить порт SQL Server на нескольких экземплярах?

Когда динамический порт является "динамическим"?

Когда использовать динамический порт TCP, а когда порт TCP?

Я получил приводит к решению моей проблемы из этого блога.

Ответ 16

Очень простое решение

используйте (local)\InstanceName что это. это сработало для меня.

Ответ 17

После выполнения всех шагов, упомянутых здесь, если он все еще не подключен, попробуйте добавить DNS с IP-адресом в файл hosts в папке etc. Добавление IP-адреса вместо имени DNS в строке подключения должно быть временным решением, чтобы проверить, действительно ли соединение работает.

Ответ 18

Я попытался использовать локальный IP-адрес для подключения, а также для публичного. Я пробовал:

Да, сайт может связываться с сервером. Именованные каналы /TCP - это включен. Удаленные подключения разрешены. Брандмауэр Windows отключен Создал исключение для порта 1433 в брандмауэре Windows. Включено все в диспетчере конфигурации SQL Server.

Я обеспечил и сделал все выше, и я просто хочу поделиться тем, что ДВОЙНАЯ РЕЗЕРВАЦИЯ

oBuilder.DataSource = "SPECIFICPCNAME\SQLEXPRESS";

Использование SINGLE BACKSLASH приводит к ошибке построения, т.е.: Ошибка 1 Неизвестная escape-последовательность

Я надеюсь, что это поможет следующему парню - я пожертвовал ужином, полуночной закуской и НБА осветил время, решая это (позор)

Благодаря [Tamizh venthan] ^ _ ^

Ответ 19

Включите TCP/Ip, Piped Protocol, перейдя в "Управление компьютером" → "SQL" и "Службы", убедитесь, что служба включена. Включите порт на брандмауэре. Попробуйте войти в систему через командную строку → в качестве администратора; последнее имя пользователя должен быть (локальным)\SQLEXPRESS. Надеюсь, это поможет.

Ответ 20

Откройте диспетчер конфигурации SQL Server

  • Выберите SQL Server Services справа.
  • Найдите свой сервер справа и перейдите к его свойствам (щелкните правой кнопкой мыши)
  • Изменить метод регистрации на локальную систему.

enter image description here

enter image description here

Ответ 21

У меня была такая же проблема и я решил проблему, отключив мой брандмауэр (ESET).

Первым шагом для решения этой проблемы должно стать попытку проверки вашего собственного компьютера с другого компьютера. Если у вас включен брандмауэр, возможно, вы не сможете выполнить ping. Я пробовал пинговать свой собственный компьютер, затем ping был провален (не получил ответа от сервера)

Ответ 22

Я пытался добавить новое соединение в VS2015. Ни одно из предложений здесь не работало. Подозревая какую-то ошибку в волшебнике, тем более, что SSMS смог подключиться просто отлично, я решил попробовать и обмануть его. Это сработало!

  • Вместо добавления соединения используйте "Создать новую базу данных SQL Server". Введите имя своего сервера и случайное имя для новой БД, например. "Тест".

  • Предполагая, что это удается, откройте Server Explorer в VS, найдите соединение в Data Connections, щелкните его правой кнопкой мыши и выберите "Изменить подключение".

  • Измените "тест" (с шага 1) на имя существующей базы данных, к которой вы хотите подключиться. Нажмите "Проверить соединение". На этот раз он должен работать!

  • Удалите временную базу данных, созданную на шаге 1.

Ответ 23

У меня есть еще одно решение, я думаю. Недавно я изменил имя своего компьютера, так что после того, как я попытался выполнить все вышеперечисленные методы, я не смог подключиться. Я изменил имя сервера.. Имя сервера = > (просмотреть больше) = > под движком базы данных, новый сервер был найден таким же, как новое имя компьютера. Это сработало, и жизнь снова хороша.

Ответ 24

Я много лет боролся с этим, прежде чем осознал свою ошибку - я использовал запятые вместо точек с запятой в строке подключения

Ответ 25

У меня была эта проблема, но ни одно из предложений не было исправлено.

Я видел эту проблему, когда я развернул свой сайт в IIS. Исправление заключалось в том, чтобы перейти к дополнительным настройкам против пула приложений по умолчанию и изменить свойство идентификации по умолчанию на "Администратор".

Ответ 26

В моем случае, Я открыл SQL Server Management Studio и искал SQLEXPRESS в своем ядре базы данных. У него было два экземпляра, и я выбрал правильный.

введите описание изображения здесь

Ответ 27

Для меня это проблема с брандмауэром.

Сначала вам нужно добавить порт (например, 1444 и, возможно, 1434), но также

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

и

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

Во второй раз, когда я получил эту проблему, когда я вернулся к брандмауэру, пути были неправильными, и мне нужно было обновить форму с 12 по 13! Просто щелкнув по экрану на вкладке "Программы и службы", вы поняли это.

Наконец, попробуйте запустить команду

EXEC xp_readerrorlog 0,1, "не удалось зарегистрировать имя участника службы", Null

Для меня он вернул причину ошибки

Ответ 28

Ниже предложены шаги для решения вашей проблемы. Как исправить ошибку "Поставщик именованных каналов, ошибка 40 - Не удалось открыть соединение с" SQL Server "

  1. Проверить работоспособность служб SQL Server Services или нет.
  2. Также проверьте работоспособность SQL Server (MSSQLSERVER).
  3. Также проверьте, нормально ли работает браузер SQL Server.
  4. Удалите все предыдущие псевдонимы, а теперь создайте новые псевдонимы в соответствии с вашими требованиями.
  5. Теперь проверьте работу SQL Server Default Port 1433
  6. Затем щелкните по Клиентским протоколам в инстанции, затем щелкните по TCP/IP, затем щелкните правой кнопкой мыши, откройте Свойство, здесь вы можете убедиться, что все работает нормально, порт по умолчанию SQL 1433.
  7. Откройте SQL Server Management Studio, затем щелкните правой кнопкой мыши, выберите параметр " Свойства ", затем перейдите на вкладку " Подключения " и, наконец, установите флажок " Разрешить удаленные подключения к этому серверу".
  8. Проверьте, правильно ли работает ваш Ping IP Host.

Ответ 29

Я попробовал почти все на этой странице, но у меня были некоторые проблемы, которые на самом деле нужно было решить. Я не смог сделать некоторые вещи, такие как открыть Диспетчер конфигурации SQL Server, который в конечном итоге был поврежден/пропал файлы поставщика WMI.

Есть много утомительных способов решить эту проблему в соответствии с тем, что я прочитал, но инструмент tweaking.com смог удалить и заменить/исправить мои файлы поставщика WMI (инструментария управления Windows).

Раньше я занимался ремонтом компьютеров, и в целом инструмент tweaking.com действительно произвел на меня впечатление, и это было предложено на одной из страниц форума ошибок WMI, на которую я зашел.

После устранения этой проблемы я смог подключиться к своей базе данных SQL как локально, так и удаленно.

Надеюсь, это кому-нибудь поможет.

Ответ 30

Откройте порт № 1433 на вашем сервере для удаленного подключения SQL.