Exemple #1
0
 public ScriptTokenProcessor(CommonScript script, ScriptDbObject dbObject, DbInterpreter sourceInterpreter, DbInterpreter targetInterpreter)
 {
     this.Script            = script;
     this.DbObject          = dbObject;
     this.SourceInterpreter = sourceInterpreter;
     this.TargetInterpreter = targetInterpreter;
 }
        public List <Script> GenereateScriptDbObjectChangedScripts(DbDifference difference, string targetDbOwner)
        {
            List <Script> scripts = new List <Script>();

            DbDifferenceType diffType = difference.DifferenceType;

            ScriptDbObject sourceScriptDbObject = difference.Source as ScriptDbObject;
            ScriptDbObject targetScriptDbObject = difference.Target as ScriptDbObject;

            if (diffType == DbDifferenceType.Added)
            {
                var cloneObj = this.CloneDbObject(sourceScriptDbObject, targetDbOwner);
                scripts.Add(new CreateDbObjectScript <ScriptDbObject>(cloneObj.Definition));
            }
            else if (diffType == DbDifferenceType.Deleted)
            {
                scripts.Add(this.targetScriptGenerator.Drop(sourceScriptDbObject));
            }
            else if (diffType == DbDifferenceType.Modified)
            {
                var cloneObj = this.CloneDbObject(sourceScriptDbObject, targetScriptDbObject.Owner);
                scripts.Add(this.targetScriptGenerator.Drop(targetScriptDbObject));
                scripts.Add(this.targetScriptGenerator.Add(cloneObj));
            }

            return(scripts);
        }
Exemple #3
0
        public void Validate(ScriptDbObject script)
        {
            if (sourceDbType == DatabaseType.SqlServer && targetDbType != DatabaseType.SqlServer)
            {
                //ANTRL can't handle "top 100 percent" correctly.
                Regex regex = new Regex(@"(TOP[\s]+100[\s]+PERCENT)", RegexOptions.IgnoreCase);

                if (regex.IsMatch(script.Definition))
                {
                    script.Definition = regex.Replace(script.Definition, "");
                }
            }

            if (script.Owner != this.TargetDbOwner)
            {
                Regex ownerRegex = new Regex($@"[{this.sourceDbInterpreter.QuotationLeftChar}]({script.Owner})[{this.sourceDbInterpreter.QuotationRightChar}][\.]", RegexOptions.IgnoreCase);

                if (ownerRegex.IsMatch(script.Definition))
                {
                    script.Definition = ownerRegex.Replace(script.Definition, "");
                }
            }
        }