public string GenerateAuditingFrameworkUpdateSql(AuditUpdateParameters updateParameters) { StringBuilder sqlBuilder = new StringBuilder(); Action <string, float?> reportProgress = (message, percentComplete) => { sqlBuilder.AppendLine(); sqlBuilder.AppendFormat("PRINT(N'{0}');", message); sqlBuilder.AppendLine(); sqlBuilder.AppendLine("GO"); OnReportProgress(message, percentComplete); }; SqlConnection connection = updateParameters.AuditingDatabaseConnection; try { OnReportProgress("Started generating script", null); connection.Open(); if (updateParameters.RemoveAll) { GenerateRemoveAll(sqlBuilder, updateParameters); } else { LoadSchemaDataSet(updateParameters); GenerateDatabaseFiles.GenerateDatabaseSetup(sqlBuilder, updateParameters, reportProgress); GenerateAuditingBase.CreateBaseAuditingTables(sqlBuilder, updateParameters, reportProgress); GenerateAuditingBase.CreateBaseAuditingProcedures(sqlBuilder, updateParameters, reportProgress); GenerateAuditingBase.CreateProcedureGrant(sqlBuilder, updateParameters, reportProgress); GenerateSchemaAudit.GenerateAuditForAllSchemas(sqlBuilder, updateParameters, reportProgress); GenerateDelta.GenerateBuildAllDeltaProcedures(sqlBuilder, updateParameters, reportProgress); } } finally { if (connection.State != ConnectionState.Closed) { connection.Close(); } } return(sqlBuilder.ToString()); }
internal static TrackingTable GenerateAuditForTable(string schema, string tableName, SchemaDataSet.SchemaPrimaryKeysDataTable primaryKeysDataTable, StringBuilder sqlBuilder, AuditUpdateParameters updateParameters, Action <string, float?> reportProgress) { TrackingTable trackingTable; reportProgress(String.Format("Generating audit for table {0}", tableName), null); List <SchemaDataSet.ColumnsRow> targetTableColumns = GetAuditedColumnsForTable(schema, tableName, updateParameters); bool createNewTableVersion = NewVersionOfTrackingTableNeeded(schema, tableName, targetTableColumns, updateParameters); if (createNewTableVersion) { trackingTable = GenerateTableTracking.GenerateNewTrackingTable(schema, tableName, targetTableColumns, updateParameters, sqlBuilder, reportProgress); } else { trackingTable = GenerateTableTracking.GetCurrentTrackingTable(schema, tableName, updateParameters); } GenerateTableTracking.GenerateAuditSupportForTable(schema, tableName, trackingTable, sqlBuilder, targetTableColumns, updateParameters, reportProgress); GenerateTableTracking.GenerateInstantSupportForTable(schema, tableName, sqlBuilder, updateParameters); GenerateDelta.CreateDeltaProcedures(schema, tableName, trackingTable, targetTableColumns, sqlBuilder, updateParameters, reportProgress); reportProgress(String.Format("Generated audit for table {0}", tableName), null); return(trackingTable); }