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

Cambiar el espacio reservado en una tabla

Estas en el tema de Cambiar el espacio reservado en una tabla en el foro de SQL Server en Foros del Web. Hola a todos, soy nuevo por aqui y tengo un pequeño problema, necesito reducir el espacio reservado que tiene una tabla, he investigado un poco ...
  #1 (permalink)  
Antiguo 16/04/2009, 11:09
 
Fecha de Ingreso: abril-2009
Mensajes: 6
Antigüedad: 15 años, 8 meses
Puntos: 0
Cambiar el espacio reservado en una tabla

Hola a todos, soy nuevo por aqui y tengo un pequeño problema, necesito reducir el espacio reservado que tiene una tabla, he investigado un poco y a lo mas que eh llegado a sido al comando sp_spaceused, que al parecer sirve para eso, pero no se muy bien como ejecutarlo para que me cambie el tamaño reservado, el problema es que la tabla en cuestion ocupa 4GB!! ¿Alguién me puede hechar una mano?

Asimismo aprovecho la ocasión para preguntar por algún manual para aprender sql desde 0.

Muchas gracias a todos. Y disculpad que empiece ya con preguntas.
  #2 (permalink)  
Antiguo 16/04/2009, 19:29
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Cambiar el espacio reservado en una tabla

No se puede asignar un espacio "x" (incluso, limitarlo) a un objeto (TABLA o cualquier otro), no sera una incorrecta apresiacion.

En cuanto a manulales, por aqui si buscas, encontraras las ligas a los LIBROS EN LINEA.
  #3 (permalink)  
Antiguo 16/04/2009, 21:48
 
Fecha de Ingreso: abril-2009
Mensajes: 6
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Cambiar el espacio reservado en una tabla

Gracias por responder IISLAS, no creo que el caso sea una mala apreciación, ya que cuando hago un SP_SPACEUSED puedo observar que el espacio que tiene asignado a "RESERVED" es de 4GB mientras que el espacio utilizado es de 500MB


NAME ROWS RESERVED DATA INDEX_SIZE UNUSED
AlmHistorico 536733 3976088 KB 499448 KB 11232 KB 3465408 KB


Como observaras el espacio RESERVED es 8 veces superior a los datos que tiene.


Muchas gracias por vuestra ayuda.
  #4 (permalink)  
Antiguo 17/04/2009, 05:38
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Cambiar el espacio reservado en una tabla

Hola.
Eso puede ser por el tema de los índices.

EN SQL2000, creo que era DBCC REINDEX
En SQL2005, ALTER INDEX

Comprueba en la tabla el espacio de los índices y si es necesarios los defragmentas o reconstruyes.

Saludos
  #5 (permalink)  
Antiguo 17/04/2009, 06:44
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Respuesta: Cambiar el espacio reservado en una tabla

ya probaste con los comandos de reduccion de archivos (liberan el espacio no utilizado).

Código:
DBCC SHRINKDATABASE (UserDB, 10)
GO


USE UserDB
GO
DBCC SHRINKFILE (DataFil1, 7)
GO
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #6 (permalink)  
Antiguo 17/04/2009, 19:42
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Cambiar el espacio reservado en una tabla

Veamos, tu texto inicial dice: "el espacio reservado que tiene una tabla"

Creo que debe decir, BASE DE DATOS, en lugar de tabla.

me equivoco?
  #7 (permalink)  
Antiguo 19/04/2009, 07:28
 
Fecha de Ingreso: abril-2009
Mensajes: 6
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Cambiar el espacio reservado en una tabla

Hola a todos y muchas gracias por vuestras respuestas, no he podido probarlo aún por que la copia de seguridad que me he llevado a casa para hacer las pruebas estaba corrupta, y tendré que realizar una nueva copia de seguridad.


Tal y como comentaba ejbsoft creo que puede ir encaminado por el tema de los indices. Lo probaré el Lunes y os contaré como fue.


iislas, no me refiero a toda la DB tan solo es una tabla que tiene el un espacio reservado muy alto, el resto de la DB lo veo normal. Pero la tabla en cuestión tiene 500Mb utilizados y 4GB reservados. y eso me da problemas de espacio en la DB.

de nuevo muchas gracias a todos.
  #8 (permalink)  
Antiguo 20/04/2009, 18:39
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Cambiar el espacio reservado en una tabla

No tenia conocimiento que se puede "RESERVAR" espacio por objeto en SQL Server.
  #9 (permalink)  
Antiguo 27/04/2009, 16:02
 
Fecha de Ingreso: abril-2009
Mensajes: 6
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Cambiar el espacio reservado en una tabla

Hola a todos, y disculpad el retraso en responder.

Acabo de probar todos los procedimientos que me habeís comentado pero sigo con el mismo problema tengo la misma tabla con un espacio reservado de 4,8 GB (ha crecido la DB desde la última prueba que hice)

Alguién me podría hechar una mano.

Muchas gracias por vuestra ayuda.
  #10 (permalink)  
Antiguo 28/04/2009, 05:50
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Cambiar el espacio reservado en una tabla

Hola.
Miraste la fragmentación de los índices?.

Para ver los índices de tu tabla:

use bd
select name from sys.indexes where
object_id = (select object_id from sys.objects where name = 'Nombre-Tabla')
and type > 0

Revísalos y mira el espacio que ocupan en disco.
Podrías hacer previa copia de la BD; En sql2005:
(Para todos los índices de la tabla)

use bd
go
alter index all on Nombre-Tabla rebuild.

Comprueba el espacio de la tabla y nos cuentas.

Saludos
  #11 (permalink)  
Antiguo 30/04/2009, 08:39
 
Fecha de Ingreso: abril-2009
Mensajes: 6
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Cambiar el espacio reservado en una tabla

Estimado ejbsoft he probado los scripts que me comentabas pero no me deja ejecutar ninguno (da error).

Estoy ejecutando SQL 2000 (puede que sea por eso) además mirando las tablas he visto que no existe sys.indexes sino dbo.sysindexes.

Un saludo, y de nuevo gracias por vuestra ayuda.
  #12 (permalink)  
Antiguo 01/05/2009, 04:40
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Cambiar el espacio reservado en una tabla

Hola, tienes razón el código que puse es para 2005.

En 2000:

USE BD
GO

DBCC SHOWCONTIG('Nombre-Tabla') -- Mirar la fragmentación.
GO

Directamente reconstruiría todos los índices, previa copia de tabla:

DBCC DBREINDEX ("Nombre-Tabla", " ");

Más info:

msdn.microsoft.com/en-us/library/ms181671.aspx

Saludos
  #13 (permalink)  
Antiguo 02/05/2009, 17:32
 
Fecha de Ingreso: abril-2009
Mensajes: 6
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Cambiar el espacio reservado en una tabla

EJBSOFT he probado el script que me has proporcionado y sigue sin funcionar, el espacio actual en la tabla es el que detallo mas abajo.


TABLA

Rows: 548773
Reserved: 4440072 KB
Data: 557480 KB
Index_size: 11496 KB
Unnused: 3871096 KB

BASE DE DATOS

Reserved: 7434936 KB
Data: 2160568 KB
Index_size:284384 KB
unused:4989984 KB
dabase_size:6675.00 MB
unallocated space: -586.43 MB


Espero que esto pueda servir de ayuda, y muchisimas gracias por vuestra inestimable ayuda.
  #14 (permalink)  
Antiguo 04/05/2009, 05:40
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Cambiar el espacio reservado en una tabla

Hola de nuevo.
Según la info que mandas los índices aparentemente no están mal.
Una pregunta:
Haceis backup de log y luego shrink?

use BD
backup log BD with truncate_only
go
dbcc shrinkfile (2, 100) -- Donde 2 es el file_id de logs de "select * from sys.database_files" y 100 el espacio libre a dejar.
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 00:11.