Пример #1
0
        private static void Update(MSMO.Table table, SQLInformation.Data.ApplicationDataSet.DBTablesRow dataRow)
        {
            try
            {
                try
                {
                    try
                    {
                        dataRow.DataSpaceUsed = table.DataSpaceUsed;
                    }
                    catch (Exception ex)
                    {
#if TRACE
                        VNC.AppLog.Debug(ex.ToString(), LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 10);
#endif
                        dataRow.DataSpaceUsed = -1;
                    }

                    try
                    {
                        dataRow.DateLastModified = table.DateLastModified;
                    }
                    catch (Exception ex)
                    {
#if TRACE
                        VNC.AppLog.Debug(ex.ToString(), LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 11);
#endif
                    }

                    dataRow.FileGroup = table.FileGroup;
                    dataRow.Owner     = table.Owner;
                    dataRow.RowCount  = table.RowCount;
                }
                catch (Exception ex)
                {
                    ReportException(ex, dataRow, CLASS_BASE_ERRORNUMBER + 12);
                    //VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 12);
                    // TODO(crhodes):
                    // Wrap anything above that throws an exception that we want to ignore,
                    // e.g. property not available because of SQL Edition.
                }

                dataRow.SnapShotDate  = DateTime.Now;
                dataRow.SnapShotError = "";

                Common.ApplicationDataSet.DBTables_Update();
                //UpdateDatabaseWithSnapShot(dataRow, "");
            }
            catch (Exception ex)
            {
                ReportException(ex, dataRow, CLASS_BASE_ERRORNUMBER + 13);
                //VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 9);

                //UpdateDatabaseWithSnapShot(dataRow, ex.ToString().Substring(0, 256));
            }
        }
Пример #2
0
        public static void LoadFromSMO(MSMO.Database database, Guid databaseID, ExpandMask.TableExpandSetting tableExpandSetting)
        {
#if TRACE
            long startTicks = VNC.AppLog.Trace3("Enter", LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 0);
#endif
            SQLInformation.Data.ApplicationDataSet.DBTablesRow dataRow = null;

            MarkExistingItemsAsNotFound(databaseID);    // This enables cleanup of items that once existed but were deleted.

            foreach (MSMO.Table table in database.Tables)
            {
                if (table.IsSystemObject)
                {
                    continue;   // Skip System Tables
                }

                dataRow          = GetInfoFromSMO(table, databaseID, tableExpandSetting);
                dataRow.NotFound = false;

                if (dataRow.ExpandColumns)
                {
                    try
                    {
                        TableColumn.LoadFromSMO(table, dataRow.ID);
                    }
                    catch (Exception ex)
                    {
                        ReportException(ex, dataRow, CLASS_BASE_ERRORNUMBER + 1);
                        //VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 1);
                    }
                }

                try
                {
                    TableTrigger.LoadFromSMO(table, dataRow.ID);
                }
                catch (Exception ex)
                {
                    ReportException(ex, dataRow, CLASS_BASE_ERRORNUMBER + 2);
                    //VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 2);
                }
            }

            Common.ApplicationDataSet.DBTablesTA.Update(Common.ApplicationDataSet.DBTables);
#if TRACE
            VNC.AppLog.Trace3("Exit", LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 3, startTicks);
#endif
        }
Пример #3
0
        private void LoadTables(string instanceName, SQLInformation.Data.ApplicationDataSet.DatabasesRow databaseRow)
        {
#if TRACE
            //long startTicks = Common.WriteToDebugWindow(string.Format("Enter {0}:{1}()", TYPE_NAME, System.Reflection.MethodInfo.GetCurrentMethod().Name));
#endif

            SMO.Server server = SMOH.SMOD.GetServer(instanceName);

            SQLInformation.Data.ApplicationDataSetTableAdapters.DBTablesTableAdapter tableAdapter = new SQLInformation.Data.ApplicationDataSetTableAdapters.DBTablesTableAdapter();
            tableAdapter.Connection.ConnectionString = SQLInformation.Data.Config.SQLMonitorDBConnection;

            int dbID = databaseRow.ID_DB;

            SMO.Database db = server.Databases.ItemById(dbID);

            foreach (SMO.Table table in db.Tables)
            {
                SMOH.Table tableH = new SMOH.Table(table);

                SQLInformation.Data.ApplicationDataSet.DBTablesRow newTable = Common.ApplicationDataSet.DBTables.NewDBTablesRow();

                newTable.ID            = Guid.NewGuid(); // See if this is available from table.
                newTable.Name_Table    = tableH.Name;
                newTable.Table_ID      = tableH.ID;
                newTable.Database_ID   = databaseRow.ID; // From above
                newTable.Owner         = tableH.Owner;
                newTable.CreateDate    = DateTime.Parse(tableH.CreateDate);
                newTable.DataSpaceUsed = int.Parse(tableH.DataSpaceUsed);

                try
                {
                    newTable.DateLastModified = DateTime.Parse(tableH.DateLastModified);
                }
                catch (Exception ex)
                {
                }

                newTable.RowCount = int.Parse(tableH.RowCount);

                Common.ApplicationDataSet.DBTables.AddDBTablesRow(newTable);
                tableAdapter.Update(Common.ApplicationDataSet.DBTables);
            }
#if TRACE
            //Common.WriteToDebugWindow(string.Format("Exit {0}:{1}()", TYPE_NAME, System.Reflection.MethodInfo.GetCurrentMethod().Name), startTicks);
#endif
        }
Пример #4
0
        private static SQLInformation.Data.ApplicationDataSet.DBTablesRow GetInfoFromSMO(MSMO.Table table, Guid databaseID, ExpandMask.TableExpandSetting tableExpandSetting)
        {
#if TRACE
            long startTicks = VNC.AppLog.Trace4(string.Format("Enter {0}", table.Name), LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 4);
#endif
            SQLInformation.Data.ApplicationDataSet.DBTablesRow dataRow = null;

            try
            {
                var dbs = from tb in Common.ApplicationDataSet.DBTables
                          where tb.Database_ID == databaseID
                          select tb;

                var dbs2 = from db2 in dbs
                           where db2.Name_Table == table.Name
                           select db2;

                if (dbs2.Count() > 0)
                {
                    dataRow = dbs2.First();
                    Update(table, dataRow);
                }
                else
                {
                    dataRow = Add(databaseID, table, tableExpandSetting);
                }
            }
            catch (Exception ex)
            {
                ReportException(ex, dataRow, CLASS_BASE_ERRORNUMBER + 5);
                //VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 5);
            }

#if TRACE
            VNC.AppLog.Trace4(string.Format("Exit {0}", table.Name), LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 6, startTicks);
#endif
            return(dataRow);
        }
Пример #5
0
        private static SQLInformation.Data.ApplicationDataSet.DBTablesRow Add(Guid databaseID, MSMO.Table table, ExpandMask.TableExpandSetting tableExpandSetting)
        {
            SQLInformation.Data.ApplicationDataSet.DBTablesRow dataRow = null;

            try
            {
                dataRow             = Common.ApplicationDataSet.DBTables.NewDBTablesRow();
                dataRow.ID          = Guid.NewGuid();
                dataRow.Database_ID = databaseID;  // From above

                dataRow.Name_Table = table.Name;
                dataRow.CreateDate = table.CreateDate;

                try
                {
                    dataRow.DataSpaceUsed = table.DataSpaceUsed;
                }
                catch (Exception ex)
                {
#if TRACE
                    VNC.AppLog.Debug(ex.ToString(), LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 7);
#endif
                    dataRow.DataSpaceUsed = -1;
                }

                try
                {
                    dataRow.DateLastModified = table.DateLastModified;
                }
                catch (Exception ex)
                {
#if TRACE
                    VNC.AppLog.Debug(ex.ToString(), LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 7);
#endif
                }

                dataRow.FileGroup = table.FileGroup;
                dataRow.HasIndex  = table.HasIndex;
                dataRow.Owner     = table.Owner;
                dataRow.RowCount  = table.RowCount;  // TODO(crhodes): Fix DB Schema to match
                dataRow.Table_ID  = table.ID.ToString();

                dataRow.ExpandColumns = tableExpandSetting.ExpandColumns;

                dataRow.SnapShotDate  = DateTime.Now;
                dataRow.SnapShotError = "";

                Common.ApplicationDataSet.DBTables_Add(dataRow);

                //Common.ApplicationDataSet.DBTables.AddDBTablesRow(dataRow);

                //Common.ApplicationDataSet.DBTablesTA.Update(Common.ApplicationDataSet.DBTables);

                // TODO(crhodes) extract Extended Properties
            }
            catch (Exception ex)
            {
                ReportException(ex, dataRow, CLASS_BASE_ERRORNUMBER + 8);
                //VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 8);
                // TODO(crhodes):
                // Wrap anything above that throws an exception that we want to ignore,
                // e.g. property not available because of SQL Edition.

                //UpdateDatabaseWithSnapShot(dataRow, ex.ToString().Substring(0, 256));
            }

            return(dataRow);
        }