Bonjour,
Je souhaite savoir quel est le code de la transaction qui rempli mon tempdb.
Quelqu'un peut'il m'indiquer comment faire ?
Merci.
Version imprimable
Bonjour,
Je souhaite savoir quel est le code de la transaction qui rempli mon tempdb.
Quelqu'un peut'il m'indiquer comment faire ?
Merci.
En récupérant par exemple le 'sqltext' de la transaction restée ouverte (master..syslogshold) à l'aide d'une procédure de seuil.
Aussi disponible dans les tables MDA (monSysSQLText, monProcessSQLText, etc) pour ASE 12.5.0.3 et suivants...
Michael
Bonjour,
Les tables MDA ne sont pas installées sur mes Dataservers.
Comment puis-je récupérer le sqltext à partir de le table master..syslogshold ?Citation:
En récupérant par exemple le 'sqltext' de la transaction restée ouverte (master..syslogshold) à l'aide d'une procédure de seuil.
Je ne sais pas comment utiliser le contenu de ces colonnes dbid, reserved, spid, page, xactid, masterxactid, starttime, name, xloid afin de récupérer la transaction.
Merci de votre aide.
Si je me souviens bien, c'est une command dbcc (dbcc sqltext(spid)) - donc pas facile de récupérer cela dans un select, par example.
Par ailleur je conseille fortement l'installation des tables MDA, même si elles ne sont enclenchées que de façon ponctuelle pour trouver des problèmes.
Michael
Merci Michael.
C'est bien dbcc sqltext(spid) après avoir fait un dbcc traceon(3604).
:ccool:
Bonsoir,
Comment savoir de manière sûre le SPID de la transaction à l'origine du blocage, lorsqu'on à de nombreuses transactions bloquées, sp_who avec LOG SUSPEND ?
Je regarde dans la table syslogshold, mais là aussi il y a du monde, dans sysprocesses idem ?
Merci d'avance pour votre aide.
Pour récupérer le spid qui bloque:
Ensuite vous pouvez faire un sp_showplan, dbcc sqltext(<spid>) et un select dans sysprocesses (cf la doc sybase sur cette table) pour avoir un maximum d'infos.Code:
1
2
3
4
5 declare @holdingSpid int select @holdingSpid = spid from master..syslogshold where dbid = db_id('tempdb') -- si c'est la tempdb que vous cherchez
Il est a noter qu'il est possible depuis la 12.5.4 (ESD 5 je crois, peut être plus tôt) de savoir l'espace utilisé par un process en tempdb avec la fonction pssinfo.
Exemple:
Renvoie le nombre de pages que le spid utilise en tempdb.Code:select convert(int,PSSinfo(<spid>,"tempdb_pages")
C'est pas vraiment simple. Il faut avoir un peu de jugeotte :-)
Mais en général on doit pouvoir déterminer le process via le texte des tables MDA, ou via dbcc sqltext().
Michael
Merci.