2015-03-30 3 views
2

Я установил localdb SQL Server 2014 и SQL Server Management Studio. Я пытаюсь подключиться к localdb с помощью приложения WPF, разработанного в Visual Studio.Не удалось подключиться к экземпляру localdb SQL Server

Вот строка соединения, которую я использую

<connectionStrings> 
    <add name="ReservationContextString" 
     connectionString="Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=ReservationDB;AttachDbFilename=|DataDirectory|\\ReservationDB.mdf" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

При запуске приложения я получаю следующее исключение

An exception of type 'System.Data.SqlClient.SqlException' occurred in EntityFramework.dll but was not handled in user code

Additional information: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Я не знаю, почему приложение не может подключиться к localdb

Примечание: Я могу использовать SQL Server Management Studio для подключения к localdb с использованием (localdb)\MSSQLLocalDB в качестве имени сервера. Таким образом, localdb, похоже, правильно установлен.

+0

Я думаю, что проблема в том, что вы ** (1) ** определения базу данных для соединения с («Initial Catalog = ReservationDB») в вашем экземпляре LocalDB, а также ** (2) ** определение файла '.mdf' для присоединения (' AttachDbFilename = | DataDirectory \\ ReservationDB.mdf') - вы можете сделать ** либо ** из двух, но я не уверен, что произойдет, если вы сделаете ** оба ** сразу. Попробуйте одно ** ИЛИ ** другое - работает ли это? –

+0

@marc_s, я пробовал использовать любой из них, но такое же исключение выбрано. На самом деле, это был рабочий проект, который я использовал до переустановки всего на моем компьютере. Причина, по которой я использовал оба (Initial Catalog и AttachDbFilename), заключается в том, что имя базы данных получало префикс с некоторым квалификатором. Итак, когда у меня была полная Express-версия SQL Server ранее, я смог использовать ту же самую строку соединения и работал без каких-либо исключений. – Jatin

+0

Можете ли вы попытаться использовать '(localdb) \ v12.0' в качестве имени сервера и экземпляра? Я считаю, что это имя экземпляра по умолчанию для SQL Server 2014 LocalDB –

ответ

1

Вдохновение от этого troubleshooting guide Я смог решить проблему. Значение DefaultConnectionFactory для платформы Entity Framework должно указывать на экземпляр localdb, но в app.config (или web.config) я установил его, указывая на экземпляр SQL Server. Его нужно было изменить, чтобы вместо этого использовать экземпляр localdb.

Старый вход

<entityFramework> 
     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
     </defaultConnectionFactory>  
     .... 
    </entityFramework> 

должен быть (новый код)

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
      <parameter value="MSSQLLocalDB" /> 
     </parameters> 
     </defaultConnectionFactory>  
     ..  
    </entityFramework> 

Обратите внимание на System.Data.Entity.Infrastructure.LocalDbConnectionFactory, вместо системы. Data.Entity.Infrastructure.SqlConnectionFactory

0

В моем случае, я должен был создать БД первым внутри VS enter image description here

Тогда все работало как шарм

Смежные вопросы