Newsgroup: it.comp.lang.delphi
Titolo: Avviare/fermare servizio MSSQL via Delphi

Ciao a tutto il NG
...da oggetto... come posso farlo con D5?
Grazie 1000
-- 
Questa è una firma automatica di MesNews.
Sito: 
http://mesnews.no-ip.com

cerca toolhelp32 nell'sdk di winsozz
AS

 AS
Ok grazie, ho trovato da solo
Ciao


Ho trovato la soluzione ma solo per ambienti Xp/2000 che gestioscono i 
servizi,
il programma che devo sviluppare invece lo potrebbero installare anche 
su Win98,
sotto questo sistema come faccio a fermare/avviare il servizio del 
SQLServer?
Grazie 1000


 servizi,
Se ci dicessi qual è la soluzione che hai trovato, non solo faresti un
piacere a noi e ai lettori futuri di google (cazz, è diventato una capsula
del tempo), ma ci aiuteresti a darti una mano.
-- 
Jax
====
Io prima di mangiare mi sento sempre un po' stupido. (Totò)

Ok questo è il codice per Avviare/Terminare un processo sotto 
WinNT/2000/XP, cioè quei sistemi operativi che gestisco i Servizi (in 
questo caso il servizio di MSSQLServer)
function TForm.StatoServizio: Boolean;
var
   Machine, Database: PChar;
   SInfo: string;
begin
   Machine:=nil;
   Database:=nil;
   //Apre una connessione al Service Control Manager
   ScmHandle:=OpenSCManager(Machine,Database,SC_MANAGER_CONNECT);
   //Apre una connessione al Servizio 'Nome_Servizo' con i diritti 
standard
   SHandle:=OpenService(ScmHandle,'MSSQLServer',SERVICE_ALL_ACCESS);
   //Richiede lo status del Servizio
   QueryServiceStatus(SHandle,SStatus);
   case SStatus.dwCurrentState of
       SERVICE_STOPPED:
       SInfo:='arrestato';
       SERVICE_START_PENDING:
       SInfo:='in fase di partenza';
       SERVICE_STOP_PENDING:
       SInfo:='in fase di arresto';
       SERVICE_RUNNING:
       SInfo:='in esecuzione';
       SERVICE_CONTINUE_PENDING:
       SInfo:='in fase di continuazione';
       SERVICE_PAUSE_PENDING:
       SInfo:='in fase di pausa';
       SERVICE_PAUSED:
       SInfo:='in pausa';
   end;
   //Mostra lo stato corrente
   ShowMessage('Servizio ' + SInfo);
   if SStatus.dwCurrentState = SERVICE_RUNNING then
       Result := True;
   if SStatus.dwCurrentState = SERVICE_STOPPED then
       Result := False;
end;
Procedure TForm.AvviaServizio;
var
  NumberOfArgument: DWORD;
  ServiceArgVectors: PChar;
begin
  NumberOfArgument := 0;
  ServiceArgVectors := '';
  if not StatoServizio then
  	WinSvc.StartService(SHandle, NumberOfArgument, ServiceArgVectors);
end;
procedure TDM.ArrestaServizio;
begin
    if StatoServizio then
       //Richiede al Servizio di arrestarsi
       ControlService(SHandle,SERVICE_CONTROL_STOP,SStatus);
   //Rilascia la connessione al Servizio
   if CloseServiceHandle(SHandle) then
       ShowMessage('Chiusura avvenuta');
end;
Questo per quanto riguarda la gestione dei servizi, ora io avrei 
bisogna di fare la stessa cosa su un sistema Win95/98 con sempre 
installato il solito MSDE da fermare/avviare... soluzioni?
Tomas


 installato il solito MSDE da fermare/avviare... soluzioni?
Grazie per il codice, sicuramente a qualcuno servirą in futuro.
Per quanto riguarda MSDE, io non lo conosco, perņ penso che sia gestito da
degli eseguibili da lanciare e far rimanere attivi o stoppare (stile
apache), visto che win98 non ha i servizi.
Quindi, in teoria, dovresti avere un exe da avviare...
-- 
Jax
====
Passare per idiota agli occhi di un imbecille č voluttą da finissimo
buongustaio. (Georges Courteline)

 Tomas
-- 
Ciao, Anto', [37, 143, AQ] 
MB C SC 220 CDI Magma Rot
"Di sempre cio' che senti e fai cio' che pensi."
    G.G. Màrquez

 net start MSSQL$NOMESERVER
Questa sintassi funziona egragiamente in XP/2000 ma non sotto win98


> Quindi, in teoria, dovresti avere un exe da avviare...
Si certo c'è un EXE che parte all'avvio con tanto di icona sulla Tray, 
ma da questa icone è possibile Attivare/Disattivare il servizio senza 
per questo chiudere il programma residente...


 per questo chiudere il programma residente...
Dunque, se c'è un'exe che ti permette di controllare il "servizio" (che tale
non è), *probabilmente* quell'exe ne controlla un altro (ma non è affatto
detto).
Come si chiama l'exe, che provo a cercare un po'?
-- 
Jax
====
Il segreto di una conversazione educata è di non aprire mai la bocca a
meno che non abbiate qualcosa da dire.

> Come si chiama l'exe, che provo a cercare un po'?
Questa è la sintassi del collegamento che viene lanciato all'avvio di 
win:
"C:\Programmi\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exe"  /n
ho provato a vedere se quell'exe avesse dei parametri a riga di comando 
ma non ho trovato nulla...


 comando ma non ho trovato nulla...
Ho cercato un po' con google e ho trovato questo:
http://www.devx.com/tips/Tip/13435
ci sarebbe anche un link interessante alla kb di microsoft ma oggi il sito
m$ non vuole saperne di andare!
-- 
Jax
====
Si paga caro l'acquisto della potenza; la potenza instupidisce.
(Nietzsche)

 
http://www.devx.com/tips/Tip/13435
Molto interessante... mi documento e vedo se riesco ad utilizzare queto 
tipo di sintassi per ottenere quello che mi serve...
In caso posto il codice completo
Intanto grazie 1000
Tomas
