예제 #1
0
        public static void LoadFromSMO(MSMO.Database database, Guid databaseID)
        {
#if TRACE
            long startTicks = VNC.AppLog.Trace3("Enter", LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 0);
#endif

            // This will be a problem if skip IsFixedRole, see below.

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

            foreach (MSMO.DatabaseRole databaseRole in database.Roles)
            {
                if (databaseRole.IsFixedRole)
                {
                    continue;   // Skip Fixed Roles
                }

                SQLInformation.Data.ApplicationDataSet.DBRolesRow rolesRow = GetInfoFromSMO(databaseRole, databaseID);
                rolesRow.NotFound = false;
            }

            Common.ApplicationDataSet.DBRolesTA.Update(Common.ApplicationDataSet.DBRoles);
#if TRACE
            VNC.AppLog.Trace3("Exit", LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 1, startTicks);
#endif
        }
예제 #2
0
        private static SQLInformation.Data.ApplicationDataSet.DBRolesRow Add(MSMO.DatabaseRole databaseRole, Guid databaseID)
        {
            SQLInformation.Data.ApplicationDataSet.DBRolesRow dataRow = null;

            try
            {
                dataRow = Common.ApplicationDataSet.DBRoles.NewDBRolesRow();

                dataRow.ID               = Guid.NewGuid();
                dataRow.Database_ID      = databaseID;
                dataRow.IsFixedRole      = databaseRole.IsFixedRole;
                dataRow.Name_Role        = databaseRole.Name;
                dataRow.CreateDate       = databaseRole.CreateDate;
                dataRow.DateLastModified = databaseRole.DateLastModified;

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

                Common.ApplicationDataSet.DBRoles.AddDBRolesRow(dataRow);
                Common.ApplicationDataSet.DBRolesTA.Update(Common.ApplicationDataSet.DBRoles);
            }
            catch (Exception ex)
            {
                VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 5);
                // TODO(crhodes):  Need to 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);
        }
예제 #3
0
        private static void Update(MSMO.DatabaseRole databaseRole, SQLInformation.Data.ApplicationDataSet.DBRolesRow dataRow)
        {
            try
            {
                databaseRole.UpdateDataSet(dataRow);

                UpdateDatabaseWithSnapShot(dataRow, "");
            }
            catch (Exception ex)
            {
                VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 6);

                UpdateDatabaseWithSnapShot(dataRow, ex.ToString().Substring(0, 256));
            }
        }
예제 #4
0
        private static SQLInformation.Data.ApplicationDataSet.DBRolesRow GetInfoFromSMO(MSMO.DatabaseRole databaseRole, Guid databaseID)
        {
#if TRACE
            long startTicks = VNC.AppLog.Trace4("Enter", LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 2);
#endif
            SQLInformation.Data.ApplicationDataSet.DBRolesRow dataRow = null;

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

                var dbs2 = from db2 in dbs
                           where db2.Name_Role == databaseRole.Name
                           select db2;

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

#if TRACE
            VNC.AppLog.Trace4("Exit", LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 4, startTicks);
#endif
            return(dataRow);
        }