problema plan de mantenimiento, reorganizacion

15/10/2007 - 18:05 por Pedro | Informe spam
Tenemos un problema solo con una bbdd de un servidor.
Al crear un plan de mantenimiento que solo hace una reorganizacion de los
indices y datos dejando libre solo el 10% cada pagina (No hace nada mas), (En
el resto de las bbdd del srevidor funciona, creados de la misma forma)
Lo lanza un usuario equivalente al SA


El error de salida que nos da es:
[Microsoft SQL-DMO] Error 21268: [SQL-DMO]Row or column specified is
outside t
he range of the specified query result set.



En el visor de sucesos:

Event Type: Warning
Event Source: SQLSERVERAGENT
Event Category: Job Engine
Event ID: 208
Date: 15/10/2007
Time: 15:59:15
User: N/A
Computer: BOX28
Description:
SQL Server Scheduled Job 'Optimizations Job for DB Maintenance Plan 'DB
Maintenance Plan2'' (0x71E88DBC0067114196985CB87F158E7D) - Status: Failed -
Invoked on: 2007-10-15 15:59:13 - Message: The job failed. The Job was
invoked by User xxxx\xxxxx. The last step to run was step 1 (Step 1).
For more information, see Help and Support Center at
http://go.microsoft.com/fwlink/events.asp.

Gracias

Preguntas similare

Leer las respuestas

#1 Maxi
16/10/2007 - 00:59 | Informe spam
Hola, que sql tiene usted? que service pack?

"Pedro" escribió en el mensaje de noticias
news:


Tenemos un problema solo con una bbdd de un servidor.
Al crear un plan de mantenimiento que solo hace una reorganizacion de los
indices y datos dejando libre solo el 10% cada pagina (No hace nada mas),
(En
el resto de las bbdd del srevidor funciona, creados de la misma forma)
Lo lanza un usuario equivalente al SA


El error de salida que nos da es:
[Microsoft SQL-DMO] Error 21268: [SQL-DMO]Row or column specified is
outside t
he range of the specified query result set.



En el visor de sucesos:

Event Type: Warning
Event Source: SQLSERVERAGENT
Event Category: Job Engine
Event ID: 208
Date: 15/10/2007
Time: 15:59:15
User: N/A
Computer: BOX28
Description:
SQL Server Scheduled Job 'Optimizations Job for DB Maintenance Plan 'DB
Maintenance Plan2'' (0x71E88DBC0067114196985CB87F158E7D) - Status:
Failed -
Invoked on: 2007-10-15 15:59:13 - Message: The job failed. The Job was
invoked by User xxxx\xxxxx. The last step to run was step 1 (Step 1).
For more information, see Help and Support Center at
http://go.microsoft.com/fwlink/events.asp.

Gracias
Respuesta Responder a este mensaje
#2 Pedro
16/10/2007 - 07:52 | Informe spam
Hola. Es: SQL 2000 con SP3a, no poduedo instalar aun SP4 ya que tendrian que
dar el "ok" con la compatibilidad entre las aplicaciones y el ultimo SP... y
eso puede tardar...

"Maxi" wrote:

Hola, que sql tiene usted? que service pack?

"Pedro" escribió en el mensaje de noticias
news:
>
>
> Tenemos un problema solo con una bbdd de un servidor.
> Al crear un plan de mantenimiento que solo hace una reorganizacion de los
> indices y datos dejando libre solo el 10% cada pagina (No hace nada mas),
> (En
> el resto de las bbdd del srevidor funciona, creados de la misma forma)
> Lo lanza un usuario equivalente al SA
>
>
> El error de salida que nos da es:
> [Microsoft SQL-DMO] Error 21268: [SQL-DMO]Row or column specified is
> outside t
> he range of the specified query result set.
>
>
>
> En el visor de sucesos:
>
> Event Type: Warning
> Event Source: SQLSERVERAGENT
> Event Category: Job Engine
> Event ID: 208
> Date: 15/10/2007
> Time: 15:59:15
> User: N/A
> Computer: BOX28
> Description:
> SQL Server Scheduled Job 'Optimizations Job for DB Maintenance Plan 'DB
> Maintenance Plan2'' (0x71E88DBC0067114196985CB87F158E7D) - Status:
> Failed -
> Invoked on: 2007-10-15 15:59:13 - Message: The job failed. The Job was
> invoked by User xxxx\xxxxx. The last step to run was step 1 (Step 1).
> For more information, see Help and Support Center at
> http://go.microsoft.com/fwlink/events.asp.
>
> Gracias

Respuesta Responder a este mensaje
#3 Pedro
16/10/2007 - 07:58 | Informe spam
Una cosa, solo decir que me da este error en una base de datos, ya que el
resto de bases de datos del mismo servidor no se produce este problema.



"Maxi" wrote:

Hola, que sql tiene usted? que service pack?

"Pedro" escribió en el mensaje de noticias
news:
>
>
> Tenemos un problema solo con una bbdd de un servidor.
> Al crear un plan de mantenimiento que solo hace una reorganizacion de los
> indices y datos dejando libre solo el 10% cada pagina (No hace nada mas),
> (En
> el resto de las bbdd del srevidor funciona, creados de la misma forma)
> Lo lanza un usuario equivalente al SA
>
>
> El error de salida que nos da es:
> [Microsoft SQL-DMO] Error 21268: [SQL-DMO]Row or column specified is
> outside t
> he range of the specified query result set.
>
>
>
> En el visor de sucesos:
>
> Event Type: Warning
> Event Source: SQLSERVERAGENT
> Event Category: Job Engine
> Event ID: 208
> Date: 15/10/2007
> Time: 15:59:15
> User: N/A
> Computer: BOX28
> Description:
> SQL Server Scheduled Job 'Optimizations Job for DB Maintenance Plan 'DB
> Maintenance Plan2'' (0x71E88DBC0067114196985CB87F158E7D) - Status:
> Failed -
> Invoked on: 2007-10-15 15:59:13 - Message: The job failed. The Job was
> invoked by User xxxx\xxxxx. The last step to run was step 1 (Step 1).
> For more information, see Help and Support Center at
> http://go.microsoft.com/fwlink/events.asp.
>
> Gracias

Respuesta Responder a este mensaje
#4 Pedro
16/10/2007 - 08:16 | Informe spam
Hola

Gracias a nuestro colega Herrera, he reproducido esta noche el error en casa
y lo he solucionado. os cuento:

Planes de mantenimiento (del wizard) e índices sobre columnas calculadas en
SQL Server 2000 SP3 o anterior

Resulta que tengo definidas unas tareas de mantenimiento sobre unas bases de
datos SQL Server 2000. Algunas de ellas, en las tareas de:

· Comprobación de integridad de base de datos.

· Reorganización de tablas con comandos DBCC.

No finalizan correctamente indicando que “uno de los pasos” de la tarea de
mantenimiento falló. Evidentemente la información que muestra SQL Server
Enterprise Manager es bastante mejorable, por lo que he tenido que consultar
la tabla de sistema sysdbmaintplan_history en la base de datos msdb.

Hago lo de siempre, busco una fecha concreta, y consulto la columna message,
para ver si tengo más información accesible; en concreto ejecuto la siguiente
query:

select

plan_name, database_name, activity, start_time, message

from sysdbmaintplan_history

where succeeded = 0

Ahí aparecen un montón de errores con el mensaje:

[Microsoft][ODBC SQL Server Driver][SQL Server]DBCC failed because the
following SET options have incorrect settings: 'QUOTED_IDENTIFIER'.

Busco el mensaje de error en Google, y me lleva hasta el siguiente documento
de Soporte de Microsoft:

Event ID: 208 may be logged, and a "DBCC failed" error message is logged
when you try to use the Database Maintenance Plan Wizard to create a
maintenance plan in SQL Server 2000.

http://support.microsoft.com/kb/902388

¿Qué ha estado sucediendo?

Como bien indica el documento de soporte, el asistente de planes de
mantenimiento tiene un “bichito” por el cual, para tareas de reordenación de
índices, y tareas de comprobación de bases de datos, se le olvida establecer
las opciones SET apropiadas… más información la pueden encontrar en el doc de
soporte, pero como guias debes seguir lo siguiente: los planes de
mantenimiento del asistente fallarán cuando la base de datos tenga algún
índice / estadística sobre columnas calculadas.

Como “workarround” al problema debes instalar SP4 de SQL Server 2000, y
añadir -SupportComputedColumn, a la ejecución de la tarea para que la
utilidad “se entere” que tiene que establecer la opción SET adecuada.

Más información sobre las opciones SET y los comandos DBCC la tienes en el
siguiente documento de soporte:

SET OPTION considerations when running DBCC with indexes on computed columns.

http://support.microsoft.com/kb/301292/en-us

Solución adoptada

La instalación tiene SQL Server 2000 SP3 y como dentro de poco se va a
migrar a SQL Server 2005, no merece la pena migrar a SQL Server 2000 SP4, y
en su lugar he utilizado los siguiente scripts:

Primero: identificar las bases de datos afectadas:

Bien, leyendo la información de sysdbmaintplan_history o bien buscando las
bases de datos que tienen columnas calculadas y están indexadas:

Cómo obtener los índices que existen sobre columnas calculadas
http://solidqualitylearning.com/Blo.../3682.aspx

Ya sólo quedaría crear un script que ejecutara los comandos DBCC necesarios…
para ello se puede tomar como base el script anterior, y listo.

El script podría ser el siguiente; Fíjate que la tarea la hago para las
bases de datos que finalizan en SERV y PROF... siiii... son bases de datos de
Sharepoint:



SET NOCOUNT ON

SET ARITHABORT ON

SET QUOTED_IDENTIFIER ON

GO



DECLARE c1 CURSOR READ_ONLY

FOR

SELECT name

FROM master.dbo.sysdatabases

WHERE

name like '%SERV' or

name like '%PROF'

ORDER BY name



DECLARE @db_name SYSNAME



OPEN c1

FETCH NEXT FROM c1 INTO @db_name

WHILE (@@fetch_status <> -1)

BEGIN

IF (@@fetch_status <> -2)

BEGIN

DECLARE @sql NVARCHAR(4000)

SET @sql = ''

SET @sql = @sql + 'USE ' + QUOTENAME (CAST(@db_name AS SYSNAME)) + '; '

SET @sql = @sql + 'DBCC CHECKDB WITH NO_INFOMSGS'

EXEC (@sql)

END

FETCH NEXT FROM c1 INTO @db_name

END

CLOSE c1

DEALLOCATE c1



Las dos lineas en ROJO son las líneas que le faltan al plan de mantenimiento
para que funciones "como se espera".

Nota: aunque el documento de soporte hace referencia a columnas calculadas
indexadas, he podido comprobar el funcionamiento también será anómalo cuando
existan estadísticas sobre columnas calculadas, así que si tienes habilitada
la opción “auto create statistics” (que es lo más normal), si ahora no te
falla, es posible que en el futuro si suceda…

Nota2: el script puede completarse mucho más porque usando la opción:

DBCC CHECKDB WITH TABLERESULTS


Puedes enviar el resultado a una tabla, y por ejemplo, tener registrado en
tablas de trabajo la evolución de los resultados... curioso, ¿verdad?




"Pedro" wrote:



Tenemos un problema solo con una bbdd de un servidor.
Al crear un plan de mantenimiento que solo hace una reorganizacion de los
indices y datos dejando libre solo el 10% cada pagina (No hace nada mas), (En
el resto de las bbdd del srevidor funciona, creados de la misma forma)
Lo lanza un usuario equivalente al SA


El error de salida que nos da es:
[Microsoft SQL-DMO] Error 21268: [SQL-DMO]Row or column specified is
outside t
he range of the specified query result set.



En el visor de sucesos:

Event Type: Warning
Event Source: SQLSERVERAGENT
Event Category: Job Engine
Event ID: 208
Date: 15/10/2007
Time: 15:59:15
User: N/A
Computer: BOX28
Description:
SQL Server Scheduled Job 'Optimizations Job for DB Maintenance Plan 'DB
Maintenance Plan2'' (0x71E88DBC0067114196985CB87F158E7D) - Status: Failed -
Invoked on: 2007-10-15 15:59:13 - Message: The job failed. The Job was
invoked by User xxxx\xxxxx. The last step to run was step 1 (Step 1).
For more information, see Help and Support Center at
http://go.microsoft.com/fwlink/events.asp.

Gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida