La version existante n’est pas compatible avec la version dans laquelle la base de données a été créée

la programmation


Bonjour à tous, pourquoi ce message apparaît-il ?

Studio visuel Microsoft
une version incompatible du serveur SQL a été détectée.

Ce que j’ai essayé :

SSDT installé n’a pas résolu le problème

Merci à tous

Solution 1

Les bases de données SQL sont étiquetées avec un numéro de version : la version qui a écrit le fichier de base de données.
Lorsque votre code se connecte à la base de données via le moteur SQL Server, il vérifie la version du moteur par rapport à la version du fichier. Si la base de données affiche une version ultérieure à celle du moteur, vous obtenez ce message d’erreur car elle “sait” que le fichier contiendra probablement une information que le moteur ne comprend pas et qui refuse donc d’aller plus loin au cas où il corrompt le fichier.

Les seules solutions consistent à mettre à niveau le moteur vers la version appropriée ou ultérieure, ou à recréer le fichier à l’aide du moteur disponible.

Cela peut se produire si vous créez un fichier “version 1” à l’aide du moteur “version 1”, mais que vous ouvrez ensuite le fichier dans un moteur “version 2” – lorsqu’il écrit le fichier, il le convertit en fichier “version 2”. le moteur précédent ne peut plus le lire.

Solution 2

En plus de ce que suggère OriginalGriff, vous pouvez automatiser cela plutôt que de changer votre code à tout moment pour garantir une connexion réussie :

Vous devez ajuster dynamiquement vos paramètres de connexion en fonction de la version spécifique de la base de données à laquelle vous essayez de vous connecter. Par exemple, vous devrez peut-être définir des options ou des fonctionnalités spécifiques en fonction de la version de la base de données :

VB.NET
Imports System.Data.SqlClient

Public Class DatabaseConnector
    Private connectionStringTemplate As String

    Public Sub New(serverName As String, databaseName As String, username As String, password As String)
        connectionStringTemplate = $"Data Source={serverName};Initial Catalog={databaseName};User ID={username};Password={password};"
    End Sub

    Public Function OpenConnection() As SqlConnection
        Dim connection As New SqlConnection()

        Try
            'Here you would dynamically adjust the connection string based on the database version...
            Dim databaseVersion As String = GetDatabaseVersion()
            Dim connectionString = String.Format(connectionStringTemplate, databaseVersion)

            connection.ConnectionString = connectionString

            connection.Open()
            Console.WriteLine("Connection opened successfully.")
        Catch ex As Exception
            Console.WriteLine($"Error opening connection: {ex.Message}")
        End Try

        Return connection
    End Function

    Public Sub CloseConnection(connection As SqlConnection)
        Try
            connection.Close()
            Console.WriteLine("Connection closed.")
        Catch ex As Exception
            Console.WriteLine($"Error closing connection: {ex.Message}")
        End Try
    End Sub

    Private Function GetDatabaseVersion() As String
        'Your logic to determine the database version dynamically...
        'As an example, you might query the database for its version...
        'Then return a placeholder value "v1.0"...
        Return "v1.0"
    End Function
End Class

コメント

タイトルとURLをコピーしました