Estoy seguro de que puede conseguir algo mejor que esto, pero esto se debe hacer en caso de apuro. Para el registro, sp_spaceused
es su amigo en consultas como esta!
DECLARE @tbls table (TableID int identity, TableName varchar(max))
INSERT INTO @tbls
SELECT t1.name
FROM sysobjects t1
INNER JOIN sysindexes t2
ON t1.id = t2.id
WHERE t2.indid <= 1
AND t2.rows > 0
AND OBJECTPROPERTY(t1.id,'IsUserTable') = 1
DECLARE @tblcount int
SELECT @tblcount=COUNT(1)
FROM @tbls
DECLARE @results table (name varchar(max), [rows] bigint, reserved varchar(max), data varchar(max), index_size varchar(max), unused varchar(max))
DECLARE @counter int
SET @counter = 0
DECLARE @tblname varchar(max)
while @counter < @tblcount
begin
SELECT @tblname=TableName FROM @tbls WHERE [email protected]+1
INSERT INTO @results
exec sp_spaceused @tblname
SET @counter = @counter+1
end
SELECT * FROM @results
Cite la fuente, Paul: http://sqlserver2000.databases.aspfaq.com/how-do-i-get-a-list-of-sql-server-tables-and-their-row- counts.html – Matt
@Matt: Me atrapaste a mitad de edición. Siempre hago. –
esto es solo una estimación, no es 100% exacto, y utiliza una sintaxis de unión antigua horrible (asqueroso). –