IIssue с ​​вложением базы данных SQL через Visual Studio - PullRequest
0 голосов
/ 03 декабря 2018

Я

Новичок в SQL

Мои инструменты

  • VS Community 2017 v15.9.3 / C #
  • SQL Server 14.0.2002.14
  • SSMS 14.0 ...

Что я хочу сделать

У меня естьфайл, вы говорите mydatabase.mdb, я пытаюсь создать соединение с базой данных на SQL Server для доступа к нему.База данных на самом деле не подключена к серверу SQL, поэтому я пытаюсь создать свое подключение и присоединить его (правильно?) С помощью окна обозревателя сервера на VS.Я щелкаю правой кнопкой мыши на «подключение к данным», затем выбираю «добавить подключение»;в «диалоге добавления соединения» я выбираю источник данных «Файл базы данных Microsoft SQL Server» и даю ему путь к моему файлу.Наконец, я нажал «Проверить соединение».

Проблема

При «Тестировании соединения» я получил это сообщение: База данных «mydatabase.mdb» не может бытьоткрыт, потому что это версия 869. Этот сервер поддерживает версию 852 и более ранние.Не удалось открыть новую базу данных «mydatabase.mdb», CREATE DATABASE прервана.Попытка присоединить базу данных с автоматическим именем для файла 'mydatabase.mdb' не удалась.База данных с тем же именем существует, или указанный файл не может быть открыт, или он находится на общем ресурсе UNC

Мои попытки

Я подключил базу данных к SSMS,Когда я спросил версию БД для SSMS, я получил: SQL Server 2016 (130).Это не соответствует отчету об ошибках MS.В любом случае я изменил версию базы данных на 2014, затем я отсоединил ее от сервера и попытался снова: тот же результат.

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

Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Ваша SQL Server версия (сервер, сообщивший об ошибке) - 2016, то есть она поддерживает версию БД 852 и более ранние.

База данных, которую вы пытаетесь подключить, имеет версию869, это означает, что он был создан на SQL Server 2017.

Вы не можете присоединить его к более ранней версии SQL Server, поэтому вам нужно обновить сервер до 2017 или установить другой экземпляр SQL Server, SQL Server 2017.

PS Вы НЕ МОЖЕТЕ понизить версию базы данных, т. Е. Когда вы сказали

Я изменил версию базы данных на 2014

, это не так.Может быть, вы просто изменили compatibility level базы данных, но version по-прежнему 869.

Compatibility level означает версию оценки мощности для использования + некоторые функции, она не имеет ничего общего с database version, что относится к физическому формату файла.Database version не может быть понижен, только обновлен.

PPS

Я подключил базу данных к SSMS

Вы не можете "подключить базу данных к SSMS",вы подключаетесь к серверу , а база данных также подключена к серверу .И если вы смогли присоединить эту базу данных к SQL Server, это означает, что у вас уже установлен SQL Server 2017 .

PPPS. Чтобы обнаружить SQL Server version, вы выполняете этот код: select @@version (из SSMS).Кажется, у вас есть как минимум 2 сервера, 2016 и 2017 на вашем компьютере.Вы можете убедиться в этом, открыв SQL Server Configuration Manager, или вы можете использовать службы Windows, чтобы определить, сколько у вас экземпляров и каковы их имена.Тогда все, что вам нужно сделать, это использовать правильный экземпляр .

Вот изображение моих SQL Server экземпляров, вы можете проверить свои экземпляры, запустив services.msc на вашем компьютере.

enter image description here

0 голосов
/ 03 декабря 2018

Возможно, вы установили VS 2012, но вы используете экземпляр SQL 2008: Visual Studio не устанавливает SQL для вас.Базы данных SQL Server 2008 версии 655. Базы данных SQL Server 2008 R2 - 661. Вы пытаетесь присоединить базу данных 2008 R2 к экземпляру 2008, но это не поддерживается.

Вам нужно обновить экземпляр SQL до версии не ниже 2008R2, чтобы открыть файл (но учтите, что если вы впоследствии присоедините существующие базы данных к новому экземпляру, вы не сможете открыть его в SQL 2008опять же)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...