Определить версию SQL Server из ADO.NET

класс, интерфейс или enum expected

Вышеприведенная ошибка даже возможна, если инструкция импорта пропущена. Правильное утверждение - «import com.company.HelloWorld;»

Если по ошибке при написании и редактировании кода это не написано как «t com.company.HelloWorld;»

компилятор покажет «класс, интерфейс или ожидаемое перечисление»

13
задан MagicAndi 4 June 2009 в 10:58
поделиться

5 ответов

Этот код определит версию используемой базы данных SQL Server - 2000, 2005 или 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);

}

Подойдет следующий код. то же самое, на этот раз с использованием ответа NinthSense :

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();
}
17
ответ дан 1 December 2019 в 17:55
поделиться
SqlConnection con = new SqlConnection("Server=localhost;Database=test;user=admin;password=123456;");
con.Open();
Text = con.ServerVersion;
con.Close();

con.ServerVersion даст вам:

  • 9.xx для SQL Server 2005
  • 10.xx для SQL Server 2008
13
ответ дан 1 December 2019 в 17:55
поделиться

Запустите этот сценарий из обычного SqlCommand - он довольно обширный и полезный!

SELECT  
    SERVERPROPERTY('productversion') as 'Product Version', 
    SERVERPROPERTY('productlevel') as 'Patch Level',  
    SERVERPROPERTY('edition') as 'Product Edition',
    SERVERPROPERTY('buildclrversion') as 'CLR Version',
    SERVERPROPERTY('collation') as 'Default Collation',
    SERVERPROPERTY('instancename') as 'Instance',
    SERVERPROPERTY('lcid') as 'LCID',
    SERVERPROPERTY('servername') as 'Server Name'

Marc

7
ответ дан 1 December 2019 в 17:55
поделиться
6
ответ дан 1 December 2019 в 17:55
поделиться

Версия сервера также доступна как (строковое) свойство в объекте Connection и как свойство SqlVersion в ServerConnection.

А SQl2008 - версия> = 10

2
ответ дан 1 December 2019 в 17:55
поделиться