internal static string GenerateAuditScript(string storageConnectionString, ScriptAction scriptAction, ProgressChangeDelegate progressChangeDelegate) { //Set Audit Settings SqlAuditSettings myAuditSettings = new SqlAuditSettings(storageConnectionString); //Choose Script MMC.SyncAction myAuditSettings.ScriptAction = scriptAction; //Select Audit Columns myAuditSettings.AuditColumns = AuditColumns.ApplicationName | AuditColumns.AuditDateTime | AuditColumns.HostId | AuditColumns.HostName | AuditColumns.UserName | AuditColumns.UserSID; //Choose Triggers MMC.SyncAction myAuditSettings.TriggersActions = TriggerActions.Insert | TriggerActions.Update | TriggerActions.Delete; //Choose Indexes MMC.SyncAction myAuditSettings.IndexesAction = IndexesAction.SameIndexesAsSourceTable; //Assign naming properties myAuditSettings.AuditTablesSuffix = "_Audit"; myAuditSettings.AuditTriggersSuffix = "_TriggerForAudit"; //Define File Groups myAuditSettings.TablesFileGroupName = "[PRIMARY]"; myAuditSettings.IndexesFileGroupName = "[PRIMARY]"; //Use SqlAuditDiscovery Class to get Table Schemas. SqlAuditDiscovery auditDiscoveryUtility = new SqlAuditDiscovery(storageConnectionString); //Get TableInfo Collection TableInfoCollection myTables = auditDiscoveryUtility.GetAllTableInfo(myAuditSettings); //*** Tables Customization ***// myTables.Remove(new SchemaTablePair("dbo", "UsersDemo")); myTables.Remove(new SchemaTablePair("dbo", "netsqlazman_LogTable")); //Generate Audit Script SqlAuditGenerator generator = new SqlAuditGenerator(myAuditSettings); generator.ProgressChange += progressChangeDelegate; return(generator.GenerateDDLScriptForAuditTables(myTables)); }
/// <summary> /// Sort the input table by DependenceIndex /// </summary> /// <param name="this"></param> /// <param name="tableNames"></param> /// <returns></returns> public static string[] SortByDependences(this TableInfoCollection @this, params string[] tableNames) => tableNames.OrderBy(t => @this[t]?.DependenceIndex ?? 0).ToArray();
public static IList <TableInfo> SortByDependences(this TableInfoCollection @this) => @this.OrderBy(t => t.DependenceIndex).ToList();
public static IEnumerable <TableInfo> GetTableInfoByName(this TableInfoCollection @this, params string[] tableNames) => @this.Where(t => tableNames.Any(s => s == t.Name));