Error en el Agente de lectura de cola (queue reader agent, SQL Server 2005 standard)

12/07/2006 - 09:38 por J.A. García Barceló | Informe spam
Desde hace unas horas recibo el siguiente error:


Fecha 12/07/2006 9:00:17
Registro Historial de trabajos ([MYSERVER].8)

Id. del paso 2
Servidor MYSERVER
Nombre del trabajo [MYSERVER].8
Nombre del paso Ejecutar agente.
Duración 00:18:35
Gravedad de SQL 0
Id. de mensaje de SQL 0
Operador notificado mediante correo electrónico
Operador notificado mediante envío de red
Operador notificado mediante localizador
Reintentos efectuados 0

Mensaje
-XSERVER MYSERVER
-XCMDLINE 0
-XCancelEventHandle 000000000000118C
2006-07-12 07:18:03.678 Agente de lectura de cola [MYSERVER].8 (Id. = 1)
iniciado
2006-07-12 07:18:03.678 Valores de parßmetro obtenidos del perfil de agente:
-historyverboselevel 1
-logintimeout 15
-pollinginterval 5000
-querytimeout 1800
2006-07-12 07:18:33.724 No hay ninguna transacci¾n en cola disponible
2006-07-12 07:18:48.755 No hay ninguna transacci¾n en cola disponible
2006-07-12 07:18:52.552 El Agente de lectura de cola ha detectado el error
'Identificador de fila no vßlido.' al conectarse a 'mydb' en 'MYSERVER'.
Aseg·rese de que la publicaci¾n y la suscripci¾n se han definido
correctamente y de que los dos servidores estßn en ejecuci¾n.
2006-07-12 07:18:52.584 Error al aplicar el mensaje en cola al publicador
2006-07-12 07:18:52.599 Subproceso de trabajo 4412 : error en la tarea
2006-07-12 07:18:52.599 No hay ninguna transacci¾n en cola disponible
2006-07-12 07:18:52.599 Anulando lector de colas

Estoy usando publicaciones transaccionales con actualizaciones inmediatas y
TODAS las suscripciones actualizables fallan (en realidad falla el lector,
que es común para todas ellas). También tengo una publicación que no es
actualizable (y que por tanto no usa el agente lector de cola) que funciona
bien. He probado a reiniciar el servidor SQL y sigue fallando todo igual.
Parece ser que se ha metido algún valor en la cola y no le gusta dicho valor
al lector, de modo que reiniciar servicios no soluciona nada.

¿Le ha ocurrido algo así a alguien? ¿Como puedo solucionar este error?
Gracias.

J.A. García Barceló
http://jagbarcelo.blogspot.com/
 

Leer las respuestas

#1 J.A. García Barceló
12/07/2006 - 11:42 | Informe spam
Para mi referencia y por si sirve en el futuro a algún otro compañero:

Puesto que el error no indica claramente a qué publicación/artículo se puede
estar debiendo ese 'identificador de fila no válido' he ejecutado
manualmente el agente de lectura de cola. Para ello:
* He abierto una linea de comandos (run as: cuenta de servicio del agente)
* cd "C:\Program Files\Microsoft SQL Server\90\COM"
* qrdrsvc -Distributor [MYSERVER] -DistributionDB
[distributiondb] -DistributorSecurityMode 1 -Continuous -OutputVerboseLevel
2 > agentlog.txt

Después, revisando el final del fichero agentlog.txt me he encontrado con lo
siguiente:

2006-07-12 08:37:41.220 OLE DB SUBSCRIBER 'SUBSCRIBER': {? = call
sp_getsqlqueueversion (?, ?, ?, ?)}
2006-07-12 08:37:41.314 OLE DB SUBSCRIBER 'SUBSCRIBER': {? = call
sp_replsqlqgetrows (N'MYSERVER', N'mydb', N'Equipos')}
2006-07-12 08:37:41.439 OLE DB qrdrsvc 'MYSERVER': exec sp_helpdistpublisher
@publisher = N'MYSERVER'
2006-07-12 08:37:41.454 Connecting to OLE DB MYSERVER at datasource:
'MYSERVER', location: '', catalog: 'mydb', providerstring: '' using provider
'SQLNCLI'
2006-07-12 08:37:41.454 OLE DB MYSERVER: MYSERVER
DBMS: Microsoft SQL Server
Version: 09.00.2047
catalog name: mydb
user name: dbo
API conformance: 0
SQL conformance: 0
transaction capable: 1
read only: F
identifier quote char: "
non_nullable_columns: 0
owner usage: 15
max table name len: 128
max column name len: 128
need long data len:
max columns in table: 1000
max columns in index: 16
max char literal len: 131072
max statement len: 131072
max row size: 131072
2006-07-12 08:37:41.454 OLE DB MYSERVER 'MYSERVER': set arithabort on set
numeric_roundabort off set concat_null_yields_null on set quoted_identifier
on set ansi_nulls on set ansi_padding on set ansi_warnings on
2006-07-12 08:37:41.454 OLE DB MYSERVER 'MYSERVER': select pubid,
conflict_policy from dbo.syspublications where name = N'Equipos'
2006-07-12 08:37:41.454 OLE DB MYSERVER 'MYSERVER': {? = call
sp_getqueuedarticlesynctraninfo (N'Equipos', 233)}
2006-07-12 08:37:41.454 El Agente de lectura de cola ha detectado el error
'Identificador de fila no válido.' al conectarse a 'mydb' en 'MYSERVER'.
Asegúrese de que la publicación y la suscripción se han definido
correctamente y de que los dos servidores están en ejecución.
2006-07-12 08:37:41.470 Error al aplicar el mensaje en cola al publicador
2006-07-12 08:37:41.485 Subproceso de trabajo 396 : error en la tarea
2006-07-12 08:37:41.485 No hay ninguna transacción en cola disponible
2006-07-12 08:37:41.485 Disconnecting from OLE DB SUBSCRIBER 'SUBSCRIBER'
2006-07-12 08:37:41.485 Disconnecting from OLE DB SUBSCRIBER 'SUBSCRIBER'
2006-07-12 08:37:41.485 Disconnecting from OLE DB MYSERVER 'MYSERVER'
2006-07-12 08:37:41.485 Anulando lector de colas

El problema aparecía en la publicación 'Equipos'. Me ha bastado con
reiniciar la publicación para todos los suscriptores y el problema se ha
solucionado. Probablemente al reiniciarla, se descartan todo lo que pudiera
haber encolado para esa publicación ya que el nuevo snapshot contiene todos
los datos actualizados.

Una cosa es solucionar el problema. Otra cosa es averiguar porqué surgió y
si volverá (probablemente) a surgir en el futuro. Si alguien tiene alguna
idea a este respecto, me gustaría saberla.

Gracias.

J.A. García Barceló
http://jagbarcelo.blogspot.com/


"J.A. García Barceló" escribió en el mensaje
news:%
Desde hace unas horas recibo el siguiente error:


Fecha 12/07/2006 9:00:17
Registro Historial de trabajos ([MYSERVER].8)

Id. del paso 2
Servidor MYSERVER
Nombre del trabajo [MYSERVER].8
Nombre del paso Ejecutar agente.
Duración 00:18:35
Gravedad de SQL 0
Id. de mensaje de SQL 0
Operador notificado mediante correo electrónico
Operador notificado mediante envío de red
Operador notificado mediante localizador
Reintentos efectuados 0

Mensaje
-XSERVER MYSERVER
-XCMDLINE 0
-XCancelEventHandle 000000000000118C
2006-07-12 07:18:03.678 Agente de lectura de cola [MYSERVER].8 (Id. = 1)
iniciado
2006-07-12 07:18:03.678 Valores de parßmetro obtenidos del perfil de
agente:
-historyverboselevel 1
-logintimeout 15
-pollinginterval 5000
-querytimeout 1800
2006-07-12 07:18:33.724 No hay ninguna transacci¾n en cola disponible
2006-07-12 07:18:48.755 No hay ninguna transacci¾n en cola disponible
2006-07-12 07:18:52.552 El Agente de lectura de cola ha detectado el error
'Identificador de fila no vßlido.' al conectarse a 'mydb' en 'MYSERVER'.
Aseg·rese de que la publicaci¾n y la suscripci¾n se han definido
correctamente y de que los dos servidores estßn en ejecuci¾n.
2006-07-12 07:18:52.584 Error al aplicar el mensaje en cola al publicador
2006-07-12 07:18:52.599 Subproceso de trabajo 4412 : error en la tarea
2006-07-12 07:18:52.599 No hay ninguna transacci¾n en cola disponible
2006-07-12 07:18:52.599 Anulando lector de colas

Estoy usando publicaciones transaccionales con actualizaciones inmediatas
y TODAS las suscripciones actualizables fallan (en realidad falla el
lector, que es común para todas ellas). También tengo una publicación que
no es actualizable (y que por tanto no usa el agente lector de cola) que
funciona bien. He probado a reiniciar el servidor SQL y sigue fallando
todo igual. Parece ser que se ha metido algún valor en la cola y no le
gusta dicho valor al lector, de modo que reiniciar servicios no soluciona
nada.

¿Le ha ocurrido algo así a alguien? ¿Como puedo solucionar este error?
Gracias.

J.A. García Barceló
http://jagbarcelo.blogspot.com/




Preguntas similares