Я не могу получить локальное соединение Sql Server для работы на компьютере, на котором не установлен SqlServer Express
У меня есть консольное приложение С#, написанное с использованием 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. Может ли кто-нибудь сказать мне, что моя проблема может быть?
Ответы
Ответ 1
Проблема связана с установкой Sql Server Express LocalDB 2014 вместо 2012 года. С этой версией 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
Ответ 2
Использование "Data Source = (LocalDB)\MSSQLLocalDB" также не сработало. Мне пришлось получить доступ к databasseusing "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/
Ответ 3
Вам нужно убедиться, что вы установили .NET Framework 4.0 и, что не менее важно, обновление .NET Framework 4.0.2 (KB # 2544514).
Как только ваша система обновлена, вы можете загрузить установщик SqlLocalDb из:
http://www.microsoft.com/en-us/download/details.aspx?id=29062
Ответ 4
Строка, имеющая строку подключения (LocalDB)\v11.0
, будет работать с localDB ENU\x64\SqlLocalDB.MSI
, указанным по этой ссылке Загрузить SqlLocalDB
Я попробовал это в целевой системе, где не установлен Visual Studio
. Эта сборка будет соединяться с базой данных только с установленным SqlLocalDB.msi
. Нет необходимости устанавливать SqlExpress
в целевую систему.