sp_execute_remote(Azure SQL Database)

적용 대상:Azure SQL Database

단일 원격 Azure SQL Database 또는 수평 분할 체계에서 분할된 데이터베이스로 사용되는 데이터베이스 집합에서 Transact-SQL 문을 실행합니다.

저장 프로시저는 탄력적 쿼리 기능의 일부입니다. 분할(수평 분할)에 대한 Azure SQL Database 탄력적 데이터베이스 쿼리 개요Elastic Database 쿼리를 참조하세요.

Transact-SQL 구문 표기 규칙

구문

sp_execute_remote [ @data_source_name = ] datasourcename  
[ , @stmt = ] statement  
[   
  { , [ @params = ] N'@parameter_name data_type [,...n ]' }   
     { , [ @param1 = ] 'value1' [ ,...n ] }  
]  

인수

[ @data_source_name = ] datasourcename
문이 실행되는 외부 데이터 원본을 식별합니다. CREATE EXTERNAL DATA SOURCE(Transact-SQL)를 참조하세요. 외부 데이터 원본은 "RDBMS" 또는 "SHARD_MAP_MANAGER" 형식일 수 있습니다.

[ @stmt= ] 문을
Transact-SQL 문 또는 일괄 처리가 포함된 유니코드 문자열입니다. @stmt 유니코드 상수 또는 유니코드 변수여야 합니다. + 연산자를 사용하여 두 문자열을 연결하는 것과 같은 더 복잡한 유니코드 식은 허용되지 않습니다. 문자 상수도 사용할 수 없습니다. 유니코드 상수가 지정된 경우 N 접두사를 지정해야 합니다. 예를 들어 유니코드 상수 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 포함된 모든 매개 변수의 정의를 포함하는 하나의 문자열입니다. 문자열은 유니코드 상수 또는 유니코드 변수여야 합니다. 각 매개 변수 정의는 매개 변수 이름과 데이터 형식으로 구성됩니다. n 은 추가 매개 변수 정의를 나타내는 자리 표시자입니다. @stmtmust 지정된 모든 매개 변수는 @params 정의됩니다. @stmt Transact-SQL 문 또는 일괄 처리에 매개 변수가 포함되어 있지 않으면 @params 필요하지 않습니다. 이 매개 변수의 기본값은 NULL입니다.

[ @param1= ] 'value1'
매개 변수 문자열에 정의된 첫 번째 매개 변수의 값입니다. 값은 유니코드 상수 또는 유니코드 변수가 될 수 있습니다. @stmt 포함된 모든 매개 변수에 대해 매개 변수 값이 제공되어야 합니다. @stmt Transact-SQL 문 또는 일괄 처리에 매개 변수가 없는 경우에는 값이 필요하지 않습니다.

n
추가 매개 변수 값의 자리 표시자입니다. 값은 상수 또는 변수일 수 있습니다. 값은 함수와 같은 더 복잡한 식이나 연산자를 사용하여 작성된 식일 수 없습니다.

반환 코드 값

0(성공) 또는 0이 아닌 경우(실패)

결과 집합

첫 번째 SQL 문에서 결과 집합을 반환합니다.

사용 권한

ALTER ANY EXTERNAL DATA SOURCE 권한이 필요합니다.

설명

sp_execute_remote 매개 변수는 위의 구문 섹션에 설명된 대로 특정 순서로 입력해야 합니다. 매개 변수를 순서대로 입력하면 오류 메시지가 발생합니다.

sp_execute_remote에는 일괄 처리 및 이름 범위와 관련하여 EXECUTE(Transact-SQL)와 동일한 동작이 있습니다. sp_execute_remote @stmt 매개 변수의 Transact-SQL 문 또는 일괄 처리는 sp_execute_remote 문이 실행될 때까지 컴파일되지 않습니다.

sp_execute_remote 는 행을 생성한 원격 데이터베이스의 이름을 포함하는 '$ShardName'라는 결과 집합에 추가 열을 추가합니다.

sp_execute_remote는 sp_executesql(Transact-SQL)와 유사하게 사용할 수 있습니다.

간단한 예

다음 예제에서는 원격 데이터베이스에서 간단한 SELECT 문을 만들고 실행합니다.

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

여러 매개 변수가 있는 예제

master 데이터베이스에 대한 관리자 자격 증명을 지정하여 사용자 데이터베이스에 데이터베이스 범위 자격 증명을 만듭니다. master 데이터베이스를 가리키고 데이터베이스 범위 자격 증명을 지정하는 외부 데이터 원본을 만듭니다. 그런 다음 사용자 데이터베이스의 예제에서 master 데이터베이스에서 sp_set_firewall_rule 프로시저를 실행합니다. 프로시저에는 sp_set_firewall_rule 3개의 매개 변수가 필요하며 매개 변수가 @name 유니코드여야 합니다.

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

참고 항목:

CREATE DATABASE SCOPED CREDENTIAL
CREATE EXTERNAL DATA SOURCE(Transact-SQL)