public override IList <SqlRuleProblem> Analyze(SqlRuleExecutionContext ruleExecutionContext) { TSqlFragment fragment = ruleExecutionContext.ScriptFragment; RuleDescriptor ruleDescriptor = ruleExecutionContext.RuleDescriptor; TSqlObject modelElement = ruleExecutionContext.ModelElement; string elementName = RuleUtils.GetElementName(ruleExecutionContext, modelElement); CreateTableStatementVisitor visitor = new CreateTableStatementVisitor(); fragment.Accept(visitor); return(( from table in visitor.Nodes where table.SchemaObjectName.BaseIdentifier.Value.ToUpper().Contains("VIEW") select new SqlRuleProblem(String.Format(CultureInfo.CurrentCulture, ruleDescriptor.DisplayDescription, elementName), modelElement) ).ToList()); }
public override IList <SqlRuleProblem> Analyze(SqlRuleExecutionContext ruleExecutionContext) { TSqlFragment fragment = ruleExecutionContext.ScriptFragment; RuleDescriptor ruleDescriptor = ruleExecutionContext.RuleDescriptor; TSqlObject modelElement = ruleExecutionContext.ModelElement; string elementName = RuleUtils.GetElementName(ruleExecutionContext, modelElement); CreateTableStatementVisitor visitor = new CreateTableStatementVisitor(); fragment.Accept(visitor); // Begin with alpha character Regex regex = new Regex(@"^[A-Z][a-zA-Z0-9]*$"); return(( from table in visitor.Nodes where !regex.IsMatch(table.SchemaObjectName.BaseIdentifier.Value) select new SqlRuleProblem(String.Format(CultureInfo.CurrentCulture, ruleDescriptor.DisplayDescription, table.SchemaObjectName.BaseIdentifier.Value), modelElement) ).ToList()); }
/// <summary> /// Ensure Primary Key included for each table /// is created /// </summary> /// <param name="ruleExecutionContext"></param> /// <returns></returns> public override IList <SqlRuleProblem> Analyze(SqlRuleExecutionContext ruleExecutionContext) { TSqlFragment fragment = ruleExecutionContext.ScriptFragment; RuleDescriptor ruleDescriptor = ruleExecutionContext.RuleDescriptor; TSqlObject modelElement = ruleExecutionContext.ModelElement; string elementName = RuleUtils.GetElementName(ruleExecutionContext, modelElement); CreateTableStatementVisitor visitor = new CreateTableStatementVisitor(); fragment.Accept(visitor); return(( from table in visitor.Nodes let isTemp = table.SchemaObjectName.BaseIdentifier.Value.StartsWith("#") || table.SchemaObjectName.BaseIdentifier.Value.StartsWith("@") where !isTemp && !table.Definition.TableConstraints.OfType <UniqueConstraintDefinition>().Any(x => x.IsPrimaryKey) select new SqlRuleProblem(String.Format(CultureInfo.CurrentCulture, ruleDescriptor.DisplayDescription, elementName), modelElement) ).ToList()); //List<SqlRuleProblem> problems = new List<SqlRuleProblem>(); //TSqlObject sqlObj = ruleExecutionContext.ModelElement; //if (sqlObj != null) //{ // if (sqlObj.Name != null && sqlObj.Name.Parts != null && sqlObj.Name.Parts.Any(x => x.StartsWith("#") || x.StartsWith("@"))) // { // return problems; // } // var child = sqlObj.GetChildren(DacQueryScopes.All).FirstOrDefault(x => x.ObjectType == PrimaryKeyConstraint.TypeClass); // if (child == null) // { // string msg = string.Format(Message, RuleUtils.GetElementName(ruleExecutionContext, sqlObj)); // problems.Add(new SqlRuleProblem(msg, sqlObj)); // } //} //return problems; }
public override IList <SqlRuleProblem> Analyze(SqlRuleExecutionContext ruleExecutionContext) { IList <SqlRuleProblem> problems = new List <SqlRuleProblem>(); TSqlFragment fragment = ruleExecutionContext.ScriptFragment; RuleDescriptor ruleDescriptor = ruleExecutionContext.RuleDescriptor; TSqlObject modelElement = ruleExecutionContext.ModelElement; string elementName = RuleUtils.GetElementName(ruleExecutionContext, modelElement); CreateTableStatementVisitor visitor = new CreateTableStatementVisitor(); fragment.Accept(visitor); // Begin with alpha character. Only contain alphanumeric. Regex regex = new Regex(@"^[A-Z][a-zA-Z0-9]*$"); return(( from table in visitor.Nodes where table.Definition.ColumnDefinitions.Any(x => !regex.IsMatch(x.ColumnIdentifier.Value)) select new SqlRuleProblem(String.Format(CultureInfo.CurrentCulture, ruleDescriptor.DisplayDescription, elementName), modelElement) ).ToList()); }