Я пытаюсь прикрепить файл базы данных в SQL Server. Я получаю ошибку ниже. Та же ошибка, что и при попытке подключить базу данных из Visual Studio. Я использую Visual Studio 2013 и SQL Server 2014 Management Studio.
Моя строка подключения:
<add name="Sample"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\M\Desktop\SampleApplication1\App_Data\Sample.mdf;Initial Catalog=SampleDBContext;Integrated Security=True;"
providerName="System.Data.SqlClient"/>
Ошибка:
База данных «образец» не может быть открыта, потому что это версия 851. Этот сервер поддерживает версию 782 и более ранние. Переход на более раннюю версию не поддерживается. Не удалось открыть новую базу данных «Образец». CREATE DATABASE прервано.
И вот экземпляр SQL Server по умолчанию установлен в Visual Studio.
3 ответа
Вы НЕ МОЖЕТЕ сделать это - вы не можете прикрепить / отсоединить или создать резервную копию / восстановить базу данных от более новой версии SQL Server до более старой версии - внутренние файловые структуры слишком разные, чтобы поддерживать обратную совместимость. Очевидно, ваша база данных взята из предварительной версии SQL Server 2016 (внутренняя версия: 852), а движок, к которому вы пытаетесь ее подключить, - это SQL Server 2014 (внутренняя версия: 782).
Вы можете обойти эту проблему,
используя одну и ту же версию SQL Server на всех ваших компьютерах, вы можете легко создавать резервные копии / восстанавливать базы данных между экземплярами
в противном случае вы можете создать сценарии базы данных как для структуры (таблицы, представления, хранимые процедуры и т. д.), так и для содержимого (фактические данные, содержащиеся в таблицах) либо в SQL Server Management Studio (
Tasks > Generate Scripts
), либо с помощью третьей инструмент для вечеринокили вы можете использовать сторонний инструмент, такой как инструмент SQL Сравнение и Сравнение данных SQL, чтобы сделать " «различать» между вашим источником и целью, генерировать сценарии обновления с учетом этих различий, а затем выполнять эти сценарии на целевой платформе; это работает в разных версиях SQL Server.
Эта ссылка Microsoft может решить вашу проблему, если вы все еще используете Visual Studio 2015 и видите эту ошибку - приведенный выше ответ является частью ответа. (megamaiku) Ответ «сгенерировать сценарии» от Mark_S будет работать, если у вас нет проблем с подключением / доступом к базе данных. Если я помню, сравнение SQL довольно дорогое, но это отличное решение, опять же, если предположить, что вы можете подключить базу данных, созданную вашим приложением Visual Studio.
Аналогичная проблема возникает с Visual Studio 2017 и SQL Server 2017, за исключением того, что вы видите 852/856 как проблему с версией.
После перемещения базы данных измените строку web.config connectionString в соответствии с вашим сервером; (localdb) \ MSSQLLocalDB или, возможно, localhost в зависимости от того, что вы используете (SQL 2016/2017/2019).
<add name="DefaultConnection"
connectionString="Data Source=(localdb)\MSSQLLocalDB;myDB.mdf;Initial Catalog=MyDBName;Integrated Security=True"
providerName="System.Data.SqlClient"/>
ИЛИ
<add name="DefaultConnection"
connectionString="Data Source=localhost;myDB.mdf;Initial Catalog=MyDBName;Integrated Security=True"
providerName="System.Data.SqlClient"/>
В старой статье объясняется, как извлекать части из базы данных по одному, и если вам повезет, и он все еще работает (так было десять лет назад - разделите, а затем снова соедините части), вы сможете получить то, что вам нужно - более новая версия восстановлена до более старой версии. Я не могу найти ссылку на трюк, но вместо того, чтобы писать сценарий всей вашей базы данных, есть способ восстановить, восстановив заголовок (восстановить только заголовок), а затем, когда заголовок будет на вашем сервере, разрешения и т. Д. совпадают, вы можете восстановить эту базу данных из более новой резервной копии.
Однако сценарий генерации менее запутан и более популярен.
У меня возникла эта проблема, когда я следил за старым Руководство по Pluralsight MVC4.
В курсе меня просили использовать v11.0, но у меня была версия 2015 года. Я открыл обозреватель объектов SQL Server, посмотрел на разные версии LocalDB и взял имя той, в которой была моя база данных (щелкните правой кнопкой мыши «Переименовать»).
Затем я вставил имя в окно «Добавить соединение» под «Имя сервера». Нажал «Обновить», и вот оно что. Надеюсь, это поможет кому-нибудь.
Похожие вопросы
Связанные вопросы
Новые вопросы
sql-server
Microsoft SQL Server — это система управления реляционными базами данных (RDBMS). Используйте этот тег для всех выпусков Microsoft SQL Server, включая Compact, Express, Azure, Fast-track, APS (ранее PDW) и Azure SQL DW. Не используйте этот тег для других типов СУБД (MySQL, PostgreSQL, Oracle и т. д.). Не используйте этот тег для вопросов по программному обеспечению и разработке мобильных устройств, если только он не связан напрямую с базой данных.