private void SyncServerInfoAndInstanceInfo(SQLInformation.Data.ApplicationDataSet.InstancesRow instance) { var servers = from s in Common.ApplicationDataSet.Servers where s.NetName == instance.NetName select s; try { SQLInformation.Data.ApplicationDataSet.ServersRow server = servers.First(); instance.Server_ID = server.ID; server.OSVersion = instance.OSVersion; server.PhysicalMemory = instance.PhysicalMemory; server.Platform = instance.Platform; server.Processors = instance.Processors; server.EndEdit(); } catch (Exception ex) { // No matching server. MessageBox.Show("No matching server. Add new entry then continue"); } }
private void OnTelnetToInstance(object sender, ItemClickEventArgs e) { //var row = dataGrid.View.FocusedRowData.Row; SQLInformation.Data.ApplicationDataSet.InstancesRow instance = (SQLInformation.Data.ApplicationDataSet.InstancesRow) ((System.Data.DataRowView)dataGrid.View.FocusedRowData.Row).Row; int portNumber = 0; if (instance.Port != null) { int.TryParse(instance.Port.ToString(), out portNumber); if (portNumber > 0) { var commandWindow = new wndDX_CommandTelnet(instance.Name_Instance, instance.NetName, instance.Port); commandWindow.ShowDialog(); } else { MessageBox.Show("Port number must be greater than 0"); } } }
private void btnSyncInstanceToServer_Click(object sender, RoutedEventArgs e) { SQLInformation.Data.ApplicationDataSet.InstancesRow instance = (SQLInformation.Data.ApplicationDataSet.InstancesRow) ((System.Data.DataRowView)instancesDataGrid.SelectedItem).Row; SyncServerInfoAndInstanceInfo(instance); }
private void FetchSMOInfo(SQLInformation.Data.ApplicationDataSet.InstancesRow instanceRow) { SQLInformation.ExpandMask.InstanceExpandSetting instanceExpandSetting = new SQLInformation.ExpandMask.InstanceExpandSetting(instanceRow.Server_ID); SQLInformation.ExpandMask.JobServerExpandSetting jobServerExpandSetting = new SQLInformation.ExpandMask.JobServerExpandSetting(instanceRow.DefaultJobServerExpandMask); SQLInformation.ExpandMask.DatabaseExpandSetting databaseExpandSetting = new SQLInformation.ExpandMask.DatabaseExpandSetting(instanceRow.DefaultDatabaseExpandMask); SQLInformation.SMO.Instance.GetInfoFromSMO(instanceRow, instanceExpandSetting, jobServerExpandSetting, databaseExpandSetting); }
private void FetchSMOInfo() { SQLInformation.Data.ApplicationDataSet.InstancesRow instance = (SQLInformation.Data.ApplicationDataSet.InstancesRow) ((System.Data.DataRowView)instancesDataGrid.SelectedItem).Row; try { SMO.Server server = SQLInformation.SMO.Server.GetFromSMO(instance.Name_Instance); //SMO.Server server = SQLInformation.SMO.Helper.Get_Server(instance.Name_Instance); instance.ServiceName = server.ServiceName; instance.Collation = server.Collation; instance.Edition = server.Edition; instance.IsClustered = server.IsClustered; instance.NetName = server.NetName; instance.OSVersion = server.OSVersion; instance.PhysicalMemory = server.PhysicalMemory; instance.Platform = server.Platform; instance.Processors = server.Processors; try { instance.ServiceAccount = server.ServiceAccount; } catch (Exception) { } try { instance.ServiceInstanceId = server.ServiceInstanceId; } catch (Exception) { } instance.EngineEdition = server.EngineEdition.ToString(); instance.Product = server.Product; instance.ProductLevel = server.ProductLevel; instance.Version = server.VersionString; instance.SnapShotDate = DateTime.Now; UpdateDatabase(); } catch (Microsoft.SqlServer.Management.Common.ConnectionFailureException) { instance.NetName = "Cannot Connect"; instance.SnapShotDate = DateTime.Now; UpdateDatabase(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); PLLog.Error(ex, PLLOG_APPNAME, CLASS_BASE_ERRORNUMBER + 2); } }
private void btnUpdateInfo_Click(object sender, RoutedEventArgs e) { var row = dataGrid.View.FocusedRowData.Row; SQLInformation.Data.ApplicationDataSet.InstancesRow instance = (SQLInformation.Data.ApplicationDataSet.InstancesRow) ((System.Data.DataRowView)dataGrid.View.FocusedRowData.Row).Row; FetchSMOInfo(instance); }
private void OnSave(object sender, RoutedEventArgs e) { int instanceExpandMask = 0; int databaseExpandMask = 0; int jobServerExpandMask = 0; try { foreach (var item in cbe_IsMonitored.SelectedItems) { instanceExpandMask += ((KeyValuePair <string, int>)item).Value; } foreach (var item in cbe_DefaultDatabaseExpandMask.SelectedItems) { databaseExpandMask += ((KeyValuePair <string, int>)item).Value; } foreach (var item in cbe_DefaultJobServerExpandMask.SelectedItems) { jobServerExpandMask += ((KeyValuePair <string, int>)item).Value; } ExpandMask.InstanceExpandSetting instanceExpandSetting = new ExpandMask.InstanceExpandSetting(instanceExpandMask); SQLInformation.Data.ApplicationDataSet.InstancesRow newInstance = Common.ApplicationDataSet.Instances.NewInstancesRow(); newInstance.ID = Guid.Parse(textEdit_ID.Text); newInstance.Name_Instance = txtEdit_Name_Instance.Text; newInstance.Port = int.Parse(tePortNumber.Text); newInstance.NetName = cbe_NetName.Text; newInstance.ADDomain = cbe_ADDomain.Text; newInstance.Environment = cbe_Environment.Text; newInstance.SecurityZone = cbe_SecurityZone.Text; newInstance.IsMonitored = instanceExpandSetting.IsMonitored; newInstance.ExpandContent = instanceExpandSetting.ExpandContent; newInstance.ExpandJobServer = instanceExpandSetting.ExpandJobServer; newInstance.ExpandStorage = instanceExpandSetting.ExpandStorage; newInstance.ExpandLogins = instanceExpandSetting.ExpandLogins; newInstance.ExpandServerRoles = instanceExpandSetting.ExpandServerRoles; newInstance.ExpandTriggers = instanceExpandSetting.ExpandTriggers; newInstance.DefaultDatabaseExpandMask = databaseExpandMask; newInstance.DefaultJobServerExpandMask = jobServerExpandMask; Common.ApplicationDataSet.Instances.AddInstancesRow(newInstance); Common.ApplicationDataSet.InstancesTA.Update(Common.ApplicationDataSet.Instances); } catch (Exception ex) { PLLog.Error(ex, PLLOG_APPNAME, CLASS_BASE_ERRORNUMBER + 2); } }
private void btnLoadFromXML_Click(object sender, RoutedEventArgs e) { Test_Data.InstanceData.LoadNewInstancesInfoFromFile(); foreach (var instance in Test_Data.InstanceData.DBInstances) { SQLInformation.Data.ApplicationDataSet.InstancesRow newInstance = Common.ApplicationDataSet.Instances.NewInstancesRow(); newInstance.ID = Guid.NewGuid(); newInstance.Name_Instance = instance.FullName; Common.ApplicationDataSet.Instances.AddInstancesRow(newInstance); } }
private void OnCreateSMOLogin(object sender, RoutedEventArgs e) { foreach (DataRowView s in tableView1.SelectedRows) { var row = dataGrid.View.FocusedRowData.Row; SQLInformation.Data.ApplicationDataSet.InstancesRow instance = (SQLInformation.Data.ApplicationDataSet.InstancesRow)s.Row; SQLInformation.SMO.Actions.Instance.CreateSQLMonitorLogin(instance.Name_Instance); } }
private void SyncServerInfoAndInstanceInfo(SQLInformation.Data.ApplicationDataSet.InstancesRow instance) { var servers = from s in Common.ApplicationDataSet.Servers where s.NetName == instance.NetName select s; SQLInformation.Data.ApplicationDataSet.ServersRow server = servers.First(); instance.Server_ID = server.ID; server.OSVersion = instance.OSVersion; server.PhysicalMemory = instance.PhysicalMemory; server.Platform = instance.Platform; server.Processors = instance.Processors; server.EndEdit(); }
private void btnSyncInstanceToServer_Click(object sender, RoutedEventArgs e) { // This for DataGrid //SQLInformation.Data.ApplicationDataSet.InstancesRow instance = // (SQLInformation.Data.ApplicationDataSet.InstancesRow) // ((System.Data.DataRowView)dataGrid.SelectedItem).Row; // This for GridControl var row = dataGrid.View.FocusedRowData.Row; SQLInformation.Data.ApplicationDataSet.InstancesRow instance = (SQLInformation.Data.ApplicationDataSet.InstancesRow) ((System.Data.DataRowView)dataGrid.View.FocusedRowData.Row).Row; SyncServerInfoAndInstanceInfo(instance); }
private void Button_Click(object sender, RoutedEventArgs e) { SQLInformation.Data.ApplicationDataSet.InstancesRow newInstance = Common.ApplicationDataSet.Instances.NewInstancesRow(); newInstance.ID = Guid.Parse(iDTextBox.Text); newInstance.Name_Instance = name_InstanceTextBox.Text; newInstance.NetName = netNameTextBox.Text; newInstance.IsMonitored = (bool)isMonitoredCheckBox.IsChecked; newInstance.ExpandContent = (bool)expandContentCheckBox.IsChecked; newInstance.ExpandStorage = (bool)expandStorageCheckBox.IsChecked; newInstance.ExpandLogins = (bool)expandLoginsCheckBox.IsChecked; newInstance.ExpandServerRoles = (bool)expandServerRolesCheckBox.IsChecked; newInstance.ExpandTriggers = (bool)expandTriggersCheckBox.IsChecked; newInstance.DefaultDatabaseExpandMask = int.Parse(defaultDatabaseExpandMaskTextBox.Text); Common.ApplicationDataSet.Instances.AddInstancesRow(newInstance); Common.ApplicationDataSet.InstancesTA.Update(Common.ApplicationDataSet.Instances); }
private void btnLoadFromXML_Click(object sender, RoutedEventArgs e) { Test_Data.InstanceData.LoadNewInstancesInfoFromFile(); foreach (var instance in Test_Data.InstanceData.DBInstances) { // TODO(crhodes): Make smarter to only add new instances. var existingInstance = from inst in Common.ApplicationDataSet.Instances where inst.Name_Instance == instance.FullName select inst.Name_Instance; if (existingInstance.Count() == 0) { SQLInformation.Data.ApplicationDataSet.InstancesRow newInstance = Common.ApplicationDataSet.GetNewInstancesRow(instance.FullName); Common.ApplicationDataSet.Instances.AddInstancesRow(newInstance); } } }
public static void TakeInstanceSnapShot(SQLInformation.Data.ApplicationDataSet.InstancesRow instanceRow) { #if TRACE long startTicks = VNC.AppLog.Trace4("Start", LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 0); #endif Data.ApplicationDataSet.InstanceInfoRow instanceInfoRow = null; try { instanceInfoRow = Common.ApplicationDataSet.InstanceInfo.NewInstanceInfoRow(); instanceInfoRow.SnapShotDate = instanceRow.SnapShotDate; instanceInfoRow.SnapShotDuration = instanceRow.SnapShotDuration; instanceInfoRow.SnapShotError = instanceRow.SnapShotError; instanceInfoRow.Instance_ID = instanceRow.ID; instanceInfoRow.Name_Instance = instanceRow.Name_Instance; instanceInfoRow.ADDomain = instanceRow.ADDomain; instanceInfoRow.Environment = instanceRow.Environment; instanceInfoRow.SecurityZone = instanceRow.SecurityZone; instanceInfoRow.PhysicalMemory = instanceRow.PhysicalMemory; instanceInfoRow.Processors = instanceRow.Processors; instanceInfoRow.Total_DataSpaceUsage = instanceRow.Total_DataSpaceUsage; instanceInfoRow.Total_IndexSpaceUsage = instanceRow.Total_IndexSpaceUsage; instanceInfoRow.Total_Size = instanceRow.Total_Size; instanceInfoRow.Total_SpaceAvailable = instanceRow.Total_SpaceAvailable; Common.ApplicationDataSet.InstanceInfo.AddInstanceInfoRow(instanceInfoRow); Common.ApplicationDataSet.InstanceInfoTA.Update(Common.ApplicationDataSet.InstanceInfo); } catch (Exception ex) { VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 2); instanceInfoRow.SnapShotDate = DateTime.Now; instanceInfoRow.SnapShotError = ex.ToString().Substring(0, 256); Common.ApplicationDataSet.InstanceInfoTA.Update(Common.ApplicationDataSet.InstanceInfo); } #if TRACE VNC.AppLog.Trace4("End", LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 3, startTicks); #endif }
/// <summary> /// Store current values in ServerInfo history table. /// </summary> /// <param name="instance"></param> /// <param name="database"></param> private void TakeSnapShot(string instanceName, SQLInformation.Data.ApplicationDataSet.InstancesRow instanceRow) { SMO.Server server = SMOH.SMOD.GetServer(instanceName); SQLInformation.Data.ApplicationDataSetTableAdapters.InstanceInfoTableAdapter tableAdapter = new SQLInformation.Data.ApplicationDataSetTableAdapters.InstanceInfoTableAdapter(); tableAdapter.Connection.ConnectionString = SQLInformation.Data.Config.SQLMonitorDBConnection; //int dbID = int.Parse(serverRow.ID_DB); //SMO.Database db = server.Databases.ItemById(dbID); SQLInformation.Data.ApplicationDataSet.InstanceInfoRow newSnapShot = Common.ApplicationDataSet.InstanceInfo.NewInstanceInfoRow(); newSnapShot.Instance_ID = instanceRow.ID; newSnapShot.SnapShotDate = DateTime.Now; Common.ApplicationDataSet.InstanceInfo.AddInstanceInfoRow(newSnapShot); tableAdapter.Update(Common.ApplicationDataSet.InstanceInfo); }
private void OnCreateSMOLogon(object sender, ItemClickEventArgs e) { SQLInformation.Data.ApplicationDataSet.InstancesRow instance = (SQLInformation.Data.ApplicationDataSet.InstancesRow) ((System.Data.DataRowView)dataGrid.View.FocusedRowData.Row).Row; try { string message; if (!SQLInformation.SMO.Actions.Instance.CreateSQLMonitorLogin(instance.Name_Instance, out message)) { MessageBox.Show(string.Format("CreateSQLMonitorLogin Failed: {0}", message)); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
private void UpdateInfo() { SQLInformation.Data.ApplicationDataSet.InstancesRow instance = (SQLInformation.Data.ApplicationDataSet.InstancesRow) ((System.Data.DataRowView)instancesDataGrid.SelectedItem).Row; //SMO.Server server = new SMO.Server(instance.InstanceName); //server.ConnectionContext.LoginSecure = false; // SQL Authentication //server.ConnectionContext.Login = "******"; //server.ConnectionContext.Password = "******"; //server.ConnectionContext.ConnectTimeout = 10; // Seconds try { SMO.Server server = SQLInformation.SMO.Helper.GetServer(instance.Name_Instance); SMOH.Server serverH = new SMOH.Server(server); instance.ServiceName = serverH.ServiceName; instance.Collation = serverH.Collation; instance.Edition = serverH.Edition; instance.IsClustered = bool.Parse(serverH.IsClustered); instance.NetName = serverH.NetName; instance.OSVersion = serverH.OSVersion; instance.PhysicalMemory = int.Parse(serverH.PhysicalMemory); instance.Platform = serverH.Platform; instance.Processors = int.Parse(serverH.Processors); instance.ServiceAccount = serverH.ServiceAccount; instance.ServiceInstanceId = serverH.ServiceInstanceId; instance.EngineEdition = serverH.EngineEdition; instance.Product = serverH.Product; instance.ProductLevel = serverH.ProductLevel; instance.Version = serverH.VersionString; } catch (Exception ex) { PLLog.Error(ex, PLLOG_APPNAME, CLASS_BASE_ERRORNUMBER + 2); } }
private void OnCreateSMOLogin(object sender, RoutedEventArgs e) { foreach (DataRowView s in targets) { string message = ""; try { SQLInformation.Data.ApplicationDataSet.InstancesRow instance = (SQLInformation.Data.ApplicationDataSet.InstancesRow)s.Row; ProgressResults.Items.Add(string.Format("Attempting Logon Creation on:{0}", instance.Name_Instance)); SQLInformation.SMO.Actions.Instance.CreateSQLMonitorLogin(instance.Name_Instance, out message); ProgressResults.Items.Add(string.Format(" Result:{0}", message)); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } }
private void OnUpdateInfo(object sender, ItemClickEventArgs e) { var row = dataGrid.View.FocusedRowData.Row; SQLInformation.Data.ApplicationDataSet.InstancesRow instance = (SQLInformation.Data.ApplicationDataSet.InstancesRow) ((System.Data.DataRowView)dataGrid.View.FocusedRowData.Row).Row; // Check to see if have linked to a server yet. If not, do that. try { Guid serverID; Guid.TryParse(instance.Server_ID.ToString(), out serverID); } catch (Exception) { SyncServerInfoAndInstanceInfo(instance); } FetchSMOInfo(instance); }
private void OnSelectFile(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = "XML files (*.xml)|*.xml|All files (*.*)|*.*"; openFileDialog1.FileName = ""; if (System.Windows.Forms.DialogResult.OK == openFileDialog1.ShowDialog()) { try { string fileName = openFileDialog1.FileName; var xmlData = XDocument.Load(fileName); // TODO: Add some more UI and stuff to handle environments. var serverInstances = xmlData.Descendants("Instance"); var serverInstances2 = xmlData.Elements("Instance"); foreach (var instance in serverInstances) { string server = instance.Attribute("Server").Value; string ipv4Address = instance.Attribute("IPV4Address").Value; string instanceName = instance.Attribute("Name").Value; string port = instance.Attribute("Port").Value; string adDomain = instance.Attribute("ADDomain").Value; string environment = instance.Attribute("Environment").Value; string securityZone = instance.Attribute("SecurityZone").Value; string validName = ""; // Prefer HostName over IPs and InstanceNames over Port#s if (instanceName.Length > 0 || port.Length > 0) // Have Instance Info { validName = string.Format(@"{0}{1}", server.Length > 0 ? server : ipv4Address, instanceName.Length > 0 ? @"\" + instanceName : "," + port ); } else { validName = server.Length > 0 ? server : ipv4Address; } // TODO(crhodes): Make smarter to only add new instances. var existingInstance = from inst in Common.ApplicationDataSet.Instances where inst.Name_Instance == validName select inst.Name_Instance; int matchCount = existingInstance.Count(); if (matchCount == 0) { SQLInformation.Data.ApplicationDataSet.InstancesRow newInstance = Common.ApplicationDataSet.GetNewInstancesRow(validName); newInstance.NetName = server; newInstance.ADDomain = adDomain; newInstance.Environment = environment; newInstance.SecurityZone = securityZone; newInstance.DefaultDatabaseExpandMask = 2047; newInstance.DefaultJobServerExpandMask = 8191; Common.ApplicationDataSet.Instances.AddInstancesRow(newInstance); } } } catch (Exception ex) { System.Windows.MessageBox.Show(ex.ToString()); } } }
private void OnCreateNewInstance(object sender, RoutedEventArgs e) { int instanceExpandMask = 0; int databaseExpandMask = 0; int jobServerExpandMask = 0; Window parentWindow = Window.GetWindow(this); string newInstanceFullName = null; newInstanceFullName = string.Format("{0}{1}{2}", cbe_NetName.Text, (te_Name_Instance.Text.Length > 0 ? @"\" : ""), te_Name_Instance.Text); string serverName = tb_Name_Server.Text; int portNumber = 0; int.TryParse(te_PortNumber.Text, out portNumber); if (InstanceIsNotAccessible(newInstanceFullName, serverName, portNumber)) { MessageBox.Show(string.Format("Instance {0} not accessible.", newInstanceFullName)); return; } if (InstanceAlreadyExists(newInstanceFullName)) { MessageBox.Show(string.Format("Entry for Instance {0} already exists.", newInstanceFullName)); InitializeComponent(); return; } try { foreach (var item in cbe_IsMonitored.SelectedItems) { instanceExpandMask += ((KeyValuePair <string, int>)item).Value; } foreach (var item in cbe_DefaultDatabaseExpandMask.SelectedItems) { databaseExpandMask += ((KeyValuePair <string, int>)item).Value; } foreach (var item in cbe_DefaultJobServerExpandMask.SelectedItems) { jobServerExpandMask += ((KeyValuePair <string, int>)item).Value; } ExpandMask.InstanceExpandSetting instanceSetting = new ExpandMask.InstanceExpandSetting(instanceExpandMask); SQLInformation.Data.ApplicationDataSet.InstancesRow newInstance = Common.ApplicationDataSet.Instances.NewInstancesRow(); newInstance.ID = Guid.NewGuid(); newInstance.Name_Instance = newInstanceFullName; newInstance.Port = portNumber; newInstance.NetName = cbe_NetName.Text; newInstance.ADDomain = cbe_ADDomain.Text; newInstance.Environment = cbe_Environment.Text; newInstance.SecurityZone = cbe_SecurityZone.Text; newInstance.IsMonitored = instanceSetting.IsMonitored; newInstance.ExpandContent = instanceSetting.ExpandContent; newInstance.ExpandJobServer = instanceSetting.ExpandJobServer; newInstance.ExpandStorage = instanceSetting.ExpandStorage; newInstance.ExpandLinkedServers = instanceSetting.ExpandLinkedServers; newInstance.ExpandLogins = instanceSetting.ExpandLogins; newInstance.ExpandServerRoles = instanceSetting.ExpandServerRoles; newInstance.ExpandTriggers = instanceSetting.ExpandTriggers; newInstance.DefaultDatabaseExpandMask = databaseExpandMask; newInstance.DefaultJobServerExpandMask = jobServerExpandMask; Common.ApplicationDataSet.Instances.AddInstancesRow(newInstance); Common.ApplicationDataSet.Instances_Update(); //Common.ApplicationDataSet.InstancesTA.Update(Common.ApplicationDataSet.Instances); string progressMessage = string.Format("Instance: {0} Added successfully", newInstance.Name_Instance); //StatusMessage1 = progressMessage; tb_ProgressStatus1.Text = progressMessage; //tb_ProgressStatus1.Dispatcher.BeginInvoke((Action)(() => tb_ProgressStatus1.Text = progressMessage), System.Windows.Threading.DispatcherPriority.Normal); //tb_ProgressStatus1.Dispatcher.BeginInvoke(new Action(() => tb_ProgressStatus1.Text = progressMessage), System.Windows.Threading.DispatcherPriority.Normal); //parentWindow.Dispatcher.BeginInvoke((Action)(() => tb_ProgressStatus1.Text = progressMessage), System.Windows.Threading.DispatcherPriority.Normal); string progressMessage2 = "Attempting to create SMO Crawler Login. This may take a while"; tb_ProgressStatus2.Dispatcher.BeginInvoke((Action)(() => tb_ProgressStatus2.Text = progressMessage2), System.Windows.Threading.DispatcherPriority.Normal); string message = ""; if (SQLInformation.SMO.Actions.Instance.CreateSQLMonitorLogin(newInstance.Name_Instance, out message)) { tb_ProgressStatus2.Dispatcher.InvokeAsync((Action)(() => tb_ProgressStatus2.Text = "SMO Crawler Logon created successfully"), System.Windows.Threading.DispatcherPriority.Normal); } else { MessageBox.Show(string.Format( "SMO Crawler Logon not created:\n{0}\nVerify current user ({1}) has sufficient permission to create a new Login in instance.", message, Common.CurrentUser.Identity.Name)); } InitializeControls(); } catch (Exception ex) { VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 2); } }
private void SyncServerInfoAndInstanceInfo(SQLInformation.Data.ApplicationDataSet.InstancesRow instance) { var servers = from s in Common.ApplicationDataSet.Servers where s.NetName.ToUpper() == instance.NetName.ToUpper() select s; try { SQLInformation.Data.ApplicationDataSet.ServersRow server = servers.First(); instance.Server_ID = server.ID; // TODO: Verify these are set before trying to SYNC. try { server.ADDomain = instance.ADDomain; server.Environment = instance.Environment; server.SecurityZone = instance.SecurityZone; server.OSVersion = instance.OSVersion; server.PhysicalMemory = instance.PhysicalMemory; server.Platform = instance.Platform; server.Processors = instance.Processors; } catch (Exception) { } server.EndEdit(); } catch (Exception) { // No matching server. MessageBox.Show("No matching server found. Adding new server."); int instanceExpandMask = 127; try { SQLInformation.Data.ApplicationDataSet.ServersRow newServer = Common.ApplicationDataSet.Servers.NewServersRow(); newServer.ID = Guid.NewGuid(); newServer.NetName = instance.NetName.ToUpper(); newServer.DefaultInstanceExpandMask = instanceExpandMask; // Wrap in exception in case not populated try { newServer.OSVersion = instance.OSVersion; newServer.PhysicalMemory = instance.PhysicalMemory; newServer.Platform = instance.Platform; newServer.Processors = instance.Processors; } catch (Exception) { } Common.ApplicationDataSet.Servers.AddServersRow(newServer); Common.ApplicationDataSet.Servers_Update(); //Common.ApplicationDataSet.ServersTA.Update(Common.ApplicationDataSet.Servers); instance.Server_ID = newServer.ID; Common.ApplicationDataSet.Instances_Update(); //Common.ApplicationDataSet.InstancesTA.Update(Common.ApplicationDataSet.Instances); } catch (Exception ex) { VNC.AppLog.Error(ex, LOG_APPNAME, CLASS_BASE_ERRORNUMBER + 2); } } }