sp_MSforeachtable order por

Estoy usando sp_MSforeachtable para get un sp_MSforeachtable de sp_MSforeachtable de tablas específicas en mi database. Quiero estos orderados por nombre.

¿Cómo agrego una cláusula ORDER BY a sp_MSforeachtable ?

desde este enlace: http://sqlserver2000.databases.aspfaq.com/how-do-i-get-a-list-of-sql-server-tables-and-their-row-counts.html

Esto devolverá conteos correctos, donde los methods que usan las tablas de metadatos solo arrojarán estimaciones.

cree este procedimiento (ligeramente diferente que desde el enlace):

 CREATE PROCEDURE dbo.listTableRowCounts AS BEGIN SET NOCOUNT ON CREATE TABLE #foo ( tablename VARCHAR(255), rc INT ) INSERT #foo EXEC sp_msForEachTable 'SELECT PARSENAME(''?'', 1), COUNT(*) FROM ? WITH (NOLOCK)' SELECT tablename, rc FROM #foo ORDER BY tablename DROP TABLE #foo END GO 

Usted no 🙂

Simplemente utilice este script SQL, mucho más fácil de usar y mucho más configurable, ¡puede orderarlo como lo desee!

 SELECT t.NAME AS TableName, i.name as indexName, sum(p.rows) as RowCounts, sum(a.total_pages) as TotalPages, sum(a.used_pages) as UsedPages, sum(a.data_pages) as DataPages, (sum(a.total_pages) * 8) / 1024 as TotalSpaceMB, (sum(a.used_pages) * 8) / 1024 as UsedSpaceMB, (sum(a.data_pages) * 8) / 1024 as DataSpaceMB FROM sys.tables t INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id WHERE t.NAME NOT LIKE 'dt%' AND i.OBJECT_ID > 255 AND i.index_id <= 1 GROUP BY t.NAME, i.object_id, i.index_id, i.name ORDER BY object_name(i.object_id) 

Bagazo

Una forma es crear una tabla temporal, luego insert / ejecutar en ella. Luego haga una selección / order por en la tabla temporal.

EXEC sp_MSforeachtable @SQL, @whereand = 'ORDER BY 1'

Cualquiera de estos debería hacerlo;

EXEC sp_MSforeachtable @ command1 = "SELECT count (*) as '?' ¿DESDE? ", @whereand =" PEDIR POR 1 "

EXEC sp_MSForEachTable 'SELECT' '?' ', COUNT (*) FROM?', @whereand = 'ORDER BY 1'

Felicitaciones a Chris_R por el "@whereand = 'ORDER BY 1'" – Yo voté de nuevo pero no tengo el representante para hacerlo.

    Intereting Posts