分享:sp_get_table_max 获取实例下表行数最大的表

USE master 
go 
IF object_id('sp_get_table_max','P') IS NOT NULL 
DROP PROCEDURE sp_get_table_max 
  
go 
CREATE PROCEDURE sp_get_table_max ( @db NVARCHAR(128) = '' ,@tb NVARCHAR(128) = '',@top INT = 100 )  
AS 

SET NOCOUNT ON ; 
 
CREATE TABLE #TableSpace   
  ( DB_NAME VARCHAR(128) DEFAULT ( db_name()), 
   TableName VARCHAR(128) , 
   SCHEMA_NAME VARCHAR(128), 
   RowsCount CHAR(32) ) 

DECLARE @sql NVARCHAR(max) 
SET @sql = '' 
SELECT @sql = @sql + REPLACE ( 
' 
USE [@dbname] 
INSERT INTO #TableSpace ( TableName , SCHEMA_NAME, RowsCount )  
SELECT b.name AS tablename ,SCHEMA_NAME(b.schema_id) SCHEMA_NAME, c.row_count AS datacount 
FROM  sys.indexes a , 
    sys.objects b , 
    sys.dm_db_partition_stats c 
WHERE  a.[object_id] = b.[object_id] 
    and b.type = ''U'' and b.name like '''+ @tb + '%''
    AND b.[object_id] = c.[object_id] 
    AND a.index_id = c.index_id 
    AND a.index_id < 2 
    AND b.is_ms_shipped = 0 
' ,'@dbname',name)  
FROM sys.databases 
WHERE name LIKE @db + '%' AND database_id >= 5 
PRINT @sql 
EXEC (@sql) 

SELECT TOP (@top) ' SELECT TOP 10 * FROM ['+ DB_NAME +'].['+ SCHEMA_NAME +'].['+TableName+ ']' AS SQL ,* 
FROM #TableSpace ORDER BY CAST(RowsCount AS BIGINT) DESC 
DROP TABLE [#TableSpace] 


go 
EXEC sp_MS_marksystemobject 'sp_get_table_max' 
go 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值