Problème avec les deadlock

Le
Test recherche
Bonjour,
Je dispose d'un serveur SQL 2000 sous Windows 2003 server
Je rencontre des problèmes lors de l'execution de certaines procédures
stockées
l'erreur remontée est La transaction (ID du processus 272) a été bloquée sur
les ressources lock
Pourtant cette procédure ne fait rien d'exceptionnelle, elle récupère une
valeur dans une table, certe consutée,
insert un enregistrement dans une autre et récupère la valeur de
l'identifiant de l'enregistrement crée.
Tous ceci s'exécute au sein d'une transaction.

Quand deux traitements s'éxecute en même temps, il y en a toujours un qui
plante en remontant cette erreur.
Est ce que quelqu'un aurait une idée pour éviter que cela se reproduise

Merci d'avance
Très cordialement
Stéphane
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
bruno reiter
Le #18426561
lance une trace (profiler) et trap l'évènement "deadlock graph" pour voir
ec qui est en cause

BR

"Test recherche" news:gl1g9c$e2i$
Bonjour,
Je dispose d'un serveur SQL 2000 sous Windows 2003 server
Je rencontre des problèmes lors de l'execution de certaines procédures
stockées
l'erreur remontée est La transaction (ID du processus 272) a été bloquée
sur les ressources lock
Pourtant cette procédure ne fait rien d'exceptionnelle, elle récupère une
valeur dans une table, certe consutée,
insert un enregistrement dans une autre et récupère la valeur de
l'identifiant de l'enregistrement crée.
Tous ceci s'exécute au sein d'une transaction.

Quand deux traitements s'éxecute en même temps, il y en a toujours un qui
plante en remontant cette erreur.
Est ce que quelqu'un aurait une idée pour éviter que cela se reproduise

Merci d'avance
Très cordialement
Stéphane



zoltix
Le #18426551
On 19 jan, 12:16, "Test recherche"
Bonjour,
Je dispose d'un serveur SQL 2000 sous Windows 2003 server
Je rencontre des problèmes lors de l'execution de certaines procédure s
stockées
l'erreur remontée est La transaction (ID du processus 272) a été bl oquée sur
les ressources lock
Pourtant cette procédure ne fait rien d'exceptionnelle, elle récupè re une
valeur dans une table, certe consutée,
insert un enregistrement dans une autre et récupère la valeur de
l'identifiant de l'enregistrement crée.
Tous ceci s'exécute au sein d'une transaction.

Quand deux traitements s'éxecute en même temps, il y en a toujours un qui
plante en remontant cette erreur.
Est ce que quelqu'un aurait une idée pour éviter que cela se reprodui se

Merci d'avance
Très cordialement
    Stéphane



J'aimerais voir ta procédure car ce sera plus facile.......mais tu
travailles avec des curseurs(voici ma déclaration pour DECLARE
cursor_name CURSOR LOCAL STATIC....)? peut être changer l'isolation
des tes requêtes ou la stratégie(-

http://www.mssqlcity.com/Articles/Adm/SQL70Locks.htm

SET TRANSACTION ISOLATION LEVEL
{
READ COMMITTED
| READ UNCOMMITTED
| REPEATABLE READ
| SERIALIZABLE
}

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO
DBCC USEROPTIONS
GO
Test recherche
Le #18427201
Voici la procédure stockée


ALTER Procedure [dbo].[SPEditionBatchPDFTransfert_Record_Set2]
@a_id_EditionBatchPDFTransfert int, /* Identifiant d'un transfert d'information
de fichier PDF d'un lot d'édition */
@a_id_EditionBatchPDFTransfert_Section int, /* Identifiant d'une tranche
liées au transfert des fichiers PDF */
@a_PDFFileName varchar (260), /* Nom du fichier PDF */
@a_IndexStartNumberPDFFile int, /* Numéro d'index de début dans le
fichier PDF */
@a_IndexEndNumberPDFFile int, /* Numéro d'index de fin dans le fichier
PDF */
@a_LogicalDocumentBeginNumber int, /* Numéro de début de document
logique */
@a_LogicalDocumentEndNumber int, /* Numéro de fin de document logique
*/
@a_id_EditionBatchPDFTransfert_RecordType tinyint, /* Identifiant d'un
type d'enregistrement de fichier PDF */
@a_id_EditionBatchPDFTransfert_Record bigint Output, /* Identifiant d'un
enregistrement de fichier PDF d'un lot d'édition */
@a_id_Error smallint Output, /* Identifiant d'une erreur */
@a_id_ErrorSeverity smallint Output, /* Niveau de sévérité de l'erreur
*/
@a_ErrorMessage varchar (500) Output /* Message lié à l'erreur */
AS
Declare @l_UseTransaction bit /* Indique si l'on peut utiliser les
transactions */
Declare @l_ReturnCode int /* Code de retour */
Declare @l_RecordNumberOfFront int /* Nombre de face de l'enregistrement
*/
Declare @l_UniqueIdentifier uniqueidentifier /* Identifiant unique */

Set @a_id_EditionBatchPDFTransfert_Record = 0
Set @a_id_Error = 0
Set @a_id_ErrorSeverity = 0
Set @l_ReturnCode = 0
Set @l_UseTransaction = 0
Set @l_RecordNumberOfFront = 0

Set @a_ErrorMessage = ''

If @a_IndexEndNumberPDFFile <> 0
Set @l_RecordNumberOfFront = @a_IndexEndNumberPDFFile -
@a_IndexStartNumberPDFFile + 1

/***************************************************************************/ /* Contrôle que les numéros de document logique se situent dans la tranche*/ /***************************************************************************/ If Exists ( Select * From TEditionBatchPDFTransfert_Sections Where id_EditionBatchPDFTransfert_Section =@a_id_EditionBatchPDFTransfert_Section And ( @a_LogicalDocumentBeginNumber
Publicité
Poster une réponse
Anonyme