viernes, 17 de noviembre de 2017

Stored Procedure SQL SERVER numero de registros por tabla y tamaño

En el siguiente sp se obtienen todas las tablas de la base de datos y datos como el numero de registos y peso de cada tabla.


create PROCEDURE [dbo].[GetAllTableSizes]
AS
/*
    Obtains spaced used data for ALL user tables in the database
*/
DECLARE @TableName VARCHAR(100)    --For storing values in the cursor

--Cursor to get the name of all user tables from the sysobjects listing
DECLARE tableCursor CURSOR
FOR
 select schemas.name+'.'+tables.name as name from sys.tables
inner join sys.schemas  on tables.schema_id =schemas.schema_id
FOR READ ONLY




--A procedure level temp table to store the results
CREATE TABLE #TempTable
(
    tableName varchar(100),
    numberofRows varchar(100),
    reservedSize varchar(50),
    dataSize varchar(50),
    indexSize varchar(50),
    unusedSize varchar(50)
)

--Open the cursor
OPEN tableCursor

--Get the first table name from the cursor
FETCH NEXT FROM tableCursor INTO @TableName

--Loop until the cursor was not able to fetch
WHILE (@@Fetch_Status >= 0)
BEGIN
    --Dump the results of the sp_spaceused query to the temp table
    INSERT  #TempTable
        EXEC sp_spaceused @TableName

    --Get the next table name
    FETCH NEXT FROM tableCursor INTO @TableName
END

--Get rid of the cursor
CLOSE tableCursor
DEALLOCATE tableCursor

--Select all records so we can use the reults
SELECT *
FROM #TempTable order by 2

--Final cleanup!

DROP TABLE #TempTable

No hay comentarios:

Publicar un comentario

Comenta cualquier duda o recomendatorio.