Как исправить ошибку «Поставщик именованных каналов», ошибка 40 - Не удалось открыть соединение с «SQL Server»? - PullRequest
129 голосов
/ 30 марта 2012

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

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

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

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

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

Ответы [ 30 ]

0 голосов
/ 14 февраля 2014

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

0 голосов
/ 11 ноября 2013

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

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

0 голосов
/ 03 марта 2015

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

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

enter image description here

enter image description here

0 голосов
/ 20 декабря 2014

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

0 голосов
/ 03 мая 2016

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

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

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

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

  2. Предполагая, что это успешно, откройте Server Explorer в VS, найдите соединение в Data Connections, щелкните его правой кнопкой мыши и выберите Modify Connection.

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

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

0 голосов
/ 13 марта 2019

открыть номер порта 1433 на вашем сервере для удаленного соединения sql

0 голосов
/ 02 декабря 2014

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

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

Я гарантировал и сделал вышеупомянутое, и я просто хочу поделиться, что ДВОЙНОЙ БАКЛАШ

oBuilder.DataSource = "SPECIFICPCNAME \ SQLEXPRESS";

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

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

Благодаря [Тамиж Вентхан] ^ _ ^

0 голосов
/ 13 апреля 2019

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?

Я получил сообщение о решении моей проблемы из этого блога.

0 голосов
/ 10 декабря 2015

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

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

...