Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Problema indice en tabla se corrompe cada x tiempo

Estas en el tema de Problema indice en tabla se corrompe cada x tiempo en el foro de SQL Server en Foros del Web. Buenas, Tengo una base de datos sql server 2012 express, la cual tiene una tabla bastante grande (ahora mismo tiene 755.000 registros) que tiene más ...
  #1 (permalink)  
Antiguo 24/11/2014, 03:34
 
Fecha de Ingreso: noviembre-2014
Mensajes: 4
Antigüedad: 9 años, 5 meses
Puntos: 0
Problema indice en tabla se corrompe cada x tiempo

Buenas,

Tengo una base de datos sql server 2012 express, la cual tiene una tabla bastante grande (ahora mismo tiene 755.000 registros) que tiene más de 150 campos, en dicha tabla hay creados unos 15 indices, todos "No único, no cluster". Esta base de datos la explota una aplicación que trabaja con ella sin problemas... Sin embargo desde hace un mes mas o menos se queda pillada ejecutando un listado cuando filtras por un campo determinado. Esto hace que o bien el listado no aparezca (como si no hubiera datos) o bien se quede pensando el programa y bloquea el acceso a los demás usuarios de la aplicación, osea como si no estuviera accediendo por indice.

Solo ocurre cuando filtran por ese campo en concreto. Investigando un poco vi que dicho campo (que pertenece a la tabla que nos ocupa) tenía un indice. Desde el Management Studio le doy a reconstruir indice, tarda menos de 1 segundo y el problema desaparece, pero a los 15 días mas o menos vuelve a pasar lo mismo y lo tengo que solucionar de nuevo reconstruyendo el índice. La base de datos tiene espacio todavía, y no se me ocurre porque puede pasar esto.

Si me podéis echar una mano os estaré muy agradecidos.

Un saludo
  #2 (permalink)  
Antiguo 24/11/2014, 14:54
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Problema indice en tabla se corrompe cada x tiempo

Porque los índices y mas aquellos que sufren mucho mantenimiento (DELETE, UPDATE), deben RECONSTRUIRSE al menos cada semana.

Simple

Como tienes la versión express, reconstruye tus índices programando una tarea en el SCHEDULER de Windows:

Código SQL:
Ver original
  1. ALTER DATABASE <DBName>
  2. SET RECOVERY SIMPLE
  3. GO
  4. EXEC sp_MSforeachtable 'SET QUOTED_IDENTIFIER ON; ALTER INDEX ALL ON ? REBUILD WITH (FILLFACTOR = 100, ONLINE = OFF, SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = OFF)'
  5. GO
  6. EXEC sp_updatestats
  7. GO
  8. ALTER DATABASE <DBName>
  9. SET RECOVERY FULL
  10. GO
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 02/12/2014, 02:17
 
Fecha de Ingreso: noviembre-2014
Mensajes: 4
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Problema indice en tabla se corrompe cada x tiempo

Hola, gracias por contestar y por la explicación.
El script que me propones que por lo que veo es para todos los índices de la base de datos, ¿se podría lanzar con los usuarios conectados al programa y por tanto funcionando con la base de datos? ¿Notarían alguna ralentización o bloqueo en la aplicación?

Un saludo.
  #4 (permalink)  
Antiguo 02/12/2014, 03:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema indice en tabla se corrompe cada x tiempo

Pues lo que haces es ejecutarlo en forma automática, una vez a la semana, en horario de bajo uso de la base.
Usualmente se programan ese tipo de tareas para las 00:00 horas, en rutina de mantenimiento normal.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 02/12/2014, 04:37
 
Fecha de Ingreso: noviembre-2014
Mensajes: 4
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Problema indice en tabla se corrompe cada x tiempo

Gracias pero no has contestado ninguna de mis dos preguntas. No me es posible ahora mismo lanzarlo en horario de poco uso, ni mucho menos a las 00:00 horas.

Un saludo.
  #6 (permalink)  
Antiguo 02/12/2014, 08:16
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema indice en tabla se corrompe cada x tiempo

sis e puede lanzar con los usuarios conectados a la base de datos, pero esto te causaria lentitud de respuesta en la base por eso se recomienda hacerlo en horas fuera de "uso normal",no tienes que estar conectado a la base de datos para lanzarlo puedes hacerlo como bien te han dicho desde un windows scheduler
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 02/12/2014, 09:01
 
Fecha de Ingreso: noviembre-2014
Mensajes: 4
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Problema indice en tabla se corrompe cada x tiempo

Gracias por la respuesta.

Un saludo.

Etiquetas: cada, indice, registros, server, sql, tabla, tiempo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:46.