Sempre quando você é acionado para atuar em algum banco de dados, é necessário fazer um levantamento como: versões instaladas; marca, modelo e capacidade de processador do servidor; memória disponível e utilizada, entre outras.
Neste artigo iremos identificar quantos registros existem em cada tabela no banco de dados e para isso utilizaremos: tabela temporária, view de sistema e cursor.
Criando tabela temporária
CREATE TABLE #TMP_CONTA_TABELA
(TABELA VARCHAR(200),
REGISTRO INT)
Inserindo dados na tabela temporária
DECLARE @COMANDO VARCHAR(500)
DECLARE C_CountTable CURSOR FAST_FORWARD FOR
SELECT distinct
'SELECT TABELA = ''' + SU.NAME + '.' + SO.NAME + '''
, REGISTRO = COUNT(*) FROM ' + SU.NAME + '.' + SO.NAME
FROM SYSOBJECTS SO INNER JOIN SYSUSERS SU
ON SO.UID = SU.UID
AND SO.XTYPE = 'U'
AND SO.NAME <> 'dtproperties'
OPEN C_CountTable
FETCH NEXT FROM C_CountTable
INTO @COMANDO
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE ('INSERT INTO #TMP_CONTA_TABELA '+ @COMANDO)
FETCH NEXT FROM C_CountTable
INTO @COMANDO
END
CLOSE C_CountTable
DEALLOCATE C_CountTable
Identificando quantos registros tem em cada tabela
SELECT * from #TMP_CONTA_TABELA ORDER BY 2 DESC
Resultado
TABELAREGISTRO
--------------------------- -----------
TB_AUDITORIA 267804
TB_ITEN_NOTA_FISCAL 239678
TB_NOTA_FISCAL 233318
TB_COBRANCA 191938
TB_CAD_CLIENTE 118919
TB_CAD_PRODUTO 86995
TB_CAD_FORNECEDOR 68506
TB_CAD_USUARIO 2345
(8 row(s) affected)
Conclusão
Existem outras maneiras de você fazer esse levantamento sem utilizar o comando select count(*) porém as informações não serão tão precisas, pois utilizam-se de estatísticas que muitas vezes podem estar desatualizada. Neste artigo estamos contando os registros que estão neste exato momento nas páginas de dados, ou seja, valores reais e atuais.