c# - Determine la versión de SQL Server desde ADO.NET
sql-server .net-2.0 (5)
Ejecute este script desde un SqlCommand normal, ¡es bastante extenso y útil!
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''
Bagazo
Necesito determinar la versión de SQL Server (2000, 2005 o 2008 en este caso particular) que una cadena de conexión conecta una aplicación de consola C # (.NET 2.0). ¿Alguien puede proporcionar alguna orientación sobre esto?
Gracias, MagicAndi
Actualizar
Me gustaría poder determinar la versión de SQL Server desde el objeto de conexión ADO.NET si es posible.
La versión del servidor también está disponible como una propiedad (cadena) en el objeto Connection y como una propiedad SqlVersion en ServerConnection.
Y SQl2008 es versión> = 10
SqlConnection con = new SqlConnection("Server=localhost;Database=test;user=admin;password=123456;");
con.Open();
Text = con.ServerVersion;
con.Close();
con.ServerVersion le dará:
- 9.xx para SQL Server 2005
- 10.xx para SQL Server 2008
Este código determinará la versión de la base de datos de SQL Server utilizada: 2000, 2005 o 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);
}
El siguiente código hará lo mismo, esta vez usando la respuesta de 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();
}