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));
        }
        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);
        }