none
Долгое подключение PHP к SQL 2014 RRS feed

  • Вопрос

  • Здравствуйте, столкнулся с такой проблемой. Опишу что есть.

    Есть локально установленный и настроенный web сервер nginx + php 5.5.9. Работает связка как положено.

    Для разработок необходим SQL сервер, раньше пользовался 2008го года, сейчас решил перейти на самый новый Microsoft SQL Server 2014 Express. Установил, восстановил базы данных через SQL Management Studio. Но, при попытке подключиться к SQL с сайта, все плохо. Долго все висит и в конце концов ничего. Даже никакой ошибки подключения не возвращается, что очень странно. Повторю, что раньше все прекрасно работало. Вот пример подключения:

    odbc_connect("Driver={SQL Server};Server=127.0.0.1;Database=$database;", $user, $password)

    Все находится локально на одном компьютере. Для читоты эксперимента отключил брандмауэр, чтоб никакие соединения не блокировались.

    Операционная система Windows 8.2 Professional. Все обновления установлены.

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

    Если нужны еще какие-то данные, то я предоставлю.


    • Изменено Profesor08 22 апреля 2014 г. 4:48
    22 апреля 2014 г. 4:44

Ответы

  • >>и через Management Studio оба способа аутентификации работают прекрасно

    тогда резонно сделать вывод, что проблема не на стороне сервера, а в вашем клиентском приложении...

    через SSMS, когда подключаетесь под скулёвой учёткой, вы указываете туже, что и в вашем приложении?

    а вообще вот, пройдите по пунктам: http://www.sql.ru/faq/faq_topic.aspx?fid=564


    http://www.t-sql.ru

    23 апреля 2014 г. 2:41
    Отвечающий
  • 1) Ознакомьтесь для начала с предыдущими сообщениями.

    2) Ни одно из выше-предложенных предложений ничем не подкреплено.

    Озвучу решение проблемы:

    1. Загружаем диспетчер конфигураций
    2. Открываем: Сетевая конфигурация SQL -> Протоколы для SQLEXPRESS (это имя экземпляра SQL)
    3. TCP/IP по умолчанию почему-то выключен. Его надо включить и при желании указать нужный порт
    4. Перезагружаем службу SQL
    5. Все

    23 апреля 2014 г. 15:05

Все ответы

  • 1) Чудес не бывает

    2) Идёт ли подключение из SSMS?

    3) А вы вообще включили смешанную аутентификацию? Она по умолчанию выключена...

    4) Вы перенесли УЗ под которой пытаетесь подключиться?

    5) Что в логах?


    http://www.t-sql.ru

    22 апреля 2014 г. 5:08
    Отвечающий
  • 1) что не поддается осмыслению - чудо.. Но речь не о чудесах.

    2) незнаю о чем вы

    3) само собой, и через Management Studio оба способа аутентификации работают прекрасно

    4) незнаю о чем вы, ничего не переносилось. установка sql произведена на чистую операционную систему. вэб сервер работает должным образом.

    5) логи php и вэб сервера чисты. как указано выше, sql не возвращает никаких ошибок. По поведению, php пытается подключиться некоторое время, но безрезультатно. 

    Еще выяснилось:

    Неизвестно под каким портом работает служба. Стандартный 1433, но нигде не отображается. Указал вручную в сетевой конфигурации порт 1433. И ничего не изменилось после перезапуска. Даже через telnet: open 127.0.0.1 1433 выдает, что нельзя подключится.

    netstat не выдает в листинге процесс sqlservr.exe
    • Изменено Profesor08 22 апреля 2014 г. 8:56
    22 апреля 2014 г. 8:00
  • >>и через Management Studio оба способа аутентификации работают прекрасно

    тогда резонно сделать вывод, что проблема не на стороне сервера, а в вашем клиентском приложении...

    через SSMS, когда подключаетесь под скулёвой учёткой, вы указываете туже, что и в вашем приложении?

    а вообще вот, пройдите по пунктам: http://www.sql.ru/faq/faq_topic.aspx?fid=564


    http://www.t-sql.ru

    23 апреля 2014 г. 2:41
    Отвечающий
  • 1) Ознакомьтесь для начала с предыдущими сообщениями.

    2) Ни одно из выше-предложенных предложений ничем не подкреплено.

    Озвучу решение проблемы:

    1. Загружаем диспетчер конфигураций
    2. Открываем: Сетевая конфигурация SQL -> Протоколы для SQLEXPRESS (это имя экземпляра SQL)
    3. TCP/IP по умолчанию почему-то выключен. Его надо включить и при желании указать нужный порт
    4. Перезагружаем службу SQL
    5. Все

    23 апреля 2014 г. 15:05
  • TCP/IP соединение по умолчанию выключено начиная на сколько я помню с SQL Server 2005 в целях безопасности.

    Если открытие данного порта нежелательно то можно так же использовать другую строку соединения, например в формате "Server=(LocalDB)\vXX)"

    http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx


    This posting is provided "AS IS" with no warranties, and confers no rights.

    23 апреля 2014 г. 16:10
    Модератор
  • В SQL Server 2008 R2 TCP/IP соединения были включены. И если это вредит безопасности, то поможет только одно - выдернуть сетевой кабель.
    23 апреля 2014 г. 22:22
  • Честно говоря не помню как в не Express версиях, у них совсем другое назначение и они обычно используются удаленно.

    В Express по умолчанию TCP/IP соединения запрещены (2005 и старше). Можно разрешить либо при установке либо через манеджер:

    http://technet.microsoft.com/en-us/library/ms143446(v=sql.90).aspx

    http://technet.microsoft.com/en-us/library/ms165677(v=sql.90).aspx

    Дело в том что типично Express устанавливается другуми программами (т.е. пользователь компьютера может и не знать что он установлен) и используется локально. Кстати, это и ваш случай, можно просто использовать другую строку соединения.

    Про "выдергивание кабеля" - забыли о SQL Slammer? :)

    Ну а рассказывать что такое "attack surface" и зачем ее надо уменьшать я думаю и не требуется.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    24 апреля 2014 г. 2:08
    Модератор
  • Озвучу решение проблемы:



    По ссылке, которую я вам давал выше в том числе и проверка наличия протоколов

    http://www.t-sql.ru

    24 апреля 2014 г. 3:21
    Отвечающий