it-swarm.com.de

Kann nicht geöffnet werden, da es sich um Version 852 handelt. Dieser Server unterstützt Version 782 und früher

Ich verwende Visual Studio 2017 und SQL Server 2014. Beim Anhängen einer Datenbankdatei an Visual Studio wird der folgende Fehler angezeigt:

" Adding database connection "

Nach dem Upgrade der Datei habe ich diese Verbindungszeichenfolge verwendet

<connectionStrings>
    <add name="con" 
         connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\binaaelmamorra.mdf;Integrated Security=True;Connect Timeout=30"/>
</connectionStrings>

Auf meinem Computer funktioniert es einwandfrei, auf dem Client-Computer wird jedoch ein Fehler gemeldet

Kann nicht geöffnet werden, da es sich um Version 852 handelt. Dieser Server unterstützt Version 782 und früher

Obwohl ich die lokale SQL Server 2016-Datenbank auf der Clientseite installiert habe, kann ich sie immer noch nicht entfernen.

Meine zweite Frage lautet: Was ist die aktuelle Instanz von SQL Server, zu der die Datenbankdatei nicht kompatibel ist?

Pic 1enter image description here

10
Bilal Ahmed

Anscheinend haben Sie mehrere Instanzen verschiedener Versionen von SQL Server auf Ihrem Computer.

Bei den "ausgewachsenen" Versionen (Express und höher) können Sie anhand des SQL Server-Konfigurations-Managers überprüfen, um welche Version es sich handelt:

Für die "LocalDB" -Versionen von SQL Server (entwicklerorientierte Versionen) können Sie das Befehlszeilentool sqllocaldb verwenden.

Verschaffen Sie sich mit diesem Befehl einen Überblick darüber, was sich auf Ihrem Computer befindet:

C:\> sqllocaldb i

MSSQLLocalDB
v11.0

Anschließend können Sie die einzelnen Instanzen mit dem Befehl details überprüfen:

C:\> sqllocaldb i mssqllocaldb

Name:               mssqllocaldb
Version:            13.1.4206.0
Shared name:
Owner:              MSE-PC-02\Marc
Auto-create:        Yes
State:              Stopped
Last start time:    27.08.2017 12:24:45
Instance pipe name:


C:\> sqllocaldb i v11.0
Name:               v11.0
Version:            11.0.3000.0
Shared name:
Owner:              MSE-PC-02\Marc
Auto-create:        Yes
State:              Stopped
Last start time:    26.08.2017 15:41:18
Instance pipe name:

Dies sagt Ihnen also, dass zwei Instanzen von SQL Server LocalDB verfügbar sind - mssqllocaldb ist Version 13.1 (SQL Server 2016), während die Die Instanz v11.0 Ist Version 11.0 (SQL Server 2012).

Wenn Sie also eine .mdf - Datei an eine dieser beiden Instanzen anhängen möchten, müssen Sie nur die richtige auswählen, damit sie mit der gewünschten Version funktioniert. Und sobald Sie eine Datenbankdatei auf eine neuere Version von SQL Server "aktualisiert" haben (wie 2016 - interne DB-Version 852), können Sie NIE zurückgehen - Es gibt keine Möglichkeit, diese Binärdateien von einer älteren Version von SQL Server zu trennen, anzufügen, zu sichern oder wiederherzustellen. Sie müssten die Struktur (und möglicherweise die Daten) Ihrer neueren Datenbankdatei in .sql - Dateien skripten und diese in der älteren Version ausführen.

6
marc_s

Version 852 ist SQL Server 2016 und Version 782 ist SQL Server 2014. Eine gute Referenz für die Versionen finden Sie auf dieser Microsoft-Seite .

Basierend auf Ihren Erklärungen sollte dies eine Version 782 DB sein. Da es sich um DB der Version 852 handelt, bedeutet dies, dass ein Upgrade mit SQL Server 2016 und nicht mit SQL Server 2014 durchgeführt wurde. Überprüfen Sie daher, ob auf Ihrem lokalen/dev-Computer alle Versionen von SQL Server ausgeführt werden, um sicherzustellen, dass nur SQL Server 2014 ausgeführt wird in Verwendung und nicht (möglicherweise) SQL Server 2016, das von VS 2017 installiert wird.

Darüber hinaus hat Ihr Endbenutzer anscheinend die Version 2014 und nicht 2016. Dies ist möglicherweise ein Problem, wenn es sich bei der aktuellen Datenbank um eine SQL Server 2014-Modus-Datenbank handelt. Versuchen Sie, eine explizite Verbindung zu TempDB herzustellen, bevor Sie die Datenbank verbinden. (Hinweis: Dies ist etwas, was ich tun musste, wenn ich auf eine Inkompatibilität von 2014/2016 gestoßen bin, obwohl ich mich nicht erinnern kann, was das eigentliche Problem war.)

4
Laughing Vergil

Wenn Sie möchten, dass Ihr Projekt eine SQL Server 2014-Datenbank generiert, die Sie auf dem Clientcomputer anfügen können, müssen Sie eine Instanz des Servers auf Ihrem Computer erstellen. Öffnen Sie dazu die Befehlszeile im Administratormodus und geben Sie den Befehl "sqllocaldb create v12.0 12." ein. Dadurch wird eine Serverinstanz mit dem Namen "v12.0" in Version 12.0 von SQL Server 2014 erstellt.

Wenn der Server noch nicht gestartet wurde, muss der Server mit dem Befehl "sqllocaldb start v12." gestartet werden.

Jetzt musst du deinen conectionString wie folgt ändern:

<connectionStrings>
    <add name="con" 
         connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\binaaelmamorra.mdf;Integrated Security=True;Connect Timeout=30"/>
</connectionStrings>

Vielleicht haben Sie Ihrer app.config einige Parameter hinzugefügt

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v12.0" />
      </parameters>
</defaultConnectionFactory>
2
Renat Baratov

In meinem Fall hatte ich die Datenbank einmal mit der neuesten Version von Visual Studio aktualisiert und dann versucht, das Projekt mit einer älteren Version auszuführen. Diese Ausnahme wurde angezeigt. Ich habe es behoben, indem ich einfach die Datenbank entfernt und das Flag Update-Database -verbose -Verbose erneut ausgeführt habe, damit Sie sehen können, welche Befehle ausgeführt wurden.

0
Jamshaid Kamran