2012-01-19 2 views
0

Как я могу перебирать все мои базы данных и получать количество строк для каждой таблицы сотрудников? У каждого клиента есть своя БД, необходимо найти всех сотрудников в каждой БД.SQL get count count count для конкретной таблицы в DB

пытался выяснить, как использовать sp_MSforeachdb

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

может выводить в отдельно таблиц или было бы хорошо в одной таблице Wiht имя БД.

+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 = '' ДБО '' является необязательным здесь в большинстве случаев. ..

+1

Благодаря блогу [joew's] (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'