La base de données ne peut pas être ouverte car il s'agit de la version 782. Ce serveur prend en charge les versions 706 et antérieures. Un chemin de rétrogradation n'est pas pris en charge

84

J'ai créé un exemple de base de données à l'aide de SQL Server 2014 Express et je l'ai ajouté à ma solution Windows Form. Lorsque double-cliquez dessus pour l'ouvrir, j'obtiens cette erreur.

La base de données ne peut pas être ouverte car il s'agit de la version 782. Ce serveur prend en charge la version 706 et antérieure. Un chemin de rétrogradation n'est pas pris en charge

J'utilise Visual Studio 2013. Je ne comprends vraiment pas que j'utilise les deux dernières versions des produits Microsoft et qu'elles sont incompatibles. Est-ce que je manque quelque chose? Comment puis-je ouvrir cette base de données?

entrez la description de l'image ici

Omer K
la source
2
Vous devez pointer Visual Studio sur votre instance SQL Server 2014. Ce n'est pas que les deux sont incompatibles, c'est que Visual Studio utilise son instance 2012 par défaut et qu'il ne prend pas en charge les bases de données de 2014. La raison pour laquelle il utilise 2012 par défaut: SQL Server 2014 n'existait pas lorsque Visual Studio 2013 a été libéré.
Aaron Bertrand
@AaronBertrand merci. Comment puis-je pointer VS sur mon SQL Server 2014. Existe-t-il un lien qui guidera?
Omer K
5
Bien sûr, arrêtez simplement de pointer Visual Studio (et votre application) sur un fichier (en utilisant AttachDBFileName). En supposant que la base de données est déjà attachée à votre .\SQLEXPRESSinstance locale , modifiez simplement les chaînes de connexion pour qu'elles pointent vers ce serveur ( Data Source=.\SQLEXPRESS;Initial Catalog=OMERDENEME;...) et arrêtez d'utiliserAttachDBFileName .
Aaron Bertrand

Réponses:

141

Essayez de changer Tools> Options> Database Tools> Data Connections> SQL Server Instance Name.

La valeur par défaut pour VS2013 est (LocalDB)\v11.0.

Le passage à (LocalDB)\MSSQLLocalDB, par exemple, semble fonctionner - plus d'erreur de version 782.

utilisateur1723033
la source
2
J'ai eu des problèmes similaires avec Visual Studio 2013 Express pour Web et Entity Framework 6. EF a créé le fichier MDF automatiquement, mais je n'ai pas pu me connecter à partir de VS lors de l'utilisation (LocalDB)\v11.0. Changer le nom du serveur pour (LocalDB)\MSSQLLocalDBfaire disparaître cette erreur concernant la version #.
wrschneider
3
J'ai également dû changer la chaîne de connexion dans le fichier web.config en (LocalDB) \ MSSQLLocalDB
Roger Harvest
11
Dans VS Studio 2015, la valeur par défaut est (LocalDB) \ MSSQLLocalDB. Donc, cela n'aide pas dans ce cas
utileBee
2
J'ai dû redémarrer Visual Studio après avoir modifié le paramètre mentionné ci-dessus
Manoj Attal
1
@ Kun-yaoWang, le commentaire ci-dessus mentionné par utileBee a fonctionné pour moi et j'utilise VS 2015.
Manoj Attal
10

Essayez de changer le niveau de compatibilité , a fonctionné pour moi.

Vérifiez de quel niveau il s'agit

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

Ensuite, rendez-le compatible avec l'ancienne version

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

Par défaut, Sql Server 2014 changera la compatibilité des versions de base de données en 2014 uniquement, en utilisant le, @@ versionvous devriez être en mesure de dire quelle version est Sql Server.

Ensuite, exécutez la commande ci-dessus pour changer la version que vous avez.

Étape supplémentaire: assurez-vous que vous regardez l'accessibilité de la base de données n'est pas réinitialisée, faites-le en cliquant avec le bouton droit sur les propriétés du dossier et de la base de données. (assurez-vous d'avoir des droits pour ne pas obtenir un accès refusé)


la source
2

Pour moi, l'utilisation de la solution fournie par codedom n'a pas fonctionné. Ici, nous ne pouvons modifier que la version de compatibilité de la base de données existante.

Mais le problème réel réside dans le fait que la version de la base de données interne ne correspond pas en raison des modifications apportées au format de stockage.

Consultez plus de détails sur la version SQL Server et leur version db interne et Db niveau de compatibilité ici donc il serait bon si vous créez votre base de données en utilisant SQL Server 2012 express Version ou ci - dessous. Ou commencez à utiliser Visual Studio 2015 Preview.

Aamol
la source
2

Cette solution résout mon problème: (à partir de: https://msdn.microsoft.com/en-us/library/ms239722.aspx )

Pour attacher de manière permanente un fichier de base de données (.mdf) à partir du nœud Connexions de données

  1. Ouvrez le menu contextuel des connexions de données et choisissez Ajouter une nouvelle connexion.

    La boîte de dialogue Ajouter une connexion s'affiche.

  2. Cliquez sur le bouton Modifier .

    La boîte de dialogue Modifier la source de données s'affiche.

  3. Sélectionnez Microsoft SQL Server et choisissez le bouton OK .

    La boîte de dialogue Ajouter une connexion réapparaît, avec Microsoft SQL Server (SqlClient) affiché dans la zone de texte Source de données .

  4. Dans la zone Nom du serveur, tapez ou recherchez le chemin d'accès à l'instance locale de SQL Server. Vous pouvez taper ce qui suit:

    • "." pour l'instance par défaut sur votre ordinateur.
    • "(LocalDB) \ v11.0" pour l'instance par défaut de SQL Server Express LocalDB.
    • ". \ SQLEXPRESS" pour l'instance par défaut de SQL Server Express.

    Pour plus d'informations sur SQL Server Express LocalDB et SQL Server Express, consultez Vue d'ensemble des données locales .

  5. Sélectionnez Utiliser l'authentification Windows ou Utiliser l'authentification SQL Server .

  6. Choisissez Joindre un fichier de base de données , Parcourir et ouvrez un fichier .mdf existant.

  7. Cliquez sur le bouton OK .

    La nouvelle base de données apparaît dans l'Explorateur de serveurs. Il restera connecté à SQL Server jusqu'à ce que vous le déconnectiez explicitement.

Sayed Abolfazl Fatemi
la source
1
Cette solution a fonctionné pour moi. J'ai changé mon paramètre de connexion par défaut Vs2012 dans tool-option-database tools-> data connection -> sql server name = (LocalDB) \ MSSQLLocalDB. puis suivi l'étape ci-dessus. et à l'étape 4, j'ai entré le nom de l'instance ny sql 2014 comme (LocalDB) \ MSSQLLocalDB. et tout va bien. Merci mec.
abdul hameed le
1

Une autre solution consiste à migrer la base de données vers, par exemple, 2012 lorsque vous "exportez" la base de données à partir par exemple de Sql Server Manager 2014. Cela se fait dans le menu Tâches-> générer des scripts lorsque vous cliquez avec le bouton droit sur DB. Suivez simplement ces instructions:

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

Il génère un script avec tout, puis dans votre gestionnaire de serveur SQL, par exemple 2012, exécutez le script comme spécifié dans l'instruction. J'ai effectué le test avec succès.

Naha
la source
0

J'utilise VS 2017. Par défaut, le nom de l'instance SQL Server est (LocalDB) \ MSSQLLocalDB. Cependant, en rétrogradant le niveau de compatibilité de la base de données à 110 comme dans la réponse de @ user3390927, je pourrais attacher le fichier de base de données dans VS, en choisissant le nom du serveur comme "localhost \ SQLExpress".

theandroid
la source