예제 #1
0
 private static bool IsLocal(string sqlConnectionString, LocalDbServerVerifier localDbServerVerifier)
 {
     sqlConnectionString = sqlConnectionString.ToUpperInvariant();
     string[] array = new string[5]
     {
         "DATA SOURCE",
         "SERVER",
         "ADDRESS",
         "ADDR",
         "NETWORK ADDRESS"
     };
     foreach (string value in array)
     {
         int num = sqlConnectionString.IndexOf(value, StringComparison.Ordinal);
         if (num != -1)
         {
             int num2 = sqlConnectionString.IndexOf("=", num, StringComparison.Ordinal);
             if (num2 != -1 && num2 != sqlConnectionString.Length - 1)
             {
                 int num3 = num2 + 1;
                 int num4 = sqlConnectionString.IndexOf(";", num3, StringComparison.Ordinal);
                 if (num4 != sqlConnectionString.Length - 1)
                 {
                     string sqlInstanceName = sqlConnectionString.Substring(num3, num4 - num3);
                     string machineNameFromSqlInstanceName = SkuUtil.GetMachineNameFromSqlInstanceName(sqlInstanceName);
                     return(localDbServerVerifier(machineNameFromSqlInstanceName));
                 }
             }
         }
     }
     return(false);
 }
예제 #2
0
 private static bool IsStandardOrHigher(SkuType sku)
 {
     if (sku != SkuType.Standard && sku != SkuType.SBS)
     {
         return(SkuUtil.IsEnterpriseOrHigher(sku));
     }
     return(true);
 }
예제 #3
0
 private static bool IsWebOrHigher(SkuType sku)
 {
     if (sku != SkuType.Web)
     {
         return(SkuUtil.IsStandardOrHigher(sku));
     }
     return(true);
 }
예제 #4
0
 private static bool IsWorkgroupOrHigher(SkuType sku)
 {
     if (sku != SkuType.Workgroup)
     {
         return(SkuUtil.IsWebOrHigher(sku));
     }
     return(true);
 }
예제 #5
0
        public static bool IsFeatureEnabled(SkuType sku, RestrictedFeatures feature, out bool isFeatureExpected)
        {
            isFeatureExpected = true;
            switch (feature)
            {
            case RestrictedFeatures.CustomAuth:
                return(true);

            case RestrictedFeatures.ReportBuilder:
                return(SkuUtil.IsWorkgroupOrHigher(sku));

            case RestrictedFeatures.NoCpuThrottling:
            case RestrictedFeatures.NoMemoryThrottling:
                return(SkuUtil.IsDataCenterOrHigher(sku));

            case RestrictedFeatures.ScaleOut:
            case RestrictedFeatures.DataDrivenSubscriptions:
            case RestrictedFeatures.DataAlerting:
            case RestrictedFeatures.Crescent:
            case RestrictedFeatures.KpiItems:
            case RestrictedFeatures.MobileReportItems:
            case RestrictedFeatures.Branding:
                return(SkuUtil.IsEnterpriseOrHigher(sku));

            case RestrictedFeatures.NonSqlDataSources:
            case RestrictedFeatures.OtherSkuDatasources:
            case RestrictedFeatures.RemoteDataSources:
            case RestrictedFeatures.Caching:
            case RestrictedFeatures.ExecutionSnapshots:
            case RestrictedFeatures.History:
            case RestrictedFeatures.Delivery:
            case RestrictedFeatures.Scheduling:
            case RestrictedFeatures.Extensibility:
            case RestrictedFeatures.Sharepoint:
            case RestrictedFeatures.Subscriptions:
            case RestrictedFeatures.CustomRolesSecurity:
            case RestrictedFeatures.ModelItemSecurity:
            case RestrictedFeatures.DynamicDrillthrough:
            case RestrictedFeatures.EventGeneration:
            case RestrictedFeatures.ComponentLibrary:
            case RestrictedFeatures.SharedDataset:
            case RestrictedFeatures.PowerBI:
                return(SkuUtil.IsStandardOrHigher(sku));

            default:
                isFeatureExpected = false;
                return(false);
            }
        }
예제 #6
0
        public static SkuType GetSqlSku(SqlConnection sqlConn)
        {
            object     obj        = null;
            SqlCommand sqlCommand = new SqlCommand("SELECT SERVERPROPERTY('Edition')", sqlConn);

            sqlCommand.CommandType = CommandType.Text;
            obj = sqlCommand.ExecuteScalar();
            if (obj == null)
            {
                return(SkuType.None);
            }
            string edition = (string)obj;

            return(SkuUtil.SkuFromString(edition));
        }
예제 #7
0
        public static List <SkuType> GetDatabaseSku(SkuType reportServerSku, out List <SkuType> restrictedSkus)
        {
            List <SkuType> list = new List <SkuType>();

            restrictedSkus = new List <SkuType>();
            switch (reportServerSku)
            {
            case SkuType.Express:
                list.Add(SkuType.Express);
                break;

            case SkuType.Web:
                list.Add(SkuType.Web);
                break;

            case SkuType.Workgroup:
                list.Add(SkuType.Workgroup);
                break;

            case SkuType.Standard:
            case SkuType.Enterprise:
            case SkuType.DataCenter:
            case SkuType.BusinessIntelligence:
            case SkuType.EnterpriseCore:
                restrictedSkus.Add(SkuType.Developer);
                restrictedSkus.Add(SkuType.Evaluation);
                break;

            case SkuType.Developer:
                restrictedSkus.Add(SkuType.Evaluation);
                break;

            case SkuType.Evaluation:
                restrictedSkus.Add(SkuType.Developer);
                break;
            }
            if (SkuUtil.IsStandardOrHigher(reportServerSku))
            {
                restrictedSkus.Add(SkuType.Workgroup);
                restrictedSkus.Add(SkuType.Express);
                restrictedSkus.Add(SkuType.Web);
            }
            return(list);
        }
예제 #8
0
        public static SkuVerificationErrorCode EnsureCorrectEdition(SkuType rsSku, SkuType sqlSku, string connectionString, LocalDbServerVerifier localDbServerVerifier, bool checkRestrictedSkus)
        {
            if (!SkuUtil.IsStandardOrHigher(rsSku) && !SkuUtil.IsLocal(connectionString, localDbServerVerifier))
            {
                return(SkuVerificationErrorCode.LocalConnectionRequired);
            }
            List <SkuType> list        = new List <SkuType>();
            List <SkuType> databaseSku = SkuUtil.GetDatabaseSku(rsSku, out list);

            if (databaseSku.Count > 0 && !databaseSku.Contains(sqlSku))
            {
                return(SkuVerificationErrorCode.DatabaseSkuRequired);
            }
            if (checkRestrictedSkus && list.Count > 0 && list.Contains(sqlSku))
            {
                return(SkuVerificationErrorCode.DatabaseSkuRestricted);
            }
            return(SkuVerificationErrorCode.Success);
        }
예제 #9
0
 public static bool IsBusinessIntelligenceOrHigher(SkuType sku)
 {
     return(SkuUtil.IsDataCenterOrHigher(sku));
 }
예제 #10
0
 private static bool IsEnterpriseOrHigher(SkuType sku)
 {
     return(SkuUtil.IsDataCenterOrHigher(sku));
 }
예제 #11
0
        public static bool IsFeatureEnabled(SkuType sku, RestrictedFeatures feature)
        {
            bool flag = default(bool);

            return(SkuUtil.IsFeatureEnabled(sku, feature, out flag));
        }