2016-10-13 3 views
0

많은 데이터베이스가 동일하며 동일한 테이블에 특정 항목이있는 모든 데이터베이스를 찾고 싶습니다. 동시에 모든 데이터베이스에서 특정 테이블의 특정 열 찾기

내가 필요로하는 정보를 얻기 위해 각 데이타베이스 등에 전년도 실행해야 할 것입니다 : 내가 지원되지 않는 sp_MSforeachdb를 사용하여 모든 databses에 대한 내 쿼리를 실행할 수 있다고 생각

select OrderID, OrderRef 
from Orders 
where OrderID = '12345' 

을,하지만 난 필사적 아니에요 이 특별한 방법을 사용하십시오.

Column name or number of supplied values does not match table definition.

또한,이 결과에서 온 어떤 데이터베이스가 표시되지 않습니다

CREATE TABLE ##tmpTable(OrderID VARCHAR(MAX), OrderRef VARCHAR(MAX)); 

DECLARE @command varchar(1000) 

SELECT 
    @command = 'Use ? INSERT INTO ##tmpTable SELECT ''[?]'', OrderID, OrderRef FROM Orders WHERE OrderID = ''12345'';' 
EXEC sp_MSforeachdb @command 

SELECT * FROM ##tmpTable; 
GO 

DROP TABLE ##tmpTable; 

그것이 내가 다음과 같은 오류를 얻고있다 나는 그것을 실행

. 내가 좀하고 싶습니다 것은 이것이다 : 내 쿼리를 수정 할 수 있었다 당신의 의견에

DatabaseName | OrderID | OrderRef 
+0

당신이 나던 일을 무엇을 의미? 왜냐하면 작업하지만 이름 확인이 필요하기 때문입니다. http://stackoverflow.com/questions/3808338/need-to-capture-database-name-when-error-occurs-with-sp-msforeachdb –

+0

제게 그것은 예상대로 작동했습니다. –

+0

어떤 부분이 작동하지 않는지 설명하기 위해 제 질문을 업데이트했습니다. – QWE

답변

0

감사 지금은 작동합니다

CREATE TABLE ##tmpTable(DB_Name VARCHAR(MAX), OrderID VARCHAR(MAX), OrderRef VARCHAR(MAX)); 

DECLARE @command varchar(1000) 
SELECT @command = 'Use ? INSERT INTO ##tmpTable select ''?'', OrderID, OrderRef from Orders WHERE OrderID = ''12345'' 
;' 
EXEC sp_MSforeachdb @command 

SELECT * FROM ##tmpTable; 
GO 
DROP TABLE ##tmpTable; 
관련 문제