Digamos que tenho esta consulta:
DECLARE @QueryString NVARCHAR(MAX) ;
SELECT @QueryString = COALESCE(@QueryString + ' UNION ALL ','')
+ 'SELECT '
+ '''' + QUOTENAME(SCHEMA_NAME(sOBJ.schema_id))
+ '.' + QUOTENAME(sOBJ.name) + '''' + ' AS [TableName]
, COUNT(*) AS [RowCount] FROM '
+ QUOTENAME(SCHEMA_NAME(sOBJ.schema_id))
+ '.' + QUOTENAME(sOBJ.name) + ' WITH (NOLOCK) '
FROM sys.objects AS sOBJ
WHERE
sOBJ.type = 'U'
AND sOBJ.is_ms_shipped = 0x0
ORDER BY SCHEMA_NAME(sOBJ.schema_id), sOBJ.name ;
EXEC sp_executesql @QueryString
GO
que extraem todas as tabelas de um banco de dados e o número de registros em cada tabela.
A pergunta é bem fácil, mas não consigo descobrir como fazer :) Como posso fazer o pedido por TableName? Ou RowCount?
Colocá-lo em ordem por cláusula me dá um erro (ou seja, sintaxe incorreta perto de 'SCHEMA_NAME'. ).
Obrigado por qualquer dica sofisticada.