Sybase SQL Anywhere - MonTables

 
Vista:

MonTables

Publicado por jose (1 intervención) el 10/11/2008 21:06:08
Buenas Tardes a Todos, si alguien tiemne experiancia con tablas de monitoreo y me pueda ayudar...
lo que quiero es hacer algo asi .

declare @fecha varchar(8),
@hora varchar(8)

select @fecha = convert(varchar(8),getdate(),112)
select @hora =convert(varchar(8),getdate(),108)

select spid, suser_name(suid) as usuario, cmd, kpid, @fecha, @hora, null, "W"
from master..sysprocesses s
left join master..monDeadLock d on s.spid = d.--aca deberia joinear conla de lockeos.
where cmd like'%lock%'

es algo simple pero me parece que estoy mandando fruta, tegno que obtener toda la info que pueda sobre procesos que me aprezcan como lockeados,
ahora yo estoy tomando los procesos de sysprocesses y si me aparece un lockeo, obtener toda la info de ese proceso.
el tema es que no se como hacer con el join y no encontre mucha info sobre como obrtenerlo, ademas de que no pude lograr lockeos.
esto es lo que estoy corriendo en dos sessiones distintas.

---Proceso 1
use Procesos
go

WHILE(1=1)--@contador > 1)
BEGIN
BEGIN TRAN
UPDATE dbmon_procesos SET valorprueba = "SWM_JoseLar" WHERE usuario = "SWM_JoseLar"
UPDATE dbmon_procesos2 SET valorprueba = "SWM_JoseLar" WHERE usuario = "SWM_JoseLar"
COMMIT TRAN

END

---Proceso 2

use Procesos
go

WHILE(1=1)--@contador > 1)
BEGIN
BEGIN TRAN
UPDATE dbmon_procesos2 SET valorprueba = "SWM_JoseLar" WHERE usuario = "SWM_JoseLar"
UPDATE dbmon_procesos SET valorprueba = "SWM_JoseLar" WHERE usuario = "SWM_JoseLar"
COMMIT TRAN

END


desde ya, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Monitoreo de bloqueos y procesos con sysprocesses y monDeadLock

Publicado por Alejandro (46 intervenciones) el 20/02/2024 17:23:42
Hola José.

Parece que estás intentando monitorear y detectar bloqueos en Sybase SQL Anywhere. Aquí hay algunos ajustes y consejos para tu consulta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DECLARE @fecha VARCHAR(8);
DECLARE @hora VARCHAR(8);
 
SELECT @fecha = CONVERT(VARCHAR(8), GETDATE(), 112);
SELECT @hora = CONVERT(VARCHAR(8), GETDATE(), 108);
 
SELECT
    sp.spid,
    suser_name(sp.suid) AS usuario,
    sp.cmd,
    sp.kpid,
    @fecha AS fecha,
    @hora AS hora,
    dl.* -- Aquí seleccionamos todos los campos de la tabla monDeadLock
FROM
    master..sysprocesses sp
LEFT JOIN
    master..monDeadLock dl ON sp.spid = dl.spid
WHERE
    sp.cmd LIKE '%lock%';

A continuación, algunos comentarios y recomendaciones:

1. Uso de comillas dobles:
En SQL, generalmente se utilizan comillas simples (`'`) para cadenas de caracteres. He cambiado las comillas dobles (`"`) a simples en tu consulta.

2. Uso de `sp` como alias para `sysprocesses`:
En lugar de usar `s` como alias para `sysprocesses`, he cambiado a `sp` para mayor claridad y consistencia.

3. Selección de todos los campos de `monDeadLock`:
Al usar `dl.*`, seleccionamos todos los campos de la tabla `monDeadLock` para obtener toda la información sobre los bloqueos.

4. Consejos para provocar bloqueos:
Para provocar bloqueos, ten en cuenta que necesitas transacciones concurrentes que interactúen con las mismas tablas. Asegúrate de que las transacciones se ejecuten de manera concurrente.

Espero que estos ajustes te ayuden a obtener la información que necesitas sobre los procesos de bloqueo en tu entorno Sybase SQL Anywhere.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar