2012-01-19 3 views
0

어떻게 모든 DB를 반복하고 각 직원 테이블에 대한 행 수를 얻을 수 있습니까? 각 클라이언트에는 자신의 DB가 있으며, 각 DB에서 전체 직원을 찾아야합니다. DB의 특정 테이블에 대한 SQL 행 가져 오기 테이블

는 별도의 테이블에 sp_MSforeachdb

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

캔 출력을 사용하거나 DB 이름 사랑의 한 테이블에 좋은 것입니다 방법을 알아 내기 위해 노력 해왔다.

+0

거의 모든 DB가 동일하고 하나만 다르면 직원 테이블이 없습니다. –

답변

1

. ..

+1

[joew의 블로그] (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

당신은 (그것을 ?에있어)이있는 데이터베이스를 먼저 사용할 말할 필요가 :

에 대한

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는 '대부분의 경우 여기에 선택 사항이며 어떻게

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