IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Adaptive Server Enterprise Sybase Discussion :

Pb de compil sur une procédure pour killer les sessions d'une base


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut Pb de compil sur une procédure pour killer les sessions d'une base
    Bonjour,
    J'ai un problème sur la compilation d'une procédure (à l'aide de Sybase Central) stockée destinée à killer toutes les sessions utilisateur présentent sur une base passée en paramètre. Le code m'a été transmis sans détail et n'étant pas un spécialiste T-SQL, je m'en remets à votre aide.

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    USE sybsystemprocs
    GO
    IF OBJECT_ID('dbo.sp__Killusers') IS NOT NULL
    BEGIN
    DROP PROCEDURE dbo.sp__Killusers
    IF OBJECT_ID('dbo.sp__Killusers') IS NOT NULL
    PRINT '<<< FAILED DROPPING PROCEDURE dbo.sp__Killusers >>>'
    ELSE
    PRINT '<<< DROPPED PROCEDURE dbo.sp__Killusers >>>'
    END
    GO
    CREATE PROCEDURE dbo.sp__Killusers (@dbname varchar(30))
    AS
    BEGIN
    SET NOCOUNT ON
    DECLARE @user INT, @execstr VARCHAR(240), @username VARCHAR(30), @program_name VARCHAR(30), @workstr VARCHAR(30), @MySPID SMALLINT
    SET @MySPID=@@spid****** 
    IF "@dbname" <> "master"
    BEGIN
    IF EXISTS (SELECT spid FROM master..sysprocesses WHERE dbid = DB_ID(@dbname) AND (spid < 2 OR spid > 9) and spid != @MySPID)
    BEGIN
    WHILE ((SELECT count(spid) FROM master..sysprocesses WHERE dbid = DB_ID(@dbname) AND (spid < 2 OR spid > 9) and spid != @MySPID) > 0)
    BEGIN
    SELECT @user = p.spid,
    @username = l.name,
    @program_name = p.program_name,
    @execstr = 'kill '+CONVERT(VARCHAR(3), p.spid),
    @workstr = p.cmd
    FROM master..sysprocesses p, master..syslogins l
    WHERE dbid = DB_ID(@dbname)
    AND p.suid = l.suid
    AND p.spid != @MySPID
    SELECT @user, @username, @program_name,@execstr, @workstr
    WHILE (SELECT COUNT(spid) FROM master..sysprocesses WHERE spid = @user) > 0
    BEGIN
    EXEC (@execstr)
    WAITFOR DELAY '00:00:05'
    END
    END
    END
    END
    END
    GO
    EXEC sp_procxmode 'dbo.sp__Killusers', 'unchained'
    GO
    IF OBJECT_ID('dbo.sp__Killusers') IS NOT NULL
    PRINT '<<< CREATED PROCEDURE dbo.sp__Killusers >>>'
    ELSE
    PRINT '<<< FAILED CREATING PROCEDURE dbo.sp__Killusers >>>'
    GO
    Erreurs affichées par Sybase Central :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Incorrect syntax near 'GO'
    Incorrect syntax near 'GO'
    Incorrect syntax near 'GO'

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Euh - je suspecte que le problème est simplement que Sybase Central ne reconnais pas "GO" (en majuscule). Remplace GO par go et réessaye...

    Michael

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut
    Bonjour Michael,
    Même erreur avec le go en minuscule.
    Une autre idée ?

  4. #4
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 134
    Points : 168
    Points
    168
    Par défaut
    Je n'utilise pas sybase central.
    Je vous conseille de remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET @MySPID=@@spid******
    par
    et de compiler en utilisant isql.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql -U<user> -P<pass> -S<server> -i<fichier> -o<fichier log de sortie> -e
    Les affectations de variables avec SET ne fonctionnent pas avec toutes les versions d'ASE, ça peut être source de problèmes.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut
    Merci Roller.
    En fait les ***** étaient un mauvais copier/coller.
    J'ai supprimé le code ci-dessous pour que ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    GO
    EXEC sp_procxmode 'dbo.sp__Killusers', 'unchained'
    GO
    IF OBJECT_ID('dbo.sp__Killusers') IS NOT NULL
    PRINT '<<< CREATED PROCEDURE dbo.sp__Killusers >>>'
    ELSE
    PRINT '<<< FAILED CREATING PROCEDURE dbo.sp__Killusers >>>'
    GO

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une procédure pour toutes les feuilles
    Par docjo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/10/2009, 08h32
  2. [AC-2000] Déclarer une procédure en tant que variable dans une procédure globale
    Par kir4000 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/08/2009, 17h52
  3. Réponses: 2
    Dernier message: 04/06/2009, 15h49
  4. Réponses: 3
    Dernier message: 06/09/2007, 15h31
  5. Réponses: 1
    Dernier message: 05/07/2007, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo