![](/img/trans.png)
[英]SQL Server - A script to loop through all remote tables and perform "Select * into …'
[英]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.