繁体   English   中英

T SQL脚本循环所有用户数据库并从三个表中选择所有计数(*)

[英]T SQL Script to loop all user databases and select count of all(*) from three tables

我正在尝试在T-SQL中创建一个脚本,以循环所有用户数据库,并从三个表中选择all(*)的计数,其中计数条件> 2,如果满足该条件则应触发电子邮件。

我尝试了此操作,但我确信自己犯了一些大错误。 我是脚本新手,请帮忙。

我已经尝试通过使用:

DECLARE @TableRowCounts TABLE (
    [databaseNAme] Varchar(100), 
    [RowCount] INT
);

INSERT INTO @TableRowCounts ([databaseNAme], [RowCount])
EXEC sp_MSforeachdb 'select ''?'' as database_name,use ''?'' select count(*) TABLE_XYZ' ;

Select * From @TableRowCounts

和这个:

DECLARE @TableRowCounts TABLE (
    [databaseNAme] Varchar(100),
    [TableName] VARCHAR(128), 
    [RowCount] INT
);

INSERT INTO @TableRowCounts ([databaseNAme],[TableName], [RowCount])
EXEC sp_MSforeachdb 'select ''?'' as database_name,o.name,max(i.rowcnt )
                      From sys.objects o 
                    inner join sys.sysindexes i on o.object_id=i.id 
                    where o.type=''U'' and o.name =''tableXYZ'' 
                    group by o.name' ;

尝试这个

DECLARE @TableRowCounts TABLE
 ([databaseNAme] Varchar(100), 
 [RowCount] INT) ;

  INSERT INTO @TableRowCounts ([databaseNAme], [RowCount]) 
  EXEC sp_MSforeachdb 'use ?; select ''?'',count(*) TABLE_XYZ' ;

这样,对于每个数据库中存在的3个表

EXEC sp_MSforeachdb 'use [?]; select ''?'' as database_name, (select count(*) as cnt from Table_XYZ) + (select count(*) as cnt from Table_PQR) + (select count(*) as cnt from Table_ABC) as cnt' EXEC sp_MSforeachdb 'use [?]; select ''?'' as database_name, (select count(*) as cnt from Table_XYZ) + (select count(*) as cnt from Table_PQR) + (select count(*) as cnt from Table_ABC) as cnt' ;

如果您需要为每个表单独计数

EXEC sp_MSforeachdb 'use [?]; select ''?'' as database_name, ''Table_XYZ'' as tableName, count(*) as cnt from Table_XYZ union select ''?'' , ''Table_PQR'', count(*) from Table_PQR union select ''?'' , ''Table_ABC'' , count(*) from Table_ABC;'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM