J'ai une 1ere procédure stockée qui ouvre une transaction avec un "BEGIN
TRAN T", suivis par diverses instructions de UPDATE/INSERT/SELECT/DELETE et
vers le milieu de la SP j'execute une 2eme SP (dont je récupere la valeur)
qui contient aussi un "BEGIN TRAN T" et des instructions
UPDATE/INSERT/SELECT/DELETE sur les mêmes tables que ceux de la 1ere SP.
Mais j'ai un probleme, en plein milieu de la 2eme procedure stocké, j'ai
l'impression que y'a un blocage.... Ma requete tourne eternellement, je ne
sais aps ce qui se passe alors je l'arrete.
Ma question est très simple. Apres un BEGIN TRAN, toutes les tables sur
lesquel on va travailler après seront verouillés, ma question est que comme
dans la 1ere SP je verouille des tables, et que dans la 2eme SP (que
j'appelle depuis la 1ere SP) je travaille sur les meme tables, est-ce que je
ne serai pas confronté à un verrou mortel qui fait que j'ai le sentiment que
ca bloque?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Sylvain Lafontaine
SQL-Server ne supporte pas les transactions imbriquées, la deuxième SP s'exécute donc dans le même contexte transactionel que la première SP. Pour SQL-Server, les BEGIN TRAN qui suivent un premier BEGIN TRAN ne servent qu'à augmenter un compteur et les COMMIT TRAN à le diminuer. Cependant, un ROLLBACK ne diminuera pas le compteur mais va le mettre à zéro: dès qu'un rollback est rencontré, la transaction entière est automatiquement stoppé; c'est pourquoi il est important de toujours vérifier la valeur du compteur @@TRANCOUNT juste avant de faire un COMMIT ou un ROLLBACK.
À mon avis, votre problème ne peut donc pas provenir d'un problème de verrou.
Pour ce qui est de votre deuxième énoncé, « Apres un BEGIN TRAN, toutes les tables sur lesquel on va travailler après seront verouillés », cela est potentiellement faux puisque les verrous ne fonctionnent pas nécessairement au niveau de la table; ils peuvent être mis aussi bien au niveau du record ou de la page que de la table, sur les données mêmes ou sur un index.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC E-mail: sylvain aei ca (fill the blanks, no spam please)
"Francky" wrote in message news:%
Bonjour
J'ai une 1ere procédure stockée qui ouvre une transaction avec un "BEGIN TRAN T", suivis par diverses instructions de UPDATE/INSERT/SELECT/DELETE et vers le milieu de la SP j'execute une 2eme SP (dont je récupere la valeur) qui contient aussi un "BEGIN TRAN T" et des instructions UPDATE/INSERT/SELECT/DELETE sur les mêmes tables que ceux de la 1ere SP. Mais j'ai un probleme, en plein milieu de la 2eme procedure stocké, j'ai l'impression que y'a un blocage.... Ma requete tourne eternellement, je ne sais aps ce qui se passe alors je l'arrete.
Ma question est très simple. Apres un BEGIN TRAN, toutes les tables sur lesquel on va travailler après seront verouillés, ma question est que comme dans la 1ere SP je verouille des tables, et que dans la 2eme SP (que j'appelle depuis la 1ere SP) je travaille sur les meme tables, est-ce que je ne serai pas confronté à un verrou mortel qui fait que j'ai le sentiment que ca bloque?
SQL-Server ne supporte pas les transactions imbriquées, la deuxième SP
s'exécute donc dans le même contexte transactionel que la première SP. Pour
SQL-Server, les BEGIN TRAN qui suivent un premier BEGIN TRAN ne servent qu'à
augmenter un compteur et les COMMIT TRAN à le diminuer. Cependant, un
ROLLBACK ne diminuera pas le compteur mais va le mettre à zéro: dès qu'un
rollback est rencontré, la transaction entière est automatiquement stoppé;
c'est pourquoi il est important de toujours vérifier la valeur du compteur
@@TRANCOUNT juste avant de faire un COMMIT ou un ROLLBACK.
À mon avis, votre problème ne peut donc pas provenir d'un problème de
verrou.
Pour ce qui est de votre deuxième énoncé, « Apres un BEGIN TRAN, toutes les
tables sur lesquel on va travailler après seront verouillés », cela est
potentiellement faux puisque les verrous ne fonctionnent pas nécessairement
au niveau de la table; ils peuvent être mis aussi bien au niveau du record
ou de la page que de la table, sur les données mêmes ou sur un index.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)
"Francky" <francky@nexistepas.com> wrote in message
news:%2384k0z4LIHA.820@TK2MSFTNGP06.phx.gbl...
Bonjour
J'ai une 1ere procédure stockée qui ouvre une transaction avec un "BEGIN
TRAN T", suivis par diverses instructions de UPDATE/INSERT/SELECT/DELETE
et vers le milieu de la SP j'execute une 2eme SP (dont je récupere la
valeur) qui contient aussi un "BEGIN TRAN T" et des instructions
UPDATE/INSERT/SELECT/DELETE sur les mêmes tables que ceux de la 1ere SP.
Mais j'ai un probleme, en plein milieu de la 2eme procedure stocké, j'ai
l'impression que y'a un blocage.... Ma requete tourne eternellement, je ne
sais aps ce qui se passe alors je l'arrete.
Ma question est très simple. Apres un BEGIN TRAN, toutes les tables sur
lesquel on va travailler après seront verouillés, ma question est que
comme dans la 1ere SP je verouille des tables, et que dans la 2eme SP (que
j'appelle depuis la 1ere SP) je travaille sur les meme tables, est-ce que
je ne serai pas confronté à un verrou mortel qui fait que j'ai le
sentiment que ca bloque?
SQL-Server ne supporte pas les transactions imbriquées, la deuxième SP s'exécute donc dans le même contexte transactionel que la première SP. Pour SQL-Server, les BEGIN TRAN qui suivent un premier BEGIN TRAN ne servent qu'à augmenter un compteur et les COMMIT TRAN à le diminuer. Cependant, un ROLLBACK ne diminuera pas le compteur mais va le mettre à zéro: dès qu'un rollback est rencontré, la transaction entière est automatiquement stoppé; c'est pourquoi il est important de toujours vérifier la valeur du compteur @@TRANCOUNT juste avant de faire un COMMIT ou un ROLLBACK.
À mon avis, votre problème ne peut donc pas provenir d'un problème de verrou.
Pour ce qui est de votre deuxième énoncé, « Apres un BEGIN TRAN, toutes les tables sur lesquel on va travailler après seront verouillés », cela est potentiellement faux puisque les verrous ne fonctionnent pas nécessairement au niveau de la table; ils peuvent être mis aussi bien au niveau du record ou de la page que de la table, sur les données mêmes ou sur un index.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC E-mail: sylvain aei ca (fill the blanks, no spam please)
"Francky" wrote in message news:%
Bonjour
J'ai une 1ere procédure stockée qui ouvre une transaction avec un "BEGIN TRAN T", suivis par diverses instructions de UPDATE/INSERT/SELECT/DELETE et vers le milieu de la SP j'execute une 2eme SP (dont je récupere la valeur) qui contient aussi un "BEGIN TRAN T" et des instructions UPDATE/INSERT/SELECT/DELETE sur les mêmes tables que ceux de la 1ere SP. Mais j'ai un probleme, en plein milieu de la 2eme procedure stocké, j'ai l'impression que y'a un blocage.... Ma requete tourne eternellement, je ne sais aps ce qui se passe alors je l'arrete.
Ma question est très simple. Apres un BEGIN TRAN, toutes les tables sur lesquel on va travailler après seront verouillés, ma question est que comme dans la 1ere SP je verouille des tables, et que dans la 2eme SP (que j'appelle depuis la 1ere SP) je travaille sur les meme tables, est-ce que je ne serai pas confronté à un verrou mortel qui fait que j'ai le sentiment que ca bloque?
Fred BROUARD
bonjour,
lisez l'article que j'ai écrit sur les transactions imbriquées : http://www.sqlspot.com/Les-transactions-imbriquees.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.sqlspot.com/Les-transactions-imbriquees.html
si vous ne résolvez pas votre problème, lisez l'artile que j'ai écrit sur la gestion du niveau d'isolation des transactions : http://www.sqlspot.com/Gerer-l-isolation-des-transactions.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.sqlspot.com/Gerer-l-isolation-des-transactions.html
En désespoir de cause, si tout ceci n'a servit à rien, postez nous le code de vos proc stock et le DDL des tables incriminées
A +
Francky a écrit :
Bonjour
J'ai une 1ere procédure stockée qui ouvre une transaction avec un "BEGIN TRAN T", suivis par diverses instructions de UPDATE/INSERT/SELECT/DELETE et vers le milieu de la SP j'execute une 2eme SP (dont je récupere la valeur) qui contient aussi un "BEGIN TRAN T" et des instructions UPDATE/INSERT/SELECT/DELETE sur les mêmes tables que ceux de la 1ere SP. Mais j'ai un probleme, en plein milieu de la 2eme procedure stocké, j'ai l'impression que y'a un blocage.... Ma requete tourne eternellement, je ne sais aps ce qui se passe alors je l'arrete.
Ma question est très simple. Apres un BEGIN TRAN, toutes les tables sur lesquel on va travailler après seront verouillés, ma question est que comme dans la 1ere SP je verouille des tables, et que dans la 2eme SP (que j'appelle depuis la 1ere SP) je travaille sur les meme tables, est-ce que je ne serai pas confronté à un verrou mortel qui fait que j'ai le sentiment que ca bloque?
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
bonjour,
lisez l'article que j'ai écrit sur les transactions imbriquées :
http://www.sqlspot.com/Les-transactions-imbriquees.html
si vous ne résolvez pas votre problème, lisez l'artile que j'ai écrit
sur la gestion du niveau d'isolation des transactions :
http://www.sqlspot.com/Gerer-l-isolation-des-transactions.html
En désespoir de cause, si tout ceci n'a servit à rien, postez nous le
code de vos proc stock et le DDL des tables incriminées
A +
Francky a écrit :
Bonjour
J'ai une 1ere procédure stockée qui ouvre une transaction avec un "BEGIN
TRAN T", suivis par diverses instructions de UPDATE/INSERT/SELECT/DELETE
et vers le milieu de la SP j'execute une 2eme SP (dont je récupere la
valeur) qui contient aussi un "BEGIN TRAN T" et des instructions
UPDATE/INSERT/SELECT/DELETE sur les mêmes tables que ceux de la 1ere SP.
Mais j'ai un probleme, en plein milieu de la 2eme procedure stocké, j'ai
l'impression que y'a un blocage.... Ma requete tourne eternellement, je
ne sais aps ce qui se passe alors je l'arrete.
Ma question est très simple. Apres un BEGIN TRAN, toutes les tables sur
lesquel on va travailler après seront verouillés, ma question est que
comme dans la 1ere SP je verouille des tables, et que dans la 2eme SP
(que j'appelle depuis la 1ere SP) je travaille sur les meme tables,
est-ce que je ne serai pas confronté à un verrou mortel qui fait que
j'ai le sentiment que ca bloque?
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
lisez l'article que j'ai écrit sur les transactions imbriquées : http://www.sqlspot.com/Les-transactions-imbriquees.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.sqlspot.com/Les-transactions-imbriquees.html
si vous ne résolvez pas votre problème, lisez l'artile que j'ai écrit sur la gestion du niveau d'isolation des transactions : http://www.sqlspot.com/Gerer-l-isolation-des-transactions.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.sqlspot.com/Gerer-l-isolation-des-transactions.html
En désespoir de cause, si tout ceci n'a servit à rien, postez nous le code de vos proc stock et le DDL des tables incriminées
A +
Francky a écrit :
Bonjour
J'ai une 1ere procédure stockée qui ouvre une transaction avec un "BEGIN TRAN T", suivis par diverses instructions de UPDATE/INSERT/SELECT/DELETE et vers le milieu de la SP j'execute une 2eme SP (dont je récupere la valeur) qui contient aussi un "BEGIN TRAN T" et des instructions UPDATE/INSERT/SELECT/DELETE sur les mêmes tables que ceux de la 1ere SP. Mais j'ai un probleme, en plein milieu de la 2eme procedure stocké, j'ai l'impression que y'a un blocage.... Ma requete tourne eternellement, je ne sais aps ce qui se passe alors je l'arrete.
Ma question est très simple. Apres un BEGIN TRAN, toutes les tables sur lesquel on va travailler après seront verouillés, ma question est que comme dans la 1ere SP je verouille des tables, et que dans la 2eme SP (que j'appelle depuis la 1ere SP) je travaille sur les meme tables, est-ce que je ne serai pas confronté à un verrou mortel qui fait que j'ai le sentiment que ca bloque?
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************