通过枚举获取sqlserver的服务,停止后,再拷贝! 参考资料: Using the ServiceController in C# to stop and start a service 1、添加对System.ServiceProcess 的引用2、用服务名查找服务:ServiceController myService = new ServiceController(); myService.ServiceName = "sqlServer"; string svcStatus = myService.Status.ToString(); if (svcStatus == "Running") { myService.Stop(); }
为什么不用backup语句来备份数据库呢。
参考资料:
Using the ServiceController in C# to stop and start a service
1、添加对System.ServiceProcess 的引用2、用服务名查找服务:ServiceController myService = new ServiceController();
myService.ServiceName = "sqlServer";
string svcStatus = myService.Status.ToString();
if (svcStatus == "Running")
{
myService.Stop();
}
我在任务管理器看到的进程是sqlservr.exe,我把它关掉就可以复制了。
可我在程序中运行 string svcstatus = myService.Status.ToString();的时候出现无法打开计算机“.”上的sqlservr服务。为什么?
我用的是XP,VS2005
ServiceController sc = new ServiceController("SQL Server (SQLEXPRESS)");
if (sc.Status.Equals(ServiceControllerStatus.Running))
{
sc.Stop();
}
}
{
if(!proc.CloseMainWindow)
{
proc.Kill();
}
}
我任务管理器的sqlservr.exe有两个,一个是属于登陆用户的,一个属于NETWORK的,经测试你这样只把NETWORK那个关掉,属于登陆用户的还在,错误依旧。占有的进程是用户那一个,如果把network的那个也关闭,后面就不能继续对数据库操作了。
你以为用copy那么“源文件受损了”就能恢复?备份为了什么?
copy后就有好多个源文件。我菜鸟,先不管这个。能帮忙解决上面问题吗?
我怎么才可以找到属于Administrator的那个并把它关掉?
Process.StartInfo.UserName属性都是“”空的。
看看上面那篇文章,里面实现了一个类,可以获取很多信息:
StartInfo里面的username是“”空的,文章下面FAQ中Smith也提到
kill()跟我们平时在任务管理器结束进程有什么区别?
对了 这样就可以了
net stop mssqlser
调用NET里 处理CMD命令行的 类停止服务后,拷贝完成后 在 启动 net start mssqlser