如何检测sql的服务已经开启?

解决方案 »

  1.   

    尝试连接到它:try
      ADOConnection1.Connected:=true;
      ShowMessage('连接成功');
    except
      ShowMessage('连接失败');
    end;//不过,这种方法不能排除其它原因。
      

  2.   

    这是用来检测oracle的
    在dos下输入
    C:\>sqlplus username/password@serviceName
      

  3.   

    那sql的服务可以被其它人开启吗?也就是说sql的服务是否只有一个客户端?
      

  4.   

    我看用pilicat(delphi迷) 的方法简单。
    不过我想会有高手来答的!
      

  5.   

    我用了openservice这个鸟东东。不知如何弄。
      

  6.   

    1、用service的api可以查询服务的状态,不过需要你有相当的权限,还要知道服务名称。2、通过端口直接和服务通讯。这需要你知道相关协议。但是可以知道服务是否可用(存在不一定可用)
      

  7.   


    // Code by Edward Guo
    function QryService (pService: PChar; var dwState: DWORD; pSvcType: PDWORD): Integer;
    var
      hSvcMgr, hService: SC_HANDLE;
      rStatus: TServiceStatus;
    begin
      Assert (pService<>nil);  if pService[0]=#0 then
      begin
        Result := EC_SERVICE_GETNAME;
        Exit;
      end;
      hSvcMgr := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
      if hSvcMgr=0 then
      begin
        Result := EC_SERVICE_MANAGER;
        Exit;
      end;
      hService := OpenService(hSvcMgr,pService,SERVICE_QUERY_STATUS);
      if hService=0 then
      begin
        CloseServiceHandle(hSvcMgr);
        Result := EC_SERVICE_OPEN;
        Exit;
      end;  if QueryServiceStatus(hService,rStatus) then
      begin
        Result := EC_NO_ERROR;
        dwState := rStatus.dwCurrentState;
        if pSvcType<>nil then pSvcType^ := rStatus.dwServiceType;
      end else
        Result := EC_SERVICE_QUERY;  CloseServiceHandle(hService);
      CloseServiceHandle(hSvcMgr);
    end;检查dwState返回值。pService是服务的“服务名称”,自己去查。