Не удается подключиться к SQL Server 2008 - похоже, проблема с общей памятью - PullRequest
2 голосов
/ 23 марта 2010

Я не могу подключиться к своему локальному экземпляру SQL Server 2008 Express с помощью SQL Server Management Studio.

Я полагаю, что проблема связана с изменением, которое я внес в протоколы соединения. До появления ошибки у меня была включена общая память и отключены именованные каналы и TCP / IP. Затем я включил именованные каналы и TCP / IP, и именно тогда я начал испытывать проблему.

Когда я пытаюсь подключиться к серверу с помощью SSMS (либо с помощью входа в систему с помощью sysadmin на моем сервере SQL, либо с помощью аутентификации Windows), я получаю следующее сообщение об ошибке:

Соединение с сервером было успешно установлено, но во время входа в систему произошла ошибка. (поставщик: поставщик именованных каналов, ошибка: 0 - на другом конце канала нет процесса.) (Microsoft SQL Server, ошибка: 233)

Почему возвращается ошибка именованных каналов? Почему бы не использовать только общую память, так как она имеет более высокий приоритет в списке протоколов соединения? Похоже, он не слушает Shared Memory по какой-то причине?

Когда я включаю Named Pipes и пытаюсь подключиться, я получаю то же сообщение об ошибке.

Моя учетная запись Windows не имеет прав администратора на моем компьютере - возможно, это как-то меняет ситуацию (как показывают некоторые обсуждения в этом посте о разделе реестра «SuperSocketNetLib \ Lpc») предложить).

Ответы [ 4 ]

4 голосов
/ 14 февраля 2012

Была такая же проблема. Вот что решило это для меня:

  1. Открыть SQL Management Studio
  2. Подключено через учетную запись администратора, которую я использовал для настройки экземпляра
  3. Выбран сервер в Обозревателе объектов
  4. Свойства правой кнопки мыши
  5. Свойства сервера открываются
  6. Перейти к безопасности
  7. Изменен режим аутентификации Windows на SQL Server и режим аутентификации Windows
3 голосов
/ 27 ноября 2011

Я сделал все, чему учит Google, и не могу успешно подключиться к TCP / IP. Затем я делаю эти шаги, чтобы заставить его работать на моем домашнем компьютере:

шаг 1. Включите TCP / IP в конфигурации сети SQL Server для вашего экземпляра БД.
Шаг 2. Выберите свойства TCP / IP и перейдите на вкладку IP-адреса.
Шаг 3. Неактивны все IP-адреса, кроме 127.0.0.1.
Шаг 4. Установите для TCP-порта значение 1433 в 127.0.0.1 и IPALL.
Шаг 5. Перезапустите службу sql server.
Шаг 6. Подключите его к TCP / IP, используя «127.0.0.1 \ SQLEXPRESS, 1433» в бесплатной программе Toad for SQL Server, это работает!
Шаг 7. Подключите его к той же строке сервера в php, он работает!
Шаг 8. Если вам нужно прочитать китайскую строку в программу php, как я, скачайте драйвер MS SQL Server для PHP ( Поверьте, даже не пытайтесь использовать php_mssql, это сведет вас с ума с китайскими данными ). Для PHP 5.2x используйте версию ts_VC6. Для 5.3X используйте версию ts_VC9 (особенно в Win7).
Шаг 9. Отредактируйте php.ini (для Appserv он находится в C: \ Windows7; для WAMPserver 2.2 - в c: \ wamp \ bin \ php \ php5.3.8), найдите extension = ... группы строк. Добавьте 'extension = конкретное имя файла драйвера dll sql erver, которое вы будете использовать.
Шаг 10. Разархивируйте файл, загруженный на шаге 8, и скопируйте конкретную dll (или скопируйте все) в каталог расширений php (вы можете найти его в строке extension_dir = ... php.ini). Для Appserv лучше скопировать его также в c: \ windows \ system32 (не спрашивайте меня, почему?).
Шаг 11. Перезапустите службу Apache в Appserv или перезапустите Wampserver.

Теперь вы можете использовать TCP / IP для подключения к SQL Server 2008 и правильно читать строку utf-8 (в моем случае) в программе php.

Надеюсь, это поможет тем, кто отчаянно ищет это решение, как и я.

0 голосов
/ 04 июня 2010

У меня была точно такая же проблема. Я бы попытался подключиться как ASHWHVM004\SQLEXPRESS, и я получил бы сообщение об ошибке подключения. Если бы я явно запросил Shared Memory, он бы работал нормально. Shared Memory, Named Pipes и TCP/IP все были включены.

Я, казалось бы, "исправил" это, выполнив следующее:

  1. Я открыл Sql Server Configuration Manager и развернул до SQL Server Network Configuration> Protocols for SQLEXPRESS.
  2. Я отключил все, кроме Shared Memory.
  3. Я перезапустил экземпляр службы SQLEXPRESS и попытался подключиться, как и раньше. Работало нормально.
  4. Я включил TCP/IP и Named Pipes, перезапустил экземпляр службы SQLEXPRESS и попытался подключиться, как и раньше. Работало нормально.

Либо я сделал что-то еще во время этого процесса, чтобы исправить это, что я не помню, либо из-за деактивации и повторного включения какой-то кусочек немного перевернулся на правильный путь.

Удачи!

0 голосов
/ 23 марта 2010

Поскольку теперь вы не можете подключиться к SQL Server, чтобы отключить именованные каналы, вы должны принудительно установить TCPIP-соединение.

Вот как:

нажмите START / RUN, затем запустите утилиту cliconfg.exe. При этом создайте псевдоним для вашего сервера (вы можете использовать то же имя) и установите значение по умолчанию для TCPIP

Это должно заставить TCPIP использовать именованные каналы и, возможно, подключить вас.

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

...