2014-06-18 3 views
0

서버의 모든 데이터베이스를 차례로 순환하여 저장 프로 시저를 실행하여 쿼리를 저장하려고하는 쿼리를 만들려고합니다. 결과 테이블. 모든 데이터베이스에서 저장 프로 시저 실행 및 모든 결과를 테이블에 저장

내가 지금까지 무엇을 가지고 :

CREATE table results (Severity INT, PurchaseOrderNumber INT, 
         PurchaseOrderLineNumber SMALLINT, ShipmentNumber SMALLINT, 
         ErrorCode int, ErrorText VARCHAR(256), DateCreated datetime) 

EXECUTE sp_msForEachDB ' 
    IF "?" LIKE "VIS%" 
     BEGIN 
      USE "?" 
      INSERT INTO results EXECUTE IC_PURCHASEORDER 
     END 
    ' 
SELECT * FROM results 

DROP TABLE results 

내가이 코드는 서버에서 모든 데이터베이스를 통해 저장 프로 시저를 IC_PURCHASEORDER를 실행하는 것입니다에서 수행하고 결과를 기록 할 수 바라고 있어요 생성 된 결과 테이블에 추가합니다. 그 후, 나는 그 결과를 감독관에게 이메일로 보내고 테이블을 떨어 뜨릴 수있을 것이다. 그러나 그것은 다른 날을위한 일이다. 나는 구문 오류는 다음과 같은 오류

Msg 102, Level 15, State 1, Line 4 
Incorrect syntax near '{insert database name here}'. 

결과는 내가 달성하기 위해 노력하고있어 몇 가지 통찰력을 얻을 수있을 것이라고, IF 문에 존재 알아? 감사! 다음과 같이

+0

않습니다

CREATE table results (Severity INT, PurchaseOrderNumber INT, PurchaseOrderLineNumber SMALLINT, ShipmentNumber SMALLINT, ErrorCode int, ErrorText VARCHAR(256), DateCreated datetime) exec sp_msForEachDB 'use [?]; if ''?'' like ''vis%'' begin if object_id(''IC_PURCHASEORDER'') is not null begin INSERT INTO results EXECUTE IC_PURCHASEORDER end else begin print ''missing proc in ?'' end end' SELECT * FROM results DROP TABLE results 

간단한 테스트를 ...이 실행, 그것은처럼 당신에게 '% %를'모든 DB의의를 말할 것이다 귀하의 SP는 모든 DB에 존재합니까? – JiggsJedi

+0

나는 그렇다고 믿는다. 나중에이를 확인하기위한 수표를 추가 할 수는 있지만 지금 당장은 내가 테스트하는 모든 데이터베이스에 SP가 포함되어 있다고 가정합니다. – user3753769

+0

아래의 답변은 실행을 시도하기 전에 존재하는 proc를 확인합니다. 그렇지 않으면 proc가 없습니다. – JiggsJedi

답변

0

업데이트 코드, 트릭 수행해야합니다

exec sp_msForEachDB 'use [?]; 
        if ''?'' like ''%a%'' 
        begin 
         select ''? is like a'' 
        end 
        else 
        begin 
         select ''? is not like a'' 
        end' 
+0

나는')'이 빠졌습니다 - 또한 proc가 존재하는 줄을 고쳤습니다 - 나는 그것을 업데이트했습니다. 다시 시도해주세요 .. 그렇지 않으면 오류 코드를 게시하십시오. – JiggsJedi

+0

데이터를 결과 테이블에 삽입하기 전까지는 문제가 발생하는 것으로 보입니다. 내가 얻는 오류는 다음과 같습니다. '메시지 ​​208, 수준 16, 상태 1, 줄 6 잘못된 개체 이름 'results'. ' SP의 결과를 저장하는이 방법이 분명히 방법이 아니라고 생각합니다. 가다. 그러나 데이터베이스에 저장 프로 시저가 있는지 확인하는 것은 매력처럼 작동합니다. – user3753769

+0

삽입 할 데이터베이스 포인터를 추가하십시오. 'insert into report.dbo.results ...' – JiggsJedi

관련 문제