How can I use C # to stop SQL Server?
From http://www.csharp-examples.net/restart-windows-service/
public static void StopService(string serviceName, int timeoutMilliseconds) { ServiceController service = new ServiceController(serviceName); try { TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); service.Stop(); service.WaitForStatus(ServiceControllerStatus.Stopped, timeout); } catch { // ... } }
Run from SqlCommand: SHUTDOWN WITH NOWAIT; . Advantages over other proposed solutions:
SHUTDOWN WITH NOWAIT;
sqlservr -c
You tried
Process.Start("net stop mssqlserver")
Try stopping the service.
using System.ServiceProcess;
...
ServiceController controller = new ServiceController(); controller.MachineName = "."; controller.ServiceName = "MySqlServerInstance"; controller.Stop();
using System.Diagnostics; public static bool StopProcess(string name) { try { var process = Process.GetProcesses().SingleOrDefault(p => p.ProcessName == name); process.WaitForExit(); return true; } catch (Exception) { //throw; return false; } }
If you do not want to use the ServiceController , you can kill the sqlservr process to kill the correct process.
ServiceController
sqlservr
Process.GetProcesses().Where(x => x.ProcessName == "sqlservr").ToList().ForEach(x => x.Kill());