Не удается подключиться к SQL Server 2008 — похоже на проблему с общей памятью

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

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

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

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

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

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

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


person Proposition Joe    schedule 23.03.2010    source источник
comment
SQL Server работает? Отключение именованных каналов и TCP/IP снова заставляет его работать?   -  person Paolo    schedule 23.03.2010
comment
Попробуйте перезапустить службу SQL Server?   -  person RobS    schedule 23.03.2010
comment
Боюсь, нет - отключение именованных каналов и TCP / IP и перезапуск службы SQL Server не имеет никакого значения - по-прежнему возникает та же ошибка.   -  person Proposition Joe    schedule 23.03.2010
comment
Что-нибудь хорошее в записях журнала событий?   -  person Raj More    schedule 23.03.2010
comment
вам может быть лучше на ServerFault.com   -  person Raj More    schedule 23.03.2010
comment
Не могу получить доступ к каталогу журналов, потому что у меня нет прав администратора... Наш ИТ-отдел FTW!!! Я попробую ServerFault, хотя...   -  person Proposition Joe    schedule 23.03.2010


Ответы (4)


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

  1. Откройте студию управления SQL
  2. Подключен через учетную запись администратора, которую я использовал для настройки экземпляра.
  3. Выбрал сервер из обозревателя объектов
  4. Свойства щелчка правой кнопкой мыши
  5. Откроются свойства сервера
  6. Перейти к безопасности
  7. Изменил его с режима проверки подлинности Windows на SQL Server и режим проверки подлинности Windows.
person Madsamuel    schedule 14.02.2012
comment
после прочтения многих возможных решений, касающихся именованных каналов, наконец, ваше решение помогло мне. Я не знал, что только WIM был установлен по умолчанию. (MS SQL 2012). Спасибо ! - person KarelG; 16.12.2013

Я сделал все, чему учит 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.
шаг 6. Подключите его к TCP/IP, используя '127.0.0.1\SQLEXPRESS,1433 ' в бесплатном программном обеспечении Toad для 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 (вы можете найти его в php. ini extension_dir=... строка). Для Appserv вам также лучше скопировать его в c:\windows\system32 (не спрашивайте меня, почему?).
шаг 11. перезапустите службу apache Appserv или перезапустите Wampserver.

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

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

person Scott Chu    schedule 27.11.2011
comment
добавление номера порта с , в конце имени сервера помогло мне. Спасибо. - person Toby Allen; 25.03.2012
comment
Это сработало для меня. Я мог бы добавить использование telnet на локальном компьютере, а удаленные компьютеры помогают определить, работает ли он не только удаленно или не работает локально (используя 127.0.0.1). команда: telnet <hostname or ip> 1433. Мне также пришлось запустить сценарий для включения портов сервера sql через брандмауэр: support.microsoft.com/kb/ 968872 - person sboisse; 14.08.2012

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

Вот как:

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

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

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

person Raj More    schedule 23.03.2010
comment
Я создал новый псевдоним, как вы предложили, с TCPIP в качестве выбранной сетевой библиотеки, но все равно не повезло. Я получаю сообщение об ошибке, которое предполагает, что он даже не может найти сервер: при установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен на разрешение удаленных подключений. (поставщик: поставщик TCP, ошибка: 0 — соединение не может быть установлено, так как целевая машина активно отказывается от него.) (Microsoft SQL Server, ошибка: 10061) - person Proposition Joe; 23.03.2010
comment
Кстати, при использовании инструмента cliconfg я заметил, что существующий псевдоним для сервера, который я успешно использовал до появления этих ошибок, имел сетевую библиотеку, настроенную на именованные каналы. Однако до того, как я включил именованные каналы (и устранил проблемы), я использовал только общую память. Очень странно, но, возможно, это объясняет, почему исходное сообщение об ошибке ориентировано на именованные каналы. - person Proposition Joe; 23.03.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 и попытался подключиться, как и раньше. Это работало нормально.

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

Удачи!

person Nicholas Piasecki    schedule 04.06.2010