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

MS SQL Server Discussion :

Problème de procédure stockée sous SQL Server 2000.


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut Problème de procédure stockée sous SQL Server 2000.
    Bonjour tout le monde,
    j'essaye de faire fonctionner cette procédure stockée qui est censée me retourner un message d'erreur si la table 'NomTable' est verrouillée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            DECLARE @lBase int
    	DECLARE @lTable int
    	DECLARE @lErr int
     
    	SET NOCOUNT ON
    	SELECT @lBase = DB_ID()
    	SELECT @lTable = OBJECT_ID('NomTable')
    	EXECUTE @lErr = master..xp_CBIsRecordLock @@SPID,@lBase,@lTable,@cbMarq,@lRes OUTPUT
    	IF @lErr <> 0
    		RAISERROR(@lErr,11,1) WITH SETERROR
    Cependant le champs @lRes est toujours à NULL. Si quelqu'un pouvait m'aider ou me proposer une autre solution pour savoir si une table est verrouillée (en cours d'utilisation) se serait sympa.

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    si ma mémoire est bonne, en SQL Server 2000, la table master..syslocks te donne des informations sur les verrous.

    Pour info, en SQL Server 2005, ça donne une requête de ce type :

    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
    SELECT
       tl.resource_type,
       tl.resource_subtype,
       tl.resource_description,
       tl.request_mode,
       tl.request_status
    FROM sys.dm_tran_locks tl
    LEFT JOIN sys.partitions p 
       ON tl.resource_associated_entity_id = p.hobt_id
    WHERE 
       tl.request_session_id <> @@SPID AND
       tl.resource_database_id = DB_ID('mabase') AND
       CASE tl.resource_type
          WHEN 'OBJECT' THEN OBJECT_NAME(tl.resource_associated_entity_id) 
          ELSE OBJECT_NAME(p.object_id)
       END = 'matable'

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    SQL Server choisit lui même le type de verrou le plus approprié. Ce peut donc être un verrou de ligne, de clef, de page, d'extensions, de table, de schéma, en fonction du contexte, de la concurrence, de la nature du traitement...etc ! Or vous interroger les méta données uniquement sur un verrou de ligne.... ce n'est donc pas étonnant que cela ne vous retourne rien

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut
    Merci pour vos réponses rudib et SQLpro. En effet un dans la base master me donne le dbid des bases lockées, cependant ce que cherche c'est l'id des tables lockées.

  5. #5
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Citation Envoyé par rudib Voir le message
    si ma mémoire est bonne, en SQL Server 2000, la table master..syslocks te donne des informations sur les verrous.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut
    Les champs de la table master..syslocks sont dbid, page, type, spid. Est-ce le spid qui m'informe sur la table lockée ? Si oui dans quelle table puis-je avoir le nom correspondant et si non a quoi correspond le spid ?

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Intéressez vous à syslockinfo.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Intéressez vous à syslockinfo.
    syslockinfo renseigne sur les bdd mais pas sur les tables.

Discussions similaires

  1. Procédure stockée sous SQL Server et MS access
    Par mfofana dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 02/04/2011, 00h15
  2. Debug de procédure stockée sous SQL Server 2005
    Par verbal34 dans le forum Développement
    Réponses: 0
    Dernier message: 29/09/2009, 17h29
  3. Exécution d'une procédure stockée sous sql server 2000
    Par amirad dans le forum Développement
    Réponses: 2
    Dernier message: 27/04/2009, 09h50
  4. [PowerBuilder 10] Procédure stockée sous SQL Server 2000
    Par digital prophecy dans le forum Powerbuilder
    Réponses: 8
    Dernier message: 11/10/2006, 10h38

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