동일한 서버의 다른 데이터베이스에서 데이터를 가져 오는 저장 프로 시저가 있습니다.SQL Server 2005를 사용하여 다른 데이터베이스의 데이터를 쿼리하는 더 이상적인 방법이 있습니까?
사용할 데이터베이스를 하드 코딩하지 않고 대신 구성 할 수 있습니다. 이것은 동적 SQL없이 가능합니까?
내가 지금까지 생각해 낼 수있는 최상의 솔루션은 동적 SQL을 사용하여 일련의 뷰를 생성하는 저장 프로 시저를 먼저 실행하는 것입니다. 그런 다음이 뷰에서 데이터를 선택하여 동적 SQL을 사용하지 않아도됩니다.
예 :
DECLARE
@databaseName nvarchar(max),
@sql nvarchar(max)
-- Get this value from a configuration table
SET @databaseName = 'TestDatabase'
IF EXISTS(SELECT NULL FROM dbo.SysObjects WHERE [Name] = 'TestView')
DROP VIEW dbo.TestView
SET @sql = 'CREATE VIEW dbo.TestView AS SELECT * FROM ' + @databaseName +'.dbo.TestTable'
EXEC (@sql)
--I can now select from TestView using regular query.
내가 이것에 대해 잘못된 길을 갈거야 같은데요. 이 작업을 수행하는 더 좋은 방법이 있습니까?
왜, 작품 위의 코드는, 당신이 그것을 피하고 싶은 경우? 그것은 당신의 일이 아니지만 SSIS에 대해 들어 보셨습니까? – Tobiasopdenbrouw
Tobiasopdenbrouw, SSIS 패키지를 사용하여 테이블의 값을 기반으로 다른 데이터베이스를 사용할 수 있습니까? –