none
Query para obtener la longitud de campo de todas las tablas en SQL SERVER 2005?

    Question

  • Cómo puedo obtener la longitud de campo de todas las tablas en sql sever 2005?

    Consulta para obtener los bytes por registro de cada tabla en sql server 2005?(he intentando con una query , pero los obtengo en kilobytes o los quiero en bytes.

    Si alguien puede ayudarme , estoy por aqui!!!!! GRACIAS

    Thursday, May 26, 2011 8:51 PM

Answers

  • Hola.

    Agrupar por el nombre de la tabla:

    CREATE TABLE #t ( [name] NVARCHAR(128), [rows] CHAR(11), reserved VARCHAR(18), data VARCHAR(18), index_size VARCHAR(18), unused VARCHAR(18)) INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' -- # of rows.
    
    SELECT name, SUM(CAST([rows] AS int)) AS [rows] , sum(cast(replace(reserved,'KB','') as float))*1024 [Bytes reserved],sum(cast(replace(data,'KB','') as float))*1024 [Bytes data] FROM #t 
    group by name
    DROP TABLE #t
    


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Friday, May 27, 2011 6:54 PM

All replies

  • si tienes los kilobytes, multiplicalo por 1024 y tienes bytes. 
    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com</a
    Thursday, May 26, 2011 8:53 PM
  • Hay algun query que lo pueda hacer, porque son demasiadas tablas para hacerlas una por una.

    Thursday, May 26, 2011 9:35 PM
  • Select ( lo que te de los kb) *1024 te dará eso

    Si no lo ves, ponnos el query que usas y te lo escribimos


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com</a
    Thursday, May 26, 2011 10:05 PM
  • Este es el query:

    USE

    SET NOCOUNT ON DBCC UPDATEUSAGE(0) -- DB size.

    EXEC sp_spaceused-- Table row counts and sizes.

    CREATE TABLE #t (   [name] NVARCHAR(128),  [rows] CHAR(11),  reserved VARCHAR(18),   data VARCHAR(18),   index_size VARCHAR(18),  unused VARCHAR(18)) INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' SELECT *FROM  #t-- # of rows.

    SELECT SUM(CAST([rows] AS int)) AS [rows]FROM  #t DROP TABLE #t

     

    Thursday, May 26, 2011 10:29 PM
  • Que query en sql server 2005 puedo usar para obtener los metadatos de varias tablas: nombre de tabla , nombre del campo , longitud, tipo de dato , decimal.

    GRACIAS SALUDOS

    Thursday, May 26, 2011 10:44 PM
  • Este es el query:

    USE

    SET NOCOUNT ON DBCC UPDATEUSAGE(0) -- DB size.

    EXEC sp_spaceused-- Table row counts and sizes.

    CREATE TABLE #t (   [name] NVARCHAR(128),  [rows] CHAR(11),  reserved VARCHAR(18),   data VARCHAR(18),   index_size VARCHAR(18),  unused VARCHAR(18)) INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' SELECT *FROM  #t-- # of rows.

    SELECT SUM(CAST([rows] AS int)) AS [rows]FROM  #t DROP TABLE #t

    Thursday, May 26, 2011 10:56 PM
  • en lugar de select sum(cast(rows as int) que dice el número total de filas,  puedes poner

    SELECT SUM(CAST([rows] AS int)) AS [rows], sum(cast(reserved as flaot))*1024 as bytereservados FROM  #t


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com</a
    Thursday, May 26, 2011 11:08 PM
  • Ya lo hice , pero me marca error en flaot que es float y en #t
    Thursday, May 26, 2011 11:52 PM
  • Creo que podrias fusionar este hilo con el otro que has abierto:

     

    http://social.msdn.microsoft.com/Forums/es-ES/sqlserveres/thread/9694cec5-1f03-4627-9765-4ffddef36068

     

    Friday, May 27, 2011 7:21 AM
  • Socrates, entendía que te dabas cuenta que solo cambié un trozo de tu script .

    este es el completo

    CREATE TABLE #t (  [name] NVARCHAR(128), [rows] CHAR(11), reserved VARCHAR(18),  data VARCHAR(18),  index_size VARCHAR(18), unused VARCHAR(18)) INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' -- # of rows.
    
    SELECT SUM(CAST([rows] AS int)) AS [rows] , sum(cast(replace(reserved,'KB','') as float))*1024 [Bytes reserved],sum(cast(replace(data,'KB','') as float))*1024 [Bytes data] FROM #t 
    DROP TABLE #t
    
    

    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com</a
    Friday, May 27, 2011 8:32 AM
  • Es correcto , solo que tengo como salida , la suma de todos los registros de todas las tablas en bytes.

    Pero necesito los bytes por registro por cada tabla¡¡¡¡¡

    ¿Que puedo hace Miguel?

    Friday, May 27, 2011 3:21 PM
  • Hola.

    Agrupar por el nombre de la tabla:

    CREATE TABLE #t ( [name] NVARCHAR(128), [rows] CHAR(11), reserved VARCHAR(18), data VARCHAR(18), index_size VARCHAR(18), unused VARCHAR(18)) INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' -- # of rows.
    
    SELECT name, SUM(CAST([rows] AS int)) AS [rows] , sum(cast(replace(reserved,'KB','') as float))*1024 [Bytes reserved],sum(cast(replace(data,'KB','') as float))*1024 [Bytes data] FROM #t 
    group by name
    DROP TABLE #t
    


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Friday, May 27, 2011 6:54 PM