ERROR: No se puede asignar espacio al objeto XXXX de la base de datos 'TEMPDB'. El grupo de archivos 'DEFAULT' está lleno

13/09/2004 - 16:25 por manel gonzalez | Informe spam
Hola grupo

Hace ya algún tiempo que expuse este problema en el foro...

Desde hace 1 mes, de cuando en cuando aparecen en el log errores como este:
"No se puede asignar espacio al objeto '(SYSTEM table id: -691489247)'
de la base de datos 'TEMPDB'. El grupo de archivos 'DEFAULT' está lleno."

El caso es que hay sitio de sobras en el disco ( que es un array de 5
discos ) al que le quedan 18 Gb libres.

La TempDB tiene activado el autoincremento (10%) tanto para su fichero de
datos como el de transaction log

Yo puedo forzar el error si realizo un update de 1 campo sobre una tabla de
900.000 registros con estas instrucciones

BEGIN TRAN
UPDATE Tabla SET campo = campo
IF @@ERROR = 0
COMMIT
ELSE
ROLLBACK

La tabla de marras sólo ocupa 121 Mb en disco ¿¿ que pasa ??

Ha estado un tecnico de IBM mirando los discos por si se trataba de algo
físico, pero no ha encontrado nada.

Otra cosa que quizas os ayude... !!no puedo cambiar el tamaño del fichero de
datos de la TempDB, pero si el del transaction log!!
(Raro, raro, raro)

La plataforma es un SQL7 con SP4 sobre NT4 con SP6



Gracias de antemano a todos
 

Leer las respuestas

#1 Lázaro
13/09/2004 - 17:00 | Informe spam
No me acuerdo muy bien, pero si como era en SQL Server 6.5 o en Adaptive
Server de Sybase que eran iguales.

Cuando creabas un nuevo dispositivo de BD se creaban 3 segmentos, el system,
el default y el log. El segmento log era asignado al dispositivo de log si
había uno separado del de datos y el system y el default compartían
dispositivo.

Cuando le sumas más espacio a la bd, como en el caso de tempdb, el extiende
el segmento default entre los dos dispositivos físicos de disco. Que te
puede estar ocurriendo, que cuando un objeto empieza a escribirse en el
segmento default del dispositivo 1, cuando tiene que coger más espacio no
puede crecer en el segmento default del dispositivo 2. Por eso te dará
cuando en tempdb, cuando los objetos sean muy grandes e intenten coger
espacio en ambos segmentos.

En aquellas versiones de las que te hablo cuando se extendía la bd, lo que
se hacía era u obligar a que los objetos se crearan en un segmento, con la
cláusula ON default, etc. o eliminar el segmento default del dispositivo
inicial de la bd, de manera que sólo quedara un default en el segundo
dispositivo.

No recuerdo como funcionaba esto en el SQL 7, porque pasé de Sybase y MS 6.5
a MS 2000, donde ya el sistema no es el mismo.

Espero que al menos te sirva para buscar la fuente del problema.

Salu2


"manel gonzalez" wrote in message
news:

Hola grupo

Hace ya algún tiempo que expuse este problema en el foro...

Desde hace 1 mes, de cuando en cuando aparecen en el log errores como


este:
"No se puede asignar espacio al objeto '(SYSTEM table id: -691489247)'
de la base de datos 'TEMPDB'. El grupo de archivos 'DEFAULT' está lleno."

El caso es que hay sitio de sobras en el disco ( que es un array de 5
discos ) al que le quedan 18 Gb libres.

La TempDB tiene activado el autoincremento (10%) tanto para su fichero de
datos como el de transaction log

Yo puedo forzar el error si realizo un update de 1 campo sobre una tabla


de
900.000 registros con estas instrucciones

BEGIN TRAN
UPDATE Tabla SET campo = campo
IF @@ERROR = 0
COMMIT
ELSE
ROLLBACK

La tabla de marras sólo ocupa 121 Mb en disco ¿¿ que pasa ??

Ha estado un tecnico de IBM mirando los discos por si se trataba de algo
físico, pero no ha encontrado nada.

Otra cosa que quizas os ayude... !!no puedo cambiar el tamaño del fichero


de
datos de la TempDB, pero si el del transaction log!!
(Raro, raro, raro)

La plataforma es un SQL7 con SP4 sobre NT4 con SP6



Gracias de antemano a todos








Preguntas similares