/// <summary> /// starts the database process if it's not running /// </summary> /// <param name="Parameter"></param> public DBProcess(DBProcessParams Parameter) { m_Params = Parameter; m_wasRunning = IsListenerOnPort(m_Params.Port); if(!m_wasRunning) { ProcessStartInfo psi; // start the DB server process if(Debugger.IsAttached) { psi = new ProcessStartInfo(m_Params.Commandline,m_Params.Commandargs); psi.WorkingDirectory = m_Params.Workingdirectory; psi.WindowStyle = ProcessWindowStyle.Normal; psi.CreateNoWindow = false; psi.RedirectStandardOutput = false; psi.UseShellExecute = true; } else { psi = new ProcessStartInfo(m_Params.Commandline,m_Params.Commandargs); psi.WorkingDirectory = m_Params.Workingdirectory; psi.WindowStyle = ProcessWindowStyle.Hidden; psi.CreateNoWindow = true; psi.RedirectStandardOutput = false; psi.UseShellExecute = true; } m_Process = System.Diagnostics.Process.Start(psi); // wait for db ready state Boolean isRunning = false; PerformanceTimer pc = new PerformanceTimer(); pc.startMeasuring(); System.Threading.Thread.Sleep(1000); if (!m_Process.HasExited) { do { isRunning = IsListenerOnPort(m_Params.Port); if(!isRunning) System.Threading.Thread.Sleep(1000); Debug.Print("Waiting " + pc.currentMeasuring().ToString()); } while ((!isRunning) && ((pc.currentMeasuring() / 1000) < m_Params.DBStartTimeout)); } else { throw new Exception("can't start sql server !"); } } }
/// <summary> /// starts the database process if it's not running /// </summary> /// <param name="Parameter"></param> public DBProcess(DBProcessParams Parameter) { m_Params = Parameter; m_wasRunning = IsListenerOnPort(m_Params.Port); if (!m_wasRunning) { ProcessStartInfo psi; // start the DB server process if (Debugger.IsAttached) { psi = new ProcessStartInfo(m_Params.Commandline, m_Params.Commandargs); psi.WorkingDirectory = m_Params.Workingdirectory; psi.WindowStyle = ProcessWindowStyle.Normal; psi.CreateNoWindow = false; psi.RedirectStandardOutput = false; psi.UseShellExecute = true; } else { psi = new ProcessStartInfo(m_Params.Commandline, m_Params.Commandargs); psi.WorkingDirectory = m_Params.Workingdirectory; psi.WindowStyle = ProcessWindowStyle.Hidden; psi.CreateNoWindow = true; psi.RedirectStandardOutput = false; psi.UseShellExecute = true; } m_Process = System.Diagnostics.Process.Start(psi); // wait for db ready state Boolean isRunning = false; PerformanceTimer pc = new PerformanceTimer(); pc.startMeasuring(); System.Threading.Thread.Sleep(1000); if (!m_Process.HasExited) { do { isRunning = IsListenerOnPort(m_Params.Port); if (!isRunning) { System.Threading.Thread.Sleep(1000); } Debug.Print("Waiting " + pc.currentMeasuring().ToString()); } while ((!isRunning) && ((pc.currentMeasuring() / 1000) < m_Params.DBStartTimeout)); } else { throw new Exception("can't start sql server !"); } } }
/// <summary> /// starts the database process if it's not running /// </summary> /// <param name="Parameter"></param> public DBProcess(DBProcessParams Parameter) { IPGlobalProperties ipGlobalProperties; IPEndPoint[] tcpConnInfoArray; m_Params = Parameter; ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); tcpConnInfoArray = ipGlobalProperties.GetActiveTcpListeners(); // check if the port is open - if open we assume the db is running foreach (IPEndPoint tcpi in tcpConnInfoArray) if (tcpi.Port == m_Params.Port) { m_wasRunning = true; break; } if(!m_wasRunning) { ProcessStartInfo psi; // start the DB server process if(Debugger.IsAttached) { psi = new ProcessStartInfo(m_Params.Commandline,m_Params.Commandargs); psi.WorkingDirectory = m_Params.Workingdirectory; psi.WindowStyle = ProcessWindowStyle.Normal; psi.CreateNoWindow = false; psi.RedirectStandardOutput = false; psi.UseShellExecute = true; } else { psi = new ProcessStartInfo(m_Params.Commandline,m_Params.Commandargs); psi.WorkingDirectory = m_Params.Workingdirectory; psi.WindowStyle = ProcessWindowStyle.Hidden; psi.CreateNoWindow = true; psi.RedirectStandardOutput = false; psi.UseShellExecute = true; } m_Process = System.Diagnostics.Process.Start(psi); // wait for db ready state Boolean isRunning = false; PerformanceTimer pc = new PerformanceTimer(); pc.startMeasuring(); System.Threading.Thread.Sleep(1000); if (!m_Process.HasExited) { do { ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); tcpConnInfoArray = ipGlobalProperties.GetActiveTcpListeners(); foreach (IPEndPoint tcpi in tcpConnInfoArray) if (tcpi.Port == m_Params.Port) { isRunning = true; break; } if(!isRunning) System.Threading.Thread.Sleep(1000); Debug.Print("Waiting " + pc.currentMeasuring().ToString()); } while ((!isRunning) && ((pc.currentMeasuring() / 1000) < m_Params.DBStartTimeout)); } else { throw new Exception("can't start sql server !"); } } }