Nie można otworzyć bazy danych, ponieważ jest to wersja 782. Ten serwer obsługuje wersję 706 i starsze. Ścieżka obniżenia nie jest obsługiwana

84

Utworzyłem przykładową bazę danych przy użyciu programu SQL Server 2014 Express i dodałem ją do mojego rozwiązania Windows Form. Po dwukrotnym kliknięciu, aby otworzyć, pojawia się ten błąd.

Nie można otworzyć bazy danych, ponieważ jest to wersja 782. Ten serwer obsługuje wersję 706 i starsze. Ścieżka obniżenia nie jest obsługiwana

Używam Visual Studio 2013. Naprawdę nie rozumiem, że używam dwóch najnowszych wersji produktów Microsoft i są one niezgodne. Czy coś mi brakuje? Jak mogę otworzyć tę bazę danych?

wprowadź opis obrazu tutaj

Omer K.
źródło
2
Musisz wskazać program Visual Studio w swoim wystąpieniu SQL Server 2014. Nie chodzi o to, że oba są niekompatybilne, chodzi o to, że program Visual Studio domyślnie używa swojego wystąpienia 2012 i nie obsługuje baz danych od 2014. Powód, dla którego używa 2012 jako domyślnego: SQL Server 2014 nie istniał, gdy Visual Studio 2013 został wydany.
Aaron Bertrand
@AaronBertrand thanks. Jak mogę skierować VS do mojego programu SQL Server 2014. Czy jest jakieś łącze, które prowadzi?
Omer K
5
Jasne, po prostu przestań wskazywać program Visual Studio (i swoją aplikację) na plik (używając AttachDBFileName). Zakładając, że baza danych jest już podłączona do lokalnej .\SQLEXPRESSinstancji, po prostu zmień parametry połączenia, aby wskazywały na ten serwer ( Data Source=.\SQLEXPRESS;Initial Catalog=OMERDENEME;...) i przestań używaćAttachDBFileName .
Aaron Bertrand

Odpowiedzi:

141

Spróbuj zmienić Tools> Options> Database Tools> Data Connections> SQL Server Instance Name.

Wartość domyślna dla VS2013 to (LocalDB)\v11.0 .

Zmiana (LocalDB)\MSSQLLocalDBna przykład wydaje się działać - koniec błędu wersji 782.

user1723033
źródło
2
Miałem podobne problemy z Visual Studio 2013 Express for Web i Entity Framework 6. EF utworzył plik MDF automatycznie, ale nie mogłem połączyć się z VS podczas używania (LocalDB)\v11.0. Zmiana nazwy serwera w celu (LocalDB)\MSSQLLocalDBwyeliminowania błędu dotyczącego wersji # zniknęła.
wrschneider
3
Musiałem też zmienić parametry połączenia w pliku web.config na (LocalDB) \ MSSQLLocalDB
Roger Harvest
11
W VS Studio 2015 wartością domyślną jest (LocalDB) \ MSSQLLocalDB. Więc to nie pomaga w tym przypadku
przydatnePatrz
2
Musiałem zrestartować Visual Studio po zmianie wyżej wymienionego ustawienia
Manoj Attal
1
@ Kun-yaoWang, powyższy komentarz, o którym wspominał przydatneBee, pracował dla mnie i używam VS 2015.
Manoj Attal
10

Spróbuj zmienić poziom zgodności , działał dla mnie.

Sprawdź, jaki to poziom

USE VJ_DATABASE;
GO
SELECT compatibility_level
FROM sys.databases WHERE name = 'VJ_DATABASE';
GO

Następnie dostosuj go do starszej wersji

ALTER DATABASE VJ_DATABASE
SET COMPATIBILITY_LEVEL = 110;   
GO
  • 100 = Sql Server 2008
  • 110 = Sql Server 2012
  • 120 = Sql Server 2014

Domyślnie Sql Server 2014 zmieni kompatybilność wersji bazy danych tylko na 2014, używając @@ versionpowinieneś być w stanie stwierdzić, która wersja jest Sql Server.

Następnie uruchom powyższe polecenie, aby zmienić posiadaną wersję.

Dodatkowy krok: Sprawdź, czy dostępność bazy danych nie jest resetowana, zrób to, klikając prawym przyciskiem myszy właściwości folderu i bazy danych. (upewnij się, że masz prawa, aby nie odmówić dostępu)


źródło
2

U mnie korzystam z rozwiązania dostarczonego przez codedom nie działało . Tutaj możemy zmienić tylko wersję kompatybilności wyjściowej bazy danych.

Ale rzeczywisty problem polega na tym, że wersja wewnętrznej bazy danych nie pasuje z powodu zmian w formacie przechowywania.

Sprawdź więcej szczegółów na temat wersji SQL Server i ich wewnętrznej wersji bazy danych i poziomu zgodności Db tutaj . Byłoby dobrze, gdybyś utworzył bazę danych przy użyciu wersji SQL Server 2012 Express lub niższej. Lub zacznij korzystać z Visual Studio 2015 Preview.

Aamol
źródło
2

To rozwiązanie rozwiązuje mój problem: (z: https://msdn.microsoft.com/en-us/library/ms239722.aspx )

Aby na stałe dołączyć plik bazy danych (.mdf) z węzła Połączenia danych

  1. Otwórz menu skrótów dla połączeń danych i wybierz opcję Dodaj nowe połączenie.

    Pojawi się okno dialogowe Dodaj połączenie.

  2. Wybierz zmianę przycisk .

    Zostanie wyświetlone okno dialogowe Zmień źródło danych .

  3. Wybierz Microsoft SQL Server i kliknij OK przycisk .

    W Dodaj połączenie Pojawi się ponownie okno dialogowe z Microsoft SQL Server (SqlClient) wyświetlany w źródłowym danych polu tekstowym.

  4. W polu Nazwa serwera wpisz lub przejdź do ścieżki do lokalnego wystąpienia programu SQL Server. Możesz wpisać:

    • „.” dla domyślnej instancji na twoim komputerze.
    • „(LocalDB) \ v11.0” dla domyślnego wystąpienia SQL Server Express LocalDB.
    • „. \ SQLEXPRESS” dla domyślnego wystąpienia programu SQL Server Express.

    Aby uzyskać informacje na temat SQL Server Express LocalDB i SQL Server Express, zobacz Omówienie danych lokalnych .

  5. Wybierz opcję Użyj uwierzytelniania systemu Windows lub Użyj uwierzytelniania serwera SQL .

  6. Wybierz Dołącz plik bazy danych , Przeglądaj i otwórz istniejący plik .mdf.

  7. Wybierz OK przycisk .

    Nowa baza danych pojawi się w Eksploratorze serwera. Pozostanie połączony z SQL Server, dopóki go jawnie nie odłączysz.

Sayed Abolfazl Fatemi
źródło
1
To rozwiązanie zadziałało dla mnie. Zmieniłem domyślne ustawienie połączenia Vs2012 w tool-option-database tools-> data connection -> sql server name = (LocalDB) \ MSSQLLocalDB. a następnie wykonałem powyższy krok. aw kroku 4 wpisałem nazwę instancji ny sql 2014 jako (LocalDB) \ MSSQLLocalDB. i wszystko jest w porządku. dzięki stary.
abdul okrzyknął
1

Innym rozwiązaniem jest migracja bazy danych do np. 2012 podczas "eksportu" bazy danych z np. Sql Server manager 2014. Robi się to w menu Zadania-> generuj skrypty po kliknięciu prawym przyciskiem myszy na DB. Po prostu postępuj zgodnie z instrukcją:

https://www.mssqltips.com/sqlservertip/2810/how-to-migrate-a-sql-server-database-to-a-lower-version/

Generuje skrypty ze wszystkim, a następnie w menadżerze serwera SQL np. 2012 uruchom skrypt zgodnie z instrukcją. Test wykonałem pomyślnie.

Naha
źródło
0

Używam VS 2017. Domyślna nazwa instancji SQL Server to (LocalDB) \ MSSQLLocalDB. Jednak obniżając poziom zgodności bazy danych do 110, jak w odpowiedzi @ user3390927, mogłem dołączyć plik bazy danych w VS, wybierając nazwę serwera jako „localhost \ SQLExpress”.

theandroid
źródło