Determine version of SQL Server from ADO.NET

后端 未结 5 1376
难免孤独
难免孤独 2021-01-01 19:42

I need to determine the version of SQL Server (2000, 2005 or 2008 in this particular case) that a connection string connects a C# console application (.NET 2.0). Can anyone

5条回答
  •  误落风尘
    2021-01-01 20:12

    This code will determine the version of SQL Server database being used - 2000, 2005 or 2008:

    try
    {
        SqlConnection sqlConnection = new SqlConnection(connectionString);
        Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(new Microsoft.SqlServer.Management.Common.ServerConnection(sqlConnection));
    
        switch (server.Information.Version.Major)
        {
          case 8:
            MessageBox.Show("SQL Server 2000");
            break;
          case 9:
            MessageBox.Show("SQL Server 2005");
            break;
          case 10:
            MessageBox.Show("SQL Server 2008");
                    break;
          default:
            MessageBox.Show(string.Format("SQL Server {0}", server.Information.Version.Major.ToString())); 
            break;   
        }
    }
    catch (Microsoft.SqlServer.Management.Common.ConnectionFailureException)
    {
        MessageBox.Show("Unable to connect to server",
            "Invalid Server", MessageBoxButtons.OK, MessageBoxIcon.Error);
    
    }
    

    The code below will do the same, this time using NinthSense's answer:

    try
    {       
        SqlConnection sqlConnection = new SqlConnection(connectionString);
        sqlConnection.Open();
    
        string serverVersion = sqlConnection.ServerVersion;
        string[] serverVersionDetails = serverVersion.Split( new string[] {"."}, StringSplitOptions.None);
    
        int versionNumber = int.Parse(serverVersionDetails[0]);
    
        switch (versionNumber)
        {
            case 8:
                MessageBox.Show("SQL Server 2000");
                break;
            case 9:
                MessageBox.Show("SQL Server 2005");
                break;
            case 10:
                MessageBox.Show("SQL Server 2008");
                break;
            default:
                MessageBox.Show(string.Format("SQL Server {0}", versionNumber.ToString()));  
                break;  
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(string.Format("Unable to connect to server due to exception: {1}", ex.Message),
            "Invalid Connection!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    
    }
    finally
    {
        sqlConnection.Close();
    }
    

提交回复
热议问题