Сетевые интерфейсы SQL, ошибка: 50 - Произошла ошибка времени выполнения локальной базы данных. Указанный экземпляр LocalDB не существует

РЕДАКТИРОВАТЬ: Одна важная деталь, которую я упустил изначально (потому что я не знал, что это важно), заключается в том, что мы использовали эти сайты в полном объеме IIS, а не из IIS Express.


Мы пытаемся настроить локальные среды разработки для Kentico CMS, которые добавят наши локальные машины в нашу текущую цепочку синхронизации Dev -> Staging -> Prod (так что мы закончим с Locals -> Dev -> Staging -> Прод).

Мы скопировали нашу Dev DB на наши локальные машины в экземпляр (localdb) \ v11.0 SQL Server, но мы сталкиваемся с проблемой на всех компьютерах, кроме моего.

Вот ошибка, которую мы получаем:

Приложению не удалось подключиться к базе данных, проверьте строку подключения в файле web.config и доступность SQL-сервера.

Исходная ошибка:

Произошла ошибка, связанная с сетью или конкретным экземпляром, при установке соединения с SQL Server. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: Сетевые интерфейсы SQL, ошибка: 50 - Произошла ошибка времени выполнения локальной базы данных. Указанный экземпляр LocalDB не существует.)

Я попробовал множество предложений из других ответов SO и других веб-сайтов, чтобы выяснить, почему мы получаем эту ошибку (и почему она не происходит на моей машине), но не повезло. Мы можем подключиться к (localdb) \ v11.0 в SSMS, но не можем подключиться к нему через VS (та же ошибка). Кроме того, когда мы открываем Sql Server Config Manager, мы не видим никаких списков для служб SQL Server. Любые идеи?


person Jerreck    schedule 05.11.2014    source источник
comment
Можете ли вы убедиться, что localDb установлен на вашем компьютере? Что произойдет, если вы откроете SSMS и попытаетесь подключиться к (localdb)\v11.0?   -  person Chris    schedule 06.11.2014
comment
Мы можем нормально подключиться к (localdb) \ v11.0 через SSMS, но мы не можем добавить (localdb) \ v11.0 в качестве соединения в VS. Я подумал, что это было действительно странно, так как я предполагал, что (localdb) \ v11.0 был экземпляром, который VS 2013 создает и использует по умолчанию.   -  person Jerreck    schedule 06.11.2014
comment
Вы изучили это? Подключите LocalDb в обозревателе сервера VS   -  person Chris    schedule 06.11.2014
comment
Только что поговорил с одним из моих разработчиков, и, по-видимому, он сделал все, что там указано, за исключением использования имени канала экземпляра. Он мог подключиться к (localdb) \ v11.0 из VS, но его экземпляр Kentico все еще получал сетевые интерфейсы SQL, ошибка: 50. Можно ли использовать имя канала экземпляра в качестве строки подключения в веб-конфигурации? Мы собираемся отложить тестирование на пару дней, потому что мы нашли обходной путь и у нас плотный график, но мы скоро вернемся к этому.   -  person Jerreck    schedule 06.11.2014


Ответы (3)


  1. Убедитесь, что у вас установлена ​​.NET Framework 4.0.2+.
  2. Настройте пул приложений для работы под учетной записью NetworkService.
  3. Создайте логин для этой учетной записи в своей базе данных.

    USE [master]; CREATE LOGIN [NT AUTHORITY\NETWORK SERVICE] FROM WINDOWS; EXEC sp_addsrvrolemember N'NT AUTHORITY\NETWORK SERVICE', SYSADMIN;

  4. Поделитесь своим экземпляром со всеми пользователями, запустив SqlLocalDB share Kentico KenticoShared

  5. Используйте строку подключения в следующем формате:

<add name="CMSConnectionString" connectionString="Data Source=(localdb)\.\KenticoShared;Initial Catalog=KenticoDB;Integrated Security=True;Connect Timeout=60" />

  1. Если это не помогает использовать именованный канал:

<add key="CMSConnectionString" value="Persist Security Info=False;Integrated Security=SSPI;database=KenticoDB;server=np:\\.\pipe\LOCALDB#D2BA6590\tsql\query;Current Language=English;Connection Timeout=120;" />

Примечания:

  1. точное имя учетной записи NetworkService на вашем компьютере можно определить, запустив следующий C #

var ns = new SecurityIdentifier(WellKnownSidType.NetworkServiceSid, null).Translate(typeof(NTAccount)).ToString()

  1. именованный канал можно определить, запустив его в CMD: SqlLocalDB info KenticoShared
  2. не забудьте запустить свой экземпляр SqlLocalDB start KenticoShared
person rocky    schedule 06.11.2014
comment
Спасибо за это. Для меня то, что заставляло работать соединение, - это поиск и использование именованного канала. И IIS Express, и мой пул приложений IIS работают как один и тот же пользователь. Очень загадочно, почему я мог подключиться к одному, а к другому - нет. - person j.r; 29.08.2017
comment
В надежде, что это может появиться в других результатах поиска, я также упомяну, что, помимо странности IIS, у меня также была такая же проблема с подключением из службы Windows, которая использовала аутентификацию SQL Server, и соединение будет таинственным образом работать или не работать в зависимости от того, для какого пользователя Windows настроена работа службы. - person j.r; 29.08.2017

Кажется немного непонятным, но смотрели ли вы на http://support.microsoft.com/kb/941823, «Некоторые или все службы SQL Server 2005 не указаны в диспетчере конфигурации SQL Server ...»?

И, как правило, есть две вещи, которые мешают подключиться к SQL Server из приложения, даже если вы можете подключиться с помощью Management Studio. Во-первых, вы должны убедиться, что TCP включен в экземпляре, http://msdn.microsoft.com/en-us/library/bb909712(v=vs.90).aspx. Во-вторых, поскольку вы подключаетесь к именованному экземпляру, который, как я предполагаю, не является экземпляром по умолчанию, работающим на стандартном порте, вам необходимо убедиться, что служба браузера SQL Server запущена, http://technet.microsoft.com/en-us/library/ms165734(v=sql.90).aspx. Это то, что перенаправляет приложения на нестандартный порт без необходимости указывать порт напрямую. Причина, по которой Management Studio может обойти это, заключается в том, что она может подключаться через именованные каналы и полностью пропускать TCP.

person Bruce Dunwiddie    schedule 06.11.2014

См. Этот пост, поскольку это решило мою проблему: эти два сообщения об использовании LocalDB с полным IIS должны предоставить вам дополнительную информацию. Особенно важна вторая часть, но первая также содержит некоторый контекст.

  1. Часть 1. Профиль пользователя
  2. Часть 2. Право собственности на экземпляр

Кредит: IIS подключается к LocalDB

person Amir    schedule 10.07.2016