Averigua el tamaño de las filas de tus tablas
Este es un procedimiento que nos dirá cuanto “pesan” las filas de nuestras tablas según las hayamos definido. Nos puede resultar útil para preparar nuestras bases de datos para unos volúmenes de datos determinados.
1:
2: CREATE PROCEDURE [dbo].[FindRowSize]
3: AS
4: BEGIN
5: DECLARE @rowsize int;
6: DECLARE @lineaSize int;
7: DECLARE @anexoSize int;
8: SET NOCOUNT ON;
9: CREATE TABLE #TBLSUMMARY ( tablename varchar(75), rowsize int );
10: DECLARE tablesize_cursor CURSOR FOR
11: SELECT name FROM sys.tables WHERE type_desc = ‘USER_TABLE’
12: OPEN tablesize_cursor
13: DECLARE @tablename sysname;
14: FETCH NEXT FROM tablesize_cursor INTO @tablename;
15: WHILE (@@FETCH_STATUS <> -1)
16: BEGIN
17: IF (@@FETCH_STATUS <> -2)
18: BEGIN
19:
20: SET @rowsize = (select sum(max_length) from sys.columns where
21: object_id in ( select object_id from sys.tables where name=@tablename ));
22:
23: INSERT INTO #TBLSUMMARY VALUES (@tablename,@rowsize);
24:
25: END;
26: FETCH NEXT FROM tablesize_cursor INTO @tablename;
27: END;
28: CLOSE tablesize_cursor;
29: DEALLOCATE tablesize_cursor;
30:
31: SELECT * FROM #TBLSUMMARY;
32: DROP TABLE #TBLSUMMARY;
Se hace un cursor sobre la colección de tablas de usuario y se suman las longitudes de cada uno de los campos.
Se va guardando todo en una tabla temporal que consultamos una vez terminado todo el proceso.
Saludos