mssqlserver在关闭的情况下,如何用程序启动mssqlserver的服务,而不是手工直接操作启动服务?

解决方案 »

  1.   

    scm -action 6 -slient 1 -service mssqlserver
      

  2.   

    写个程序,使用CreateProcess函数, 假设你的mssqlserver的服务存放路径为:
    "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exe"var 
        PStartupInfo: TStartupInfo;
        aProcessInfo: TProcessInformation;
    begin
      FillChar(PStartupInfo, SizeOf(PStartupInfo), 0);
      PStartupInfo.cb:=SizeOf(PStartupInfo);
      CreateProcess(nil,
      PChar('C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exe' CheckRun '),
      nil, nil, False, DETACHED_PROCESS, nil, nil, PStartupInfo, aProcessInfo);
      CloseHandle(aProcessInfo.hThread);
      CloseHandle(aProcessInfo.hProcess);
    end;
      

  3.   

    scm -action 1 -slient 1 -service mssqlserver  //启动
    scm -action 6 -slient 1 -service mssqlserver  //停止
      

  4.   

    这样试一下, 改变PChar('C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exe' CheckRun ')为
    PChar('C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exe Y '):
    例如:
    var 
        PStartupInfo: TStartupInfo;
        aProcessInfo: TProcessInformation;
    begin
      FillChar(PStartupInfo, SizeOf(PStartupInfo), 0);
      PStartupInfo.cb:=SizeOf(PStartupInfo);
      CreateProcess(nil,
      PChar('C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exe Y '),
      nil, nil, False, DETACHED_PROCESS, nil, nil, PStartupInfo, aProcessInfo);
      CloseHandle(aProcessInfo.hThread);
      CloseHandle(aProcessInfo.hProcess);
    end;