Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/10/2013, 20:29
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Actualización masiva

Cita:
Iniciado por alex1084 Ver Mensaje
Hola a todos, espero expresar de la mejor manera la idea..

Tengo una base de datos con 200 tablas mas o menos, cada tabla tiene N campos y quisiera hacer un SP que barra todas las tablas registro por registro de forma automática esto con el objetivo de borrar los espacios en blanco innecesarios al inicio y al final de los campos de texto, ya que actualmente la base pesa cerca de 250GB y he llegado a la conclusión que es por los espacios en blanco que tienen muchos de los registros, existe alguna forma de hacer un update de forma automática sin tener que hacer un update por cada tabla???
lo que tengo hasta ahorita es esto

Código SQL:
Ver original
  1. DECLARE @TABLA VARCHAR (100), @COLUMNA VARCHAR(100)
  2.  
  3. DECLARE CUR_TABLAS CURSOR FOR
  4. SELECT SO.NAME AS TABLA FROM sys.objects SO WHERE SO.TYPE = 'U' ORDER BY SO.NAME
  5. OPEN CUR_TABLAS
  6.  
  7. FETCH NEXT FROM CUR_TABLAS INTO @TABLA
  8.  
  9. WHILE @@FETCH_STATUS = 0                                                                                                                        
  10. BEGIN
  11.  
  12. FETCH NEXT FROM CUR_TABLAS INTO @TABLA
  13. END--FIN DE CURSOR DE TABLAS
  14. CLOSE CUR_TABLAS
  15. DEALLOCATE CUR_TABLAS

con lo que logro barrer todas las tablas de la base, pero no encuentro como ir tabla por tabla barriendo registro por registo y hacer el correspondiente update de cada campo.....

¿Será posible hacer lo que quiero?
o ¿sin duda debo ir tabla por tabla haciendo el update manualmente?

Gracias y espero sus comentarios
Disculpame amigo pero no estoy de acuerdo contigo de que tu problema sean "los espacios en blanco" porque digo esto, porque cuando defines un campo defines su longitud(hablando de los de tipo texto) y sql server te reserva ese espacio de memoria, ahora si tu base de datos esta muy grande lo que puedes hacer es un shrink de la misma, un shrink del log, revisar los indices(una reorganizacion de los mismos) eliminacion de informacion no necesaria, revisar el crecimiento de la base de datos etc.

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me