La versión existente no es compatible con la versión en la que se creó la base de datos.

programación


Hola a todos, ¿por qué aparece este mensaje?

estudio visual de microsoft
Se detectó una versión incompatible del servidor SQL.

Lo que he probado:

SSDT instalado no resolvió el problema

Gracias a todos

Solución 1

Las bases de datos SQL están etiquetadas con un número de versión: la versión que escribió el archivo de base de datos.
Cuando su código se conecta a la base de datos a través del motor de SQL Server, compara la versión del motor con la versión del archivo; si la base de datos muestra una versión posterior a la del motor, recibirá este mensaje de error porque “sabe” que el archivo probablemente contendrá información que el motor no comprende, por lo que se niega a continuar en caso de que corrompa el archivo.

Las únicas soluciones son actualizar el motor a la versión adecuada o posterior, o volver a crear el archivo utilizando el motor disponible.

Esto puede suceder si crea un archivo de “versión 1” utilizando el motor de “versión 1”, pero luego abre el archivo en un motor de “versión 2” más tarde; cuando escribe el archivo, lo convierte en un archivo de “versión 2”, por lo que el motor anterior ya no puede leerlo.

Solución 2

Además de lo que sugirió OriginalGriff, puedes automatizar esto en lugar de cambiar tu código todo el tiempo para garantizar una conexión exitosa.

Debe ajustar dinámicamente la configuración de su conexión según la versión específica de la base de datos a la que intenta conectarse; por ejemplo, es posible que deba configurar opciones o características específicas según la versión de la base de datos.

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をコピーしました