2012-01-19 17 views
0

如何遍歷我的所有數據庫並獲取每個員工表的行數? 每個客戶都有自己的數據庫,需要找到每個數據庫中的總員工。SQL獲取DB中特定表的錶行數

一直試圖弄清楚如何使用sp_MSforeachdb

sp_MSforeachdb 
@command1 = 'select count(*) from employee' 

可輸出在單獨的表或將是很好的一個表中的室內用DB名稱。

+0

幾乎所有的數據庫都是一樣的,只有一個是不同的沒有員工表。 –

回答

1

DECLARE @sql nvarchar(1000) 
    SET @sql = 'Use [?];' 
     + 'IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ''dbo'' AND TABLE_NAME = ''employee''))' 
     + ' BEGIN' 
     + ' SELECT COUNT(*) from [employee]' 
     + ' END' 
    exec sp_MSforeachDB @sql 

TABLE_SCHEMA = '' DBO '' 如何在大多數情況下是可選在這裏。 ..

+1

感謝[joew's blog](http://weblogs.sqlteam.com/joew/archive/2008/08/27/60700.aspx)提供了「use [?];」的語法並且[akmad在另一個堆棧溢出問題](http://stackoverflow.com/questions/167576/sql-server-check-if-table-exists)檢查表是否存在。 – perfectionist

+0

非常感謝。我還加入了我的''?''以供選擇。 SELECT''?'',COUNT(*)來獲取表名。那些是單引號。 –

1

你需要告訴它第一次使用的數據庫(它在?):

EXEC sp_MSforeachdb 
@command1='use ?; select count(*) from employee'