//--------------------------------------------------------------------- // <copyright file="SqlVersion.cs" company="Microsoft"> // Copyright (c) Microsoft Corporation. All rights reserved. // </copyright> // // @owner Microsoft // @backupOwner Microsoft //--------------------------------------------------------------------- namespace System.Data.SqlClient { using System.Data; using System.Data.Entity; using System.Globalization; /// <summary> /// This enum describes the current server version /// </summary> internal enum SqlVersion { /// <summary> /// Sql Server 8 /// </summary> Sql8 = 80, /// <summary> /// Sql Server 9 /// </summary> Sql9 = 90, /// <summary> /// Sql Server 10 /// </summary> Sql10 = 100, // higher versions go here } /// <summary> /// This class is a simple utility class that determines the sql version from the /// connection /// </summary> internal static class SqlVersionUtils { /// <summary> /// Get the SqlVersion from the connection. Returns one of Sql8, Sql9, Sql10 /// The passed connection must be open /// </summary> /// <param name="connection">current sql connection</param> /// <returns>Sql Version for the current connection</returns> internal static SqlVersion GetSqlVersion(SqlConnection connection) { System.Diagnostics.Debug.Assert(connection.State == ConnectionState.Open, "Expected an open connection"); int majorVersion = Int32.Parse(connection.ServerVersion.Substring(0, 2), CultureInfo.InvariantCulture); if (majorVersion >= 10) { return SqlVersion.Sql10; } else if (majorVersion == 9) { return SqlVersion.Sql9; } else { System.Diagnostics.Debug.Assert(majorVersion == 8, "not version 8"); return SqlVersion.Sql8; } } internal static string GetVersionHint(SqlVersion version) { switch(version) { case SqlVersion.Sql8: return SqlProviderManifest.TokenSql8; case SqlVersion.Sql9: return SqlProviderManifest.TokenSql9; case SqlVersion.Sql10: return SqlProviderManifest.TokenSql10; default: throw EntityUtil.Argument(Strings.UnableToDetermineStoreVersion); } } internal static SqlVersion GetSqlVersion(string versionHint) { if (!string.IsNullOrEmpty(versionHint)) { switch (versionHint) { case SqlProviderManifest.TokenSql8: return SqlVersion.Sql8; case SqlProviderManifest.TokenSql9: return SqlVersion.Sql9; case SqlProviderManifest.TokenSql10: return SqlVersion.Sql10; } } throw EntityUtil.Argument(Strings.UnableToDetermineStoreVersion); } internal static bool IsPreKatmai(SqlVersion sqlVersion) { return sqlVersion == SqlVersion.Sql8 || sqlVersion == SqlVersion.Sql9; } } }