2013-12-20 5 views
0

스크립트가 실행되는 데이터베이스에 대한 많은 스크립트 내 참조가 포함 된 여러 환경에서 실행되는 쿼리 스크립트 도구가 있습니다. 런타임에 각 인스턴스를 수동으로 편집해야하는 대신, 스크립트의 맨 위에 변수를 설정하여 데이터베이스 값을 한 번 할당 할 수 있습니다.변수를 사용하여 테이블 경로 만들기

내가 그렇게 변수 선언하는 것

:

SELECT 1 FROM @db.sys.partitions 

가 같은 것입니다 : 예를 들어,

DECLARE @db VARCHAR(25) = 'some database name' 

을 그리고 나는 테이블 경로에 대한 참조를 그 변수를 사용하고 싶습니다 가능한? 그렇다면 어떻게 구축 될 수 있습니까? 감사.

+2

는이 같은 동적 SQL 실행할 수 있습니다'간부를 (+ @db + '.sys.partitions' '에서 1을 SELECT') ' –

+0

얘들 아, 응답 주셔서 감사하지만 내 스크립트의 참조 중 일부가 다른 함수에 포함되어 있기 때문에 EXEC 및 SQLCMD를 사용하는 데 문제가있었습니다. 결국 DECLARE @db VARCHAR (25) = '일부 데이터베이스 이름'EXEC ('USE'+ @db)를 실행 한 다음 테이블 경로를 줄입니다. – Greg

답변

0

다음 동적 SQL은 당신을 위해 작동합니다 :

declare @sql_command nvarchar(max) 
declare @db varchar(25) 
select @db = 'some database name' 

select @sql_command = 'SELECT top 1 * FROM '+ @db + '.sys.partitions' 
execute sp_executesql @sql_command 
관련 문제