현재 상황.
SELECT column1 FROM tableName
이렇게 하나테이블의 특정컬럼을 셀렉트하면
column
data1
data2
data3
...
이런식으로 나오는데요.
저 하나하나의 데이터값들이 DB명들입니다.
그래서 저 각각의 DB에 접근을해서 특정 테이블을 셀렉트를해서 가져와야하는데요.
DECLARE @db_name varchar(10)
set @db_name = 'test
SELECT RegisterDate
,CompanyId
,CompanyName
,(CASE WHEN MemberStatus = 'TEM' THEN '데모'
WHEN MemberStatus = 'PRO' THEN '신청'
WHEN MemberStatus = 'T' THEN '회원'
END) AS MemberStatus
,(SELECT COUNT(*) FROM test.dbo.sysuser) AS UserCount
,(SELECT CAST( ((SUM(Size)* 8) / 1024.0) AS DECIMAL(18,1))
FROM sys.master_files
WHERE name LIKE (SELECT CompanyId FROM BASIC.[dbo].SYSMEMBER WHERE CompanyId = T1.CompanyId)+'%') AS db_size
,CASE WHEN T1.CompanyId = @db_name
THEN (SELECT CONVERT(float, str(sum(reserved) * 8.192 / 1024. , 15 , 4)) AS table_size
FROM test.dbo.sysobjects o
INNER JOIN test.dbo.sysindexes i ON (i.id = o.id)
WHERE i.indid IN(0,1,255) AND o.xtype = 'U'
AND o.name ='JOURNALENTRY'
GROUP BY i.id)
END AS 'JOURNALENTRY_SIZE'
,CASE WHEN T1.CompanyId = @db_name
THEN (SELECT CONVERT(float, str(sum(reserved) * 8.192 / 1024. , 15 , 4)) AS table_size
FROM test.dbo.sysobjects o
INNER JOIN test.dbo.sysindexes i ON (i.id = o.id)
WHERE i.indid IN(0,1,255) AND o.xtype = 'U'
AND o.name ='BUDGETEXPENSEDETAIL'
GROUP BY i.id)
END AS 'BUDGETEXPENSEDETAIL_SIZE'
FROM BASIC.dbo.SYSMEMBER T1
WHERE T1.CompanyId = @db_name
이런 쿼리인데요.
쿼리를 실행하는건 BASIC이란 DB에서 실행을 하고있구요.
test.dbo.sysobjects o 이구문에서 test를 @db_name으로 해야하는데, 저렇게하면 안된다고 나오더라구요.
그래서 USE @db_name을 써도 이것도 안된다고하는데요ㅜㅜ
셀렉트한 db명들을 가지고 변수에 담아서 하나하나 해당 DB에 접근해서 저 쿼리를 작동시키는 방법이 있을까요?ㅠㅠ
제발 도와주세요ㅠㅠ....
감사합니다.
Comment 3
-
이리
2015.07.24 10:09
-
철스
2015.07.24 10:13
동적쿼리를 사용해보세요.
DECLARE @DB_NAME VARCHAR(10);SET @DB_NAME = 'TEST';
EXEC('SELECT * FROM '+@DB_NAME+'.DBO.SYSOBJECTS') -
ngbrother
2015.07.24 11:55
감사합니다.
궁굼한게 있는데 하나 더 질문드려도될까요?
SELECT CONVERT(float, str(sum(reserved) * 8.192 / 1024. , 15 , 4)) AS table_size
FROM gildong.dbo.sysobjects o
INNER JOIN gildong.dbo.sysindexes i ON (i.id = o.id)
WHERE i.indid IN(0,1,255) AND o.xtype = 'U'
AND o.name ='JOURNALENTRY'
GROUP BY i.id
여기에서 gildong.dbo.sysobjects o 이부분을 '+db_name+'.dbo.sysobjects 이런식으로 하라는 말씀이신가요??
동적쿼리로 만들어서 실행해 보세요