Я не могу получить подключение к Sql Server localdb для работы на компьютере, на котором не установлен SqlServer Express

У меня есть консольное приложение C #, написанное с использованием Visual Studio 2012. В приложении я использую подключение Sql Server localdb к базе данных для хранения информации. Это нормально работает на нескольких компьютерах, на всех из которых установлена ​​Visual Studio.

Я хотел бы развернуть программу, которая должна устанавливать только Sql Server Express LocalDB, а не более крупный Sql Server Express. Однако мое приложение не работает на целевых компьютерах. Я установил Sql Server Express LocalDB 2014 на целевой компьютер. Я могу с помощью командной строки запускать команды с помощью sqllocaldb, чтобы убедиться, что он установлен и работает.

C:\Users\someuser\Desktop\Debug>sqllocaldb v
Microsoft SQL Server 2014 (12.0.2000.8)`

Однако когда я запускаю свое приложение на том же целевом компьютере, я получаю следующую ошибку.

C: \ Users \ someuser \ Desktop \ Debug> Testing_Console
11: 21: 07,912 [1] INFO TestingConsole.Program - текущий каталог - C: \ Users \ someuser \ Desktop \ Debug
Дополнительная информация: (null)


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

Ниже приводится начало моего файла app.config, в котором я определяю строку подключения. Я попытался указать прямой путь к файлу LM, но это не устранило проблему. Однако этого следовало ожидать, поскольку программа работает из любого каталога на компьютерах с установленной Visual Studio.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <connectionStrings>
    <add name="KomoLM_Console.Properties.Settings.LMConnectionString"
      providerName="System.Data.SqlClient"
      connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\LM.mdf;Integrated Security=True;MultipleActiveResultSets=True"
 />
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>

Я не знаю, связана ли проблема только с установленным SQL Server Express LocalDB 2014. Может ли кто-нибудь сказать мне, в чем может быть моя проблема?


person MDig    schedule 07.01.2015    source источник
comment
Проблема была связана с установленным Sql Server Express LocalDB 2014. В этой версии MS изменила требования к строке подключения. Вместо Data Source = (LocalDB) \ V11.0 строка подключения - Data Source = (LocalDB) \ MSSQLLocalDB. После изменения строки подключения программа правильно работает на компьютере, на котором установлен только LocalDB 2014. Вот ссылка на статью об этом: ссылка   -  person MDig    schedule 07.01.2015
comment
Для миграции кода (update-database и др.) см. этот ответ.   -  person Marc.2377    schedule 01.08.2018


Ответы (5)


Проблема была связана с тем, что вместо 2012 был установлен Sql Server Express LocalDB 2014. В этой версии MS изменила требования к строке подключения. Вместо Data Source=(LocalDB)\V11.0 строка подключения - Data Source=(LocalDB)\MSSQLLocalDB. После изменения строки подключения программа правильно работает на компьютере, на котором установлен только LocalDB 2014. Вот ссылка на статью об этом: https://connect.microsoft.com/SQLServer/feedback/details/845278/sql-server-2014-express-localdb-does-not-create-automatic-instance-v12-0 < / а>

также

http://msdn.microsoft.com/en-us/library/hh510202(v=sql.120).aspx

person MDig    schedule 07.01.2015
comment
Для меня имя экземпляра (LocalDB) \ MSSQLLocalDB не сработало. В любом случае спасибо за попытку: D - person andrea.rinaldi; 12.09.2015
comment
У меня установлен Microsoft SQL Server 2014, и путь (LocalDB) \ MSSQLLocalDB решил проблему. - person user2134488; 03.10.2016
comment
MSSQLLocalDB - это просто имя экземпляра. Вы можете создать столько экземпляров, сколько вам нужно, и назвать их сколько угодно. Откройте cmd и введите sqllocaldb i. Здесь перечислены доступные экземпляры. Создайте новый, используя: sqllocaldb c YouNewInstance. В более ранней версии LocalDB автоматически создавал экземпляр с именем v11.0, в текущей версии этот экземпляр по умолчанию называется MSSQLLocalDB - person Bernhard Döbler; 14.04.2017

Использование «Data Source = (LocalDB) \ MSSQLLocalDB» также не сработало у меня. Мне пришлось получить доступ к базе данных, используя "Data Source = (LocalDB) \ V12.0", и для работы с этим доступом мне нужно было сначала запустить эту команду "sqllocaldb create" v12.0 ". Подробнее по этой ссылке https://dyball.wordpress.com/2014/04/28/sql-2014-localdb-error-cannot-connect-to-locaidbv12-o/

person Manoj Attal    schedule 27.12.2015
comment
Спасибо! То же самое сработало для меня, но я создал экземпляр с именем MSSQLLocalDB, запускающий sqllocaldb create MSSQLLocalDB. Я полагаю, он не создает его по умолчанию, если VS не установлен на одном компьютере с SQL-сервером. В моем случае это была полная установка SQL-сервера (не экспресс) - person axk; 20.07.2016

Убедитесь, что вы установили .NET Framework 4.0 и, что не менее важно, обновление .NET Framework 4.0.2 (KB # 2544514).

Как только ваша система обновится, вы можете загрузить установщик SqlLocalDb из:

http://www.microsoft.com/en-us/download/details.aspx?id=29062

person JaiderMendez    schedule 10.07.2015

Сборка со строкой подключения (LocalDB)\v11.0 будет работать с localDB ENU\x64\SqlLocalDB.MSI, указанной по этой ссылке Загрузить SqlLocalDB

Я пробовал это в целевой системе, где не установлен Visual Studio. Эта сборка будет подключаться к базе данных только с установленным SqlLocalDB.msi. Нет необходимости устанавливать SqlExpress в целевой системе.

person Prashant Arora    schedule 11.05.2016

Проблема в том, что когда у вас есть и Visual Studio 2013, и Visual Studio 2017, установлены две версии локальной базы данных.

Visual Studio 2013 - (localdb) \ v11.0 Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 19 октября 2012 г. 13:38:57 Авторские права (c) Microsoft Corporation Express Edition (64 -bit) в Windows NT 6.2 (сборка 9200 :)

Visual Studio 2017 - (localdb) \ MSSQLLOCALDB Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64) 28 октября 2016 г. 18:17:30 Авторские права (c) Microsoft Corporation Express Edition ( 64-разрядная версия) в Windows 10 Pro 6.3 (сборка 17134 :)

Перед установкой Visual Studio 2017 мне удалось подключиться к (localdb) \ v11.0, но после установки Visual Studio 2017 я не могу подключиться к предыдущей версии SQL Express (localdb) \ v11.0, но я могу подключиться к (localdb) \ MSSQLLOCALDB с помощью C #. Я могу без проблем подключиться к ним обоим из SQL Server Management Studio.

person Bharath    schedule 06.03.2019