연결된 서버 쿼리에 변수 전달
이 문서에서는 연결된 서버 쿼리에 변수를 전달하는 방법을 설명합니다.
원래 제품 버전: 온라인 SQL Server 설명서
원본 KB 번호: 314520
요약
연결된 서버를 쿼리할 때 , OPENROWSET
또는 OPENDATASOURCE
문을 사용하는 통과 쿼리를 OPENQUERY
자주 수행합니다. SQL Server 온라인 설명서의 예제를 확인하여 미리 정의된 Transact-SQL 문자열을 사용하여 이 작업을 수행하는 방법을 확인할 수 있지만 이러한 함수에 변수를 전달하는 방법에 대한 예제는 없습니다. 이 문서에서는 연결된 서버 쿼리에 변수를 전달하는 방법에 대한 세 가지 예제를 제공합니다.
통과 함수 중 하나에 변수를 전달하려면 동적 쿼리를 빌드해야 합니다.
따옴표를 포함하는 모든 데이터에는 특정 처리가 필요합니다.
기본 값 전달
기본 Transact-SQL 문을 알고 있지만 하나 이상의 특정 값을 전달해야 하는 경우 다음 샘플과 유사한 코드를 사용합니다.
DECLARE @TSQL varchar(8000), @VAR char(2)
SELECT @VAR = 'CA'
SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')'
EXEC (@TSQL)
전체 쿼리 전달
전체 Transact-SQL 쿼리 또는 연결된 서버의 이름(또는 둘 다)을 전달해야 하는 경우 다음 샘플과 유사한 코드를 사용합니다.
DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000)
SET @LinkedServer = 'MyLinkedServer'
SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ','''
SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')'
EXEC (@OPENQUERY+@TSQL)
Sp_executesql 저장 프로시저 사용
다중 계층 따옴표를 방지하려면 다음 샘플과 유사한 코드를 사용합니다.
DECLARE @VAR char(2)
SELECT @VAR = 'CA'
EXEC MyLinkedServer.master.dbo.sp_executesql
N'SELECT * FROM pubs.dbo.authors WHERE state = @state',
N'@state char(2)',
@VAR
참고 항목
자세한 내용은 아래 항목을 참조하세요.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기