Не удается подключиться к 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:
- Откройте диспетчер конфигурации SQL Server для версии приложения -
cmd.exe /c start C:\Windows\SysWOW64\SQLServerManager14.msc
- SS2017, SQLServerManager13.msc - SS2016, SQLServerManager12.msc - SS2014. Оснастки также находятся в System32. - На панели сведений для служб SQL Server должен отображаться SQL Server (SQLEXPRESS).
- для конфигурации сети SQL Server-> Протоколы для SQLEXPrESS убедитесь, что на панели сведений отображается строка TCP/IP как активированная.
- В TCP/IP-> Свойства->IP-адреса (щелкните правой кнопкой мыши TCP/IP). Установите IPAll->TCP Dynamic Ports на пустое значение, а IPAll->TCP Port на 1433 (или другое, если вы изменили конфигурацию SS).
- Подтвердите все и перезапустите 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) - краткое изложение упомянутого выше поста:
- Бежать
SQLLocalDB -s MSSQLLocalDB
- В правой панели Rider выберите База данных ->+-> Источник данных-> SQL Server.
- Выберите драйвер в качестве сервера SQL (Tds)
- Выберите LocalDB из выпадающего списка справа от URL.
- Выберите MSSQLLocalDB (или другой доступный экземпляр) из раскрывающегося списка.
- При желании укажите базу данных в текстовом поле.
- Укажите учетные данные, если не используете сквозную аутентификацию
- Сделать тест соединения и т. Д.
Транспорт - это именованная труба. Другой конец обеспечивается процессом SQLLocalDB.exe. Если Rider остается не подключенным в течение более нескольких минут, SQLLocalDB.exe завершит работу, и вам нужно будет повторно запустить его при следующем использовании Rider. Это можно решить с помощью этого решения.
Протестировано с Rider 2018.2.3.