적용 대상: Azure SQL Database
단일 원격 Azure SQL 데이터베이스 또는 행 분할 구성표에서 분할의 역할을 수행하는 데이터베이스 세트에서 Transact-SQL(T-SQL) 문을 실행합니다.
저장 프로시저는 탄력적 쿼리 기능의 일부입니다. Azure SQL 데이터베이스 탄력적 쿼리 개요(프리뷰) 및 스케일 아웃 클라우드 데이터베이스에서 보고(프리뷰)를 참조하세요.
구문
sp_execute_remote
[ @data_source_name = ] data_source_name
, [ @stmt = ] stmt
[
{ , [ @params = ] N'@parameter_name data_type [ , ...n ]' }
{ , [ @param1 = ] 'value1' [ , ...n ] }
]
[ ; ]
인수
[ @data_source_name = ] data_source_name
문이 실행되는 외부 데이터 원본을 식별합니다. CREATE EXTERNAL DATA SOURCE를 참조하세요. 외부 데이터 원본은 RDBMS 또는 SHARD_MAP_MANAGER 유형일 수 있습니다.
[ @stmt = ] stmt
Transact-SQL 문 또는 일괄 처리가 포함된 UNICODE 문자열입니다. @stmt는 UNICODE 상수 또는 UNICODE 변수여야 합니다. + 연산자를 사용한 두 문자열 연결 등의 더 복잡한 유니코드 식은 허용되지 않습니다. 문자 상수는 허용되지 않습니다. UNICODE 상수가 지정된 경우 N가 접두사로 붙어야 합니다. 예를 들어 UNICODE 상수 N'sp_who'는 유효하지만 문자 상수 'sp_who'는 유효하지 않습니다.
문자열의 크기는 사용 가능한 데이터베이스 서버 메모리의 용량에 따라서만 제한됩니다. 64비트 서버에서 문자열의 크기는 nvarchar(max)의 최대 크기인 2GB로 제한됩니다.
참고 항목
@stmt는 변수 이름과 형식이 같은 매개 변수를 포함할 수 있습니다(예: N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter').
@stmt에 포함된 각 매개 변수는 @params 매개 변수 정의 목록과 매개 변수 값 목록에 해당 항목이 있어야 합니다.
[ @params = ] N'@parameter_name data_type [ ,... n ]'
@stmt에 포함된 모든 매개 변수의 정의를 포함하는 하나의 문자열입니다. 이 문자열은 UNICODE 상수 또는 UNICODE 변수여야 합니다. 각 매개 변수 정의는 매개 변수 이름과 데이터 형식으로 구성됩니다. n은 추가 매개 변수 정의를 나타내는 자리 표시자입니다. @stmt에서 지정된 모든 매개 변수는 @params에서 정의됩니다. @stmt의 Transact-SQL 문 또는 일괄 처리에 매개 변수가 없으면 @params는 필요하지 않습니다. 이 매개 변수의 기본값은 NULL입니다.
[ @param1 = ] 'value1'
매개 변수 문자열에 정의된 첫 번째 매개 변수의 값입니다. 값은 유니코드 상수 또는 유니코드 변수가 될 수 있습니다. @stmt에 포함된 모든 매개 변수에 대해 매개 변수 값이 제공되어야 합니다. @stmt의 Transact-SQL 문 또는 일괄 처리에 매개 변수가 없는 경우에는 해당 값이 필요하지 않습니다.
n
추가 매개 변수 값의 자리 표시자입니다. 값은 상수 또는 변수일 수 있습니다. 값은 함수와 같은 더 복잡한 식이나 연산자를 사용하여 작성한 식일 수 없습니다.
반환 코드 값
0(성공) 또는 0이 아닌 값(실패)입니다.
결과 집합
첫 번째 T-SQL 문에서 결과 집합을 반환합니다.
사용 권한
ALTER ANY EXTERNAL DATA SOURCE 권한이 필요합니다.
설명
sp_execute_remote 매개 변수는 구문 섹션에 기술된 대로 특정 순서로 입력해야 합니다. 매개 변수를 순서대로 입력하면 오류 메시지가 발생합니다.
sp_execute_remote는 배치 및 이름 범위와 관련하여 EXECUTE와 동일한 동작을 합니다. @stmt 매개 변수의 T-SQL 문 또는 일괄 처리는 sp_execute_remote 문이 실행될 때까지 컴파일되지 않습니다.
sp_execute_remote은(는) 행을 생성한 원격 데이터베이스의 이름이 포함된 $ShardName이라는 결과 집합에 열을 추가로 넣습니다.
sp_execute_remote는 sp_executesql과 유사한 방식으로 사용할 수 있습니다.
예제
A. 기본 예제
다음 예시에서는 원격 데이터베이스에서 기본 SELECT 문을 만들고 실행합니다.
EXECUTE sp_execute_remote N'MyExtSrc', N'SELECT COUNT(w_id) AS Count_id FROM warehouse';
B. 여러 매개 변수가 있는 예시
이 예제 명령을 실행하면 다음 작업이 수행됩니다.
master데이터베이스에 대한 관리자 자격 증명을 지정하여 사용자 데이터베이스에서 데이터베이스 범위 자격 증명을 만듭니다.master데이터베이스를 가리키고 데이터베이스 범위 자격 증명을 지정하여 외부 데이터 원본을 만듭니다.master데이터베이스에서sp_set_firewall_rule프로시저를 실행합니다.sp_set_firewall_rule프로시저에는 3개의 매개 변수가 필요하며@name매개 변수는 UNICODE여야 합니다.
EXECUTE sp_execute_remote
@data_source_name = N'PointToMaster',
@stmt = N'sp_set_firewall_rule @name, @start_ip_address, @end_ip_address',
@params = N'@name nvarchar(128), @start_ip_address varchar(50), @end_ip_address varchar(50)',
@name = N'TempFWRule',
@start_ip_address = '0.0.0.2',
@end_ip_address = '0.0.0.2';