Не удается подключиться к базе данных, используя localhost \ sqlserver - PullRequest
8 голосов
/ 04 июля 2011

Я знаю, что мы должны знать о таких фразах, но внезапно все мои соединения с localhost\sqlexpress перестали работать. Поскольку .\sqlexpress и (local)\sqlexpress работают, это не будет иметь большого значения, если бы не тот факт, что я работаю над командным проектом, в котором все строки подключения определены в прежнем формате. И, очевидно, мне трудно принять, что это больше не работает, поэтому я потратил несколько часов на анализ и переустановку нескольких версий SQL Server безрезультатно. (И на пути к разрушению проектов БД в VS2010, поэтому мне нужно было также переустановить ...).

Но вот детали. Как уже упоминалось, я не мог подключиться к localhost\sqlexpress, но к .\sqlexpress. Те же симптомы при использовании диспетчера SQL Server и строк подключения для развертывания и запуска служб wcf. Как ни странно, разрешение экземпляра по умолчанию как localhost работает.

Перво-наперво, да, SQL Server работает, и просто чтобы убедиться, что я включил TCP / IP и установил фиксированный порт на 1433, хотя он работает на компьютере моих коллег с отключенным TCP / IP. (Где-то по пути я читал, что localhost может быть решен с использованием разделяемой памяти при использовании собственного клиента SQL, поэтому я предполагаю, что именно так происходит в его системе.)

Установкой является только один экземпляр SQL Server Express 2008 R2 и VS2010 в Windows 7 Professional.

При запуске Sql express журнал ошибок говорит:

Server is listening on [ 'any' <ipv6> 1433].
Server is listening on [ 'any' <ipv4> 1433].

Netstat говорит (выдержка):

TCP    0.0.0.0:1433           Machinenename:0             LISTENING
TCP    [::]:1433              Machinenename:0             LISTENING

Отмечу отсутствие 127.0.0.1:1433 и какого-либо UDP на порту 1433

Для диагностики проблемы я использую sqlcmd, чтобы выяснить, какой транспорт используется:

1. локальный \ SQLEXPRESS

sqlcmd -Slocalhost\sqlexpress  -> Shared memory
sqlcmd -Stcp:localhost\sqlexpress ->  SQL Server Network Interfaces: Error Locating Server/Instance Specified

Невозможно подключиться к localhost \ sqlexpress из SQL Server Management Studio, даже если в качестве протокола указана общая память

2. * локальный 1038 *

sqlcmd -Slocalhost -> TCP
sqlcmd -Stcp:localhost -> TCP

Можно подключиться к локальному хосту из SQL Server Management Studio

3. (Локальный) \ SQLEXPRESS

sqlcmd -S(local)\sqlexpress  -> Shared memory
sqlcmd -Stcp:(local)\sqlexpress  ->  SQL Server Network Interfaces: Error Locating Server/Instance Specified

Может подключиться к (локальному) \ sqlexpress из SQL Server Management Studio

Так что я здесь потерян. Любая помощь высоко ценится.

Ответы [ 3 ]

5 голосов
/ 18 июля 2013

в MS SQL, перейдите в Инструменты конфигурации -> Диспетчер конфигурации SQL Server. Выберите «Конфигурация сети SQL Server» -> В правом окне выберите протокол, включите tcp / ip и перезапустите службы в services.msc, затем попробуйте подключиться к localhost \SQLEXPRESS

2 голосов
/ 07 июля 2011

Вы проверили, включена ли общая память в диспетчере конфигурации SQL Server в разделе Настройка сети SQL Server | Протоколы?

Когда я отключаю протокол «Общая память», время ожидания «sqlcmd -S. \ Sqlexpress» истекает. Включение делает команду работать нормально.

Еще одна мысль ... Порт 1434 используется для службы обнаружения SQL Server, которая позволяет таким программам, как SQL Management Studio и т.п., обнаруживать, что SQL Server работает на компьютере. Еще одна вещь для расследования.

0 голосов
/ 18 марта 2015

У нас была эта проблема. По какой-то причине на этой машине был создан псевдоним, который направлял имя используемого нами сервера (localhost \ SQL2008_R2) на сервер, который больше не существует.

Как только мы удалили псевдоним, все заработало.

Псевдонимы - это узел дерева в диспетчере конфигурации SQL Server.

SQL Server Configuration Manager Alias Node

...