コード例 #1
0
        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());
        }
コード例 #2
0
        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);
        }