SQL Server - Funcion en sql que me permita contar los registros de todas las tablas de una base de datos

 
Vista:

Funcion en sql que me permita contar los registros de todas las tablas de una base de datos

Publicado por Ruben Sanchez (3 intervenciones) el 26/08/2018 20:17:18
Hola la idea que tengo es crear un procedimiento almacenado que me permita conocer el tamaño en registros de mi base de datos.
Mi idea es comparar estos numeros entre dos bases de datos para saber si estan iguales.
Ya hice la consulta pero no se como pasarle un parametro a una consulta ejecutada con exec. desde un procedimiento almacenado.

Esta es la consulta que tengo hasta ahora que solo me arroja la informacion por tablas separadas yo quiero que los numero se acumulen en un contador y a final del proceso mostrarlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
ALTER PROCEDURE dbo.ContarRegistrosTablas
 
AS
 
DECLARE @table_schema nvarchar(100)=''
DECLARE @table_name nvarchar(100)
DECLARE @query nvarchar(500)
 
DECLARE @c int = 0
 
DECLARE RSCHEMA CURSOR FOR
select TABLE_SCHEMA,TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_SCHEMA,TABLE_NAME
 
OPEN RSCHEMA
 
FETCH NEXT FROM RSCHEMA INTO @table_schema,@table_name
WHILE @@fetch_status = 0
BEGIN
 select @query = 'SELECT COUNT(*) FROM '+@table_schema+'.'+@table_name
 exec(@query)
 --print @query
 FETCH NEXT FROM RSCHEMA INTO @table_schema,@table_name
END
 
CLOSE RSCHEMA
DEALLOCATE RSCHEMA
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Funcion en sql que me permita contar los registros de todas las tablas de una base de datos

Publicado por Isaias (4558 intervenciones) el 28/08/2018 20:03:21
Si lo que desea obtener es el NUMERO DE REGISTROS por cada tabla, de TODAS sus bases de datos, es mucho mas simple
1
2
3
4
5
-- Numero de registros por tabla, todas las bases
EXECUTE master.sys.sp_MSforeachdb 'USE [?];
IF      ''?''     NOT IN (''master'',''model'',''msdb'', ''tempdb'')
BEGIN
SELECT db_name(), object_name(id),rowcnt FROM sys.sysindexes WHERE indid = 1 AND rowcnt > 0 ORDER BY 3 DESC END'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Funcion en sql que me permita contar los registros de todas las tablas de una base de datos

Publicado por RUBEN SANCHEZ (3 intervenciones) el 08/09/2018 02:14:27
Hola amigo muchas gracias por tomarte un tiempo para responder.
Gracias a tu idea logre dar con lo que queria, que era saber el numero total de registros que tenían todos los objetos de la base de datos.

Esto es lo que quería acumular en una variable la sumatoria de todos los registros de cada tabla lo logre en tres lineas.
Aquí lo coloco para el que lo necesite.


declare @contador int = 0 -- declaro la variable a utilizar como acumulador
SELECT @contador = @contador + rowcnt FROM sys.sysindexes WHERE rowcnt > 0 -- recorro toda la base de datos abierta y leo el total
-- de sus registros y los acumulo en la variable-
print @contador -- imprimo el resultado eso era todo lo que estaba necesitando.


Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar