2009-04-16 5 views
1

죄송합니다. 내가 바보 인 것처럼 보인다! 라이브 데이터베이스와 테스트 데이터베이스를 비교하여 쿼리를 실행하면 쿼리가 제대로 작동합니다.여러 데이터베이스에 대한 Count 문 관련 문제

아래 표시된 내용에 문제가 있습니다. 하나의 데이터베이스 (DBCATALOG.dbo 제외)에 대해 실행하면 정상적으로 작동하므로 아무런 문제가 없습니다. 있는 그대로 문을 실행하려고하면 '<'근처에 잘못된 구문이 표시됩니다. 또한 모든 데이터베이스에 대한 공용체를 만드는 도구를 사용하여 시도했습니다 (두 번째 설명 참조). 이로 인해 잘못된 개체 이름 오류가 발생합니다 (잘못된 개체 이름 'TF7-User-Demo-ScheduledRestore-03.dbo.LinkedDocumentFolderTable', 잘못된 개체 이름 'TF7-TestDatabase-ScheduledRestore.dbo.LinkedDocumentFolderTable'등). 그것은 [dbo]에 묶여있는 것처럼 보이지만, 나는 그 문제의 원인을 정확히 모릅니다. 책에서 수를 여러 데이터베이스에서 수행 할 수 없다는 것을 알 수는 없습니다 ....

SELECT CNT=COUNT(*) 
FROM <DBCATALOG>.[dbo].[LinkedDocumentFolderTable] 
WHERE IsUnmanagedFolder = 1 


SELECT 'TF7-User-Demo-ScheduledRestore-03' AS DBCatalog, * FROM(SELECT COUNT(*) 
FROM [TF7-User-Demo-ScheduledRestore-03].[dbo].[LinkedDocumentFolderTable] 
WHERE IsUnmanagedFolder = 1)rsOne 

UNION ALL 

SELECT 'TF7-TestDatabase-ScheduledRestore' AS DBCatalog, * FROM(SELECT COUNT(*) 
FROM [TF7-TestDatabase-ScheduledRestore].[dbo].[LinkedDocumentFolderTable] 
WHERE IsUnmanagedFolder = 1)rsOne 

답변

1

구문이 이상하게 보입니다. 다음에 시도하십시오 :

SELECT 'TF7-User-Demo-ScheduledRestore-03' AS DBCatalog, COUNT(*) 
FROM [TF7-User-Demo-ScheduledRestore-03].[dbo].[LinkedDocumentFolderTable] 
WHERE IsUnmanagedFolder = 1 

또한 필요한 모든 권한이 설정되어 있습니까? (나는 묻지 않는 것이 좋습니다. 같은 서버에 TF7-User-Demo-ScheduledRestore-03 같은 데이터베이스가 있습니까?)

+0

여전히 오류가 발생합니다 ... 'TF7-User-Demo-ScheduledRestore-03.dbo.LinkedDocumentFolderTable'잘못된 개체 이름입니다. –

+0

예, 모든 데이터베이스는 다운타운 서버에 보관됩니다. 쿼리 분석기를 사용하여 쿼리를 실행하고 있습니다. –

+0

문제가 해결 되었습니까? 그렇지 않으면 동의를 이해할 수 없습니다. .dbo를 건너 뛰면 어떻게됩니까? DB 및 테이블 이름 만 사용 [TF7-User-Demo-ScheduledRestore-03] .. [LinkedDocumentFolderTable]? sp_databases는 데이터베이스를 전혀 표시합니까? 아마로드되지 않았거나 뭔가? – Arvo

0

나는 당신이 실제로 뭘 하려는지 전혀 모르겠지만, 그 각도 (<>) 사각형 대괄호 ([])는 질의에 가지고 유효하지 않습니다.

어떤 데이터베이스 엔진을 사용하고 있습니까?

+0

SQL 쿼리 분석기 버전 SQL 8.00.760으로 SQL 2005에서 작업하고 있습니다. . [dbo]를 사용하여 100 개의 데이터베이스에서 개수를 계산하려고합니다. 각 데이터베이스를 호출합니다. –

+0

이것은 <> 및 [] ....을 제거하면 나타나는 오류입니다. 잘못된 개체 이름 'DBCATALOG.dbo.LinkedDocumentFolderTable'. –

0

따옴표 붙은 SQL Server 식별자는 다른 곳에서 사용하는 대괄호입니다 ("["및 "]")가 아니라 "<"및 ">"이므로 내 생각에 첫 번째 오류가 발생합니다.

실제로 데이터베이스의 이름이 TF7-User-Demo-ScheduledRestore-03입니까?

또한 하위 쿼리에서 선택하는 경우 하위 이름이없는 경우 하위 쿼리의 모든 열이 별칭이 지정되어야합니다. 예를 들면 다음과 같습니다.

(SELECT COUNT(*) AS my_count) 
+0

그들 중 일부는 있습니다. 우리의 명명법은 customername-location입니다. 위의 경우, 이것은 우리 회사의 데모 데이터베이스입니다. –