다음을 통해 공유


sp_execute_remote (Azure SQL 데이터베이스)

적용 대상: Azure SQL Database

단일 원격 Azure SQL 데이터베이스 또는 행 분할 구성표에서 분할의 역할을 수행하는 데이터베이스 세트에서 Transact-SQL(T-SQL) 문을 실행합니다.

저장 프로시저는 탄력적 쿼리 기능의 일부입니다. Azure SQL 데이터베이스 탄력적 쿼리 개요(프리뷰)스케일 아웃 클라우드 데이터베이스에서 보고(프리뷰)를 참조하세요.

Transact-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_remotesp_executesql과 유사한 방식으로 사용할 수 있습니다.

예제

A. 기본 예제

다음 예시에서는 원격 데이터베이스에서 기본 SELECT 문을 만들고 실행합니다.

EXEC sp_execute_remote
    N'MyExtSrc',
    N'SELECT COUNT(w_id) AS Count_id FROM warehouse';

B. 여러 매개 변수가 있는 예시

이 예제 명령을 실행하면 다음 작업이 수행됩니다.

  1. master 데이터베이스에 대한 관리자 자격 증명을 지정하여 사용자 데이터베이스에서 데이터베이스 범위 자격 증명을 만듭니다.

  2. master 데이터베이스를 가리키고 데이터베이스 범위 자격 증명을 지정하여 외부 데이터 원본을 만듭니다.

  3. master 데이터베이스에서 sp_set_firewall_rule 프로시저를 실행합니다. sp_set_firewall_rule 프로시저에는 3개의 매개 변수가 필요하며 @name 매개 변수는 UNICODE여야 합니다.

EXEC 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';