SQLSERVER

SQLSERVER - SQL/NoSQL - Programmation

Marsh Posté le 16-09-2005 à 15:43:55    

BONJOUR
Existe un équivalent du wait en SQL SERVER ?  
MERCI

Reply

Marsh Posté le 16-09-2005 à 15:43:55   

Reply

Marsh Posté le 16-09-2005 à 18:26:37    

Il existe WAITFOR dont la syntaxe est :

WAITFOR {DELAY 'time' | TIME 'time'}

WAITFOR peut s'utiliser dans une procédure stockée,  par exemple :

BEGIN
    WAITFOR TIME '22:20'
    EXECUTE update_all_stats
END

:)  

Reply

Marsh Posté le 16-09-2005 à 20:14:21    

Non, par contre, SQL Server gère ce qu'on appelle des Jobs, qui peuvent être schédulés à heure fixe. Normalement, on peut même les lier, de façon à ce qu'un Job ne démarre pas si un autre job ne le lui a pas demandé de le faire.
 
Dans tous les cas, dans ton exemple, un simple Job suffit.
 
PS: en plus, ton truc est dangereux : si je lance 25 fois ta PS ci-dessus, alors "update_all_stats" va s'éxécuter 25 fois en // au même moment, et là c'est la cata !

Reply

Marsh Posté le 18-09-2005 à 22:53:00    

Merci olivthill et Arjuna,
Je vous expose mon véritable problème. J'utilise OPENROWSET (tu dois t'en souvenir Arjuna) OPENROWSET ouvre une connection avec une base de données pour pouvoir faire des requêtes à distance.
Moi, j'utilise OPENROWSET uniquement pour récupérer le résultat d'un SELECT dans une variable( sur la même base). Si quelqu'un à un autre moyen moins contraignant je suis preneur.
Le problème vient du fait que OPENROWSET ne s'exécute pas dans la séquence de code.
Je m'explique:
Je créer une table, j'insers des information dedans puis je fais un SELECT avec OPENROWSET;
 
CREATE TABLE maTable(
      nom varchar(20);
)
 
INSERT INTO maTable values('voici montext')
 
insert into maTable (nom)  
SELECT a.[XML_F52E2B61-18A1-11d1-B105-00805F49916B]
 
FROM OPENROWSET('MSDASQL',
       'DRIVER={SQL Server};SERVER=(LOCAL);UID=XXX;PWD=XXX',
       'SELECT  nom from maTable') as a
 
La commande plante car la table n'est pas renseigné ou plutôt n'existe pas encore.  
OPENROWSET s'exécute en parallèle et n'attends pas que la ligne soit insérer ou la table créée.
 
J'utilise un GO avant OPENROWSET qui arrange tout, mais j'ai besoin d'utilisé OPENROWSET dans un curseur donc pas de GO possible.
Un COMMIT ne fonctionne pas non plus, pour des raisons évidente.  
 
J'espère avoir été assez clair.  
 
Merci

Reply

Marsh Posté le 19-09-2005 à 19:30:31    

Ah, ok...
 
Si c'est un autre Server SQL Server, alors tu peux tout simplement le lier à ton serveur, puis l'appeler en utilisant son alias.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed