public static string GetAuditScript(TableConfig tableCfg, AuditScriptType type, ConnectionData connData) { switch (type) { case AuditScriptType.CreateAuditTable: return(AuditHelper.ScriptForAuditTableCreation(tableCfg, connData)); case AuditScriptType.CreateInsertTrigger: case AuditScriptType.CreateUpdateTrigger: case AuditScriptType.CreateDeleteTrigger: return(AuditHelper.ScriptForAuditTriggers(tableCfg, connData, type, false)); case AuditScriptType.TriggerDisable: return(AuditHelper.ScriptForAuditTriggerEnableDisable(tableCfg.TableName, connData, false)); case AuditScriptType.TriggerEnable: return(AuditHelper.ScriptForAuditTriggerEnableDisable(tableCfg.TableName, connData, true)); case AuditScriptType.MasterTable: return(AuditHelper.ScriptForAuditMasterTable(false)); } return(string.Empty); }
private static string ScriptForAuditTriggers(TableConfig parentTable, ConnectionData connData, AuditScriptType type, bool useDS) { SqlSync.TableScript.ResourceHelper resHelper = new SqlSync.TableScript.ResourceHelper(); ColumnInfo[] columns = SqlSync.DbInformation.InfoHelper.GetColumnNamesWithTypes(parentTable.TableName, connData); StringBuilder cols = new StringBuilder(); for (int i = 0; i < columns.Length; i++) { if (columns[i].DataType.ToLower() == "text" || columns[i].DataType.ToLower() == "ntext" || columns[i].DataType.ToLower() == "image") { continue; } cols.AppendFormat("[{0}],", columns[i].ColumnName); } cols.Length = cols.Length - 1; string colList = cols.ToString(); string auditTableName = String.Format(auditTableNameFormat, parentTable.TableName); string schema, parentTableName; InfoHelper.ExtractNameAndSchema(auditTableName, out auditTableName, out schema); InfoHelper.ExtractNameAndSchema(parentTable.TableName, out parentTableName, out schema); StringBuilder sb = new StringBuilder(); if (type == AuditScriptType.CreateInsertTrigger) { //Insert Trigger if (!useDS) { sb.Append(Properties.Resources.AuditInsertTrigger); } else { sb.Append(Properties.Resources.AuditInsertTriggerDS); } TriggerTemplateReplacements(ref sb, auditTableName, parentTableName, colList, String.Format(triggerNameFormat, parentTableName, "INSERT"), schema); } //Update Trigger if (type == AuditScriptType.CreateUpdateTrigger) { if (!useDS) { sb.Append(Properties.Resources.AuditUpdateTrigger); } else { sb.Append(Properties.Resources.AuditUpdateTriggerDS); } TriggerTemplateReplacements(ref sb, auditTableName, parentTableName, colList, String.Format(triggerNameFormat, parentTableName, "UPDATE"), schema); } //Delete Trigger if (type == AuditScriptType.CreateDeleteTrigger) { if (!useDS) { sb.Append(Properties.Resources.AuditDeleteTrigger); } else { sb.Append(Properties.Resources.AuditDeleteTriggerDS); } TriggerTemplateReplacements(ref sb, auditTableName, parentTableName, colList, String.Format(triggerNameFormat, parentTableName, "DELETE"), schema); } return(sb.ToString()); }