SQL Server Express подключение к файлу .mdf - PullRequest
0 голосов
/ 04 июля 2018

Вопрос из двух частей.

Я создал приложение ASP.NET MVC 5 с использованием VS 2015 Update 3. Я довольно хорошо справляюсь с проектом на моей локальной машине. Неожиданно я больше не могу подключиться через обозреватель объектов SQL Server к файлу базы данных .mdf и получить следующую ошибку:

Невозможно открыть базу данных «aspnet-DevilsTowerMVC-20180327093314», так как это версия 852. Этот сервер поддерживает версию 782 и более ранние. Путь понижения не поддерживается. Не удалось открыть новую базу данных «aspnet-DevilsTowerMVC-20180327093314». СОЗДАНИЕ БАЗЫ ДАННЫХ прервано. Невозможно прикрепить файл 'D: \ VS2015 \ DevilsTowerMVC \ App_Data \ aspnet-DevilsTowerMVC-20180327093314.mdf в качестве базы данных' aspnet-DevilsTowerMVC-20180327093314 '.

enter image description here

У меня на компьютере установлен SQL Server 2012 (11.0.5388.0). Проект был создан с использованием VS 2015. Я видел аналогичный вопрос о SO, но он не дал однозначного ответа.

Я только что создал другое приложение ASP.NET MVC 5 в VS 2015, и вход в систему работал отлично (говорит SQL Server 12.00.2000). Так я не понимаю, как мой существующий проект загадочным образом вернулся к более старой версии?

Из моего исследования SQL Server 2016 имеет внутренний номер версии базы данных 852, а SQL Server 2014 и внутренний номер версии базы данных 782. Моя установка SQL Server 2012 имеет внутренний номер версии базы данных 706, поэтому я не знаю, почему в сообщении об ошибке упоминается «782».

(Q1) Если я не могу понизить версию, то мой единственный вариант - установить SQL Server 2016 Express? Это правильно и какие шаги, чтобы сделать это правильно? Если нет, есть ли способ «сбросить» его - только что созданный проект работает нормально?

(Q2) Как мне преобразовать это, чтобы использовать обычную не файловую базу данных SQL Server в SSMS?

Мой web.config:

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-DevilsTowerMVC-20180327093314.mdf;Initial Catalog=aspnet-DevilsTowerMVC-20180327093314;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

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

ОБНОВЛЕНИЕ 1

Я скачал SQL Server 2016 SP1 Express Edition с здесь . Я выбрал опцию Download Media / LocalDB. Оказалось, правильно установить. Однако, когда я выбираю DefaultConnection в Server Explorter и нажимаю обновить, я получаю точно такую ​​же ошибку, как и раньше. Я перепробовал все комбинации в строке подключения, такие как: (LocalDb), (LocalDb)\v11.0 и (LocalDb)\MSSQLLocalDB.

Когда я смотрю в папку C: \ Windows \ SysWOW64, я вижу, что менеджер конфигурации SQLServerManager11.msc все еще установлен.

ОБНОВЛЕНИЕ 2

Я удалил файл .mdf из папки App_Data и попытался воссоздать его, зарегистрировав нового пользователя. Файл DefaultConnection.mdf был создан, но когда я попытался добавить его в обозревателе сервера, я получил то же сообщение об ошибке версии, что и раньше. Кто-нибудь может предложить способ выкупить систему входа в систему проекта?

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

Мне удалось решить эту проблему с помощью ответа Яира М на на этот вопрос .

Сначала я физически удалил все версии LocalDb, кроме версии v11.0, которая соответствовала моей версии SQL Server 2012, с помощью Панели управления -> Программы и компоненты.

Затем, используя командную строку, я ввел следующие команды:

sqllocaldb delete "v11.0"

sqllocaldb create "v11.0"

Это решило проблему, когда файловый экземпляр LocalDb стирался и не создавался заново, когда я пытался зарегистрировать нового пользователя.

На данный момент я могу зарегистрировать нового пользователя без каких-либо сообщений об ошибках. Однако я хотел отойти от LocalDB.

Итак, я создал пустую базу данных в SSMS и прикрепил к ней файл .mdf. Я обновил строку подключения, чтобы использовать фактическую базу данных и встроенную безопасность (для локальной разработки). Я получил некоторые ошибки прав доступа при запуске приложения, но смог исправить это, создав нового пользователя и предоставив ему права на чтение и запись.

<add name="DefaultConnection" 
  connectionString="Initial Catalog=DevilsTower;Data Source=Development;Integrated Security=SSPI;" 
    providerName="System.Data.SqlClient" />
0 голосов
/ 04 июля 2018

1) К сожалению, вы не можете понизить рейтинг, вам придется получить ту же версию. 2) Насколько я знаю, вы можете восстановить базу данных с помощью файлов .mdf, но технически все они должны быть основаны на файлах. Тем не менее, если у вас есть файл mdf, вы можете восстановить его, а затем соответствующим образом изменить строку подключения.

...