Не удается подключиться к Microsoft SQL Server с помощью IntelliJ/Rider

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

[08S01] Соединение TCP/IP с хостом myhost, порт 1433, не удалось. Ошибка: "Тайм-аут соединения: дополнительная информация отсутствует. Проверьте свойства соединения. Убедитесь, что экземпляр SQL Server запущен на хосте и принимает соединения TCP/IP на порту. Убедитесь, что соединения TCP с портом не заблокированы. через брандмауэр."

Я перепробовал все возможные решения, которые мог найти в Интернете. Я изменил порты в диспетчере конфигурации на 1433, проверил, заблокирован ли порт брандмауэром (это не так), включил SQL Server Browse, попытался использовать integratedSecurity = true int строка подключения и ничего не работает.

Буду признателен за любую помощь, спасибо

0 ответов

Наиболее вероятная причина сбоя соединения объясняется в 3-м комментарии (Юра Гороховский) по этому вопросу и фактически рассматривается в ОП. Повторим, подробности здесь.

Моя проблема была другой и вызвана путаницей из-за (localdb). Но перед этим, поскольку это первый фактический ответ, я кратко изложу шаги в посте Jetbrains, на которые ссылается Юра, и рассмотрю наиболее распространенную проблему.

SQL Server (SQLEXPRESS) требует, чтобы для доступа Rider (и предположительно других продуктов Jetbrains, таких как Intellij и фактически любой процесс, использующий JDBC) был включен протокол TCP/IP. Требуются следующие шаги:

Настройка SQL Server для подключений Rider:

  1. Откройте диспетчер конфигурации SQL Server для версии приложения - cmd.exe /c start C:\Windows\SysWOW64\SQLServerManager14.msc - SS2017, SQLServerManager13.msc - SS2016, SQLServerManager12.msc - SS2014. Оснастки также находятся в System32.
  2. На панели сведений для служб SQL Server должен отображаться SQL Server (SQLEXPRESS).
  3. для конфигурации сети SQL Server-> Протоколы для SQLEXPrESS убедитесь, что на панели сведений отображается строка TCP/IP как активированная.
  4. В TCP/IP-> Свойства->IP-адреса (щелкните правой кнопкой мыши TCP/IP). Установите IPAll->TCP Dynamic Ports на пустое значение, а IPAll->TCP Port на 1433 (или другое, если вы изменили конфигурацию SS).
  5. Подтвердите все и перезапустите SQL Server (SQLEXPRESS) (щелкните правой кнопкой мыши Службы SQL Server -> SQL Server (SQLEXPrESS)), и вы сможете подключиться с помощью URL-адреса. jdbc:jtds:sqlserver://localhost;instance=SQLEXPRESS, Вы также можете использовать драйвер Tds.

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

Обратите внимание, что могут возникнуть проблемы, если вы используете порт, отличный от порта по умолчанию 1433. (В настоящее время я не могу найти документы.) Если вы укажете номер порта на странице соединения Rider, то экземпляр будет проигнорирован, и соединение будет сделано в экземпляр по умолчанию. Экземпляр, к которому вы подключаетесь из Rider, должен быть либо установлен по умолчанию, либо иметь номер порта 1433.

Моя проблема: я включил TCP/IP на ранней стадии, но столкнулся с проблемой, заключающейся в том, что я мог подключиться только к некоторому экземпляру по умолчанию, о котором ничего не знаю. Это было вызвано тем, что я не смог достаточно различить (localdb) и собственно SQL Server, не был уверен, был ли SQLEXPRESS отдельным продуктом или экземпляром SS, и не был знаком с оснасткой SS Configuration. Это также представится неосторожным просто невозможностью подключения - если у вас не установлено SQLEXPRESS или другой SS.

Эта статья InfoQ суммирует роль (localdb). Это своего рода облегченная версия SQL-сервера, но без администрирования процессов и не использующая такие же возможности обнаружения и транспорта. Он не будет отображаться в оснастке конфигурации SS.

После того, как вы взяли на вооружение различие между (localdb)/SQLLocalDB.exe и другими разновидностями SS, такими как SQLEXPRESS, соединение с Rider довольно простое и здесь описано.

Connectiong Rider to (localdb) - краткое изложение упомянутого выше поста:

  1. Бежать SQLLocalDB -s MSSQLLocalDB
  2. В правой панели Rider выберите База данных ->+-> Источник данных-> SQL Server.
  3. Выберите драйвер в качестве сервера SQL (Tds)
  4. Выберите LocalDB из выпадающего списка справа от URL.
  5. Выберите MSSQLLocalDB (или другой доступный экземпляр) из раскрывающегося списка.
  6. При желании укажите базу данных в текстовом поле.
  7. Укажите учетные данные, если не используете сквозную аутентификацию
  8. Сделать тест соединения и т. Д.

Транспорт - это именованная труба. Другой конец обеспечивается процессом SQLLocalDB.exe. Если Rider остается не подключенным в течение более нескольких минут, SQLLocalDB.exe завершит работу, и вам нужно будет повторно запустить его при следующем использовании Rider. Это можно решить с помощью этого решения.

Протестировано с Rider 2018.2.3.

Другие вопросы по тегам