데이터베이스 간 쿼리 시작(수직 분할)(미리 보기)

적용 대상:Azure SQL Database

Azure SQL Database에 대해 탄력적 데이터베이스 쿼리(미리 보기)를 사용하면 단일 연결점을 사용하여 여러 데이터베이스에 걸쳐 있는 T-SQL 쿼리를 실행할 수 있습니다. 이 문서는 수직 분할된 데이터베이스에 적용됩니다.

완료되면 여러 관계형 데이터베이스에 걸쳐 있는 쿼리를 수행 하는 Azure SQL Database를 사용과 구성방법을 알아봅니다.

탄력적 데이터베이스 쿼리 기능에 대한 자세한 내용은 Azure SQL Database 탄력적 데이터베이스 쿼리 개요를 참조하세요.

필수 조건

ALTER ANY EXTERNAL DATA SOURCE 권한이 필요합니다. 이 사용 권한은 ALTER DATABASE 권한에 포함됩니다. 기본 데이터 원본을 참조하기 위해 ALTER ANY EXTERNAL DATA SOURCE 권한이 필요합니다.

샘플 데이터베이스 만들기

먼저 동일한 서버 또는 다른 서버에 두 개의 데이터베이스, 고객주문을 만듭니다.

주문 데이터베이스에서 다음 쿼리를 실행하여 주문 정보 테이블을 만들고 샘플 데이터를 입력합니다.

CREATE TABLE [dbo].[OrderInformation](
    [OrderID] [int] NOT NULL,
    [CustomerID] [int] NOT NULL
    )
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (123, 1)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (149, 2)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (857, 2)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (321, 1)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (564, 8)

이제 Customers 데이터베이스에서 다음 쿼리를 실행하여 CustomerInformation 테이블을 만들고 샘플 데이터를 입력합니다.

CREATE TABLE [dbo].[CustomerInformation](
    [CustomerID] [int] NOT NULL,
    [CustomerName] [varchar](50) NULL,
    [Company] [varchar](50) NULL
    CONSTRAINT [CustID] PRIMARY KEY CLUSTERED ([CustomerID] ASC)
)
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (1, 'Jack', 'ABC')
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (2, 'Steve', 'XYZ')
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (3, 'Lylla', 'MNO')

데이터베이스 개체 만들기

데이터베이스 범위 마스터 키 및 자격 증명

  1. SQL Server Management Studio 또는 Visual Studio의 SQL Server Data Tools를 엽니다.

  2. Orders 데이터베이스에 연결하고 다음 T-SQL 명령을 실행합니다.

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>';
    CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
    WITH IDENTITY = '<username>',
    SECRET = '<password>';  
    

    "master_key_password"는 연결 자격 증명을 암호화하기 위해 선택하는 강력한 암호입니다. "사용자 이름" 및 "암호"는 고객 데이터베이스에 로그인하는 데 사용되는 사용자 이름과 암호여야 합니다(고객 데이터베이스가 아직 없는 경우 새 사용자 만들기). 탄력적 쿼리를 통해 Microsoft Entra ID(구 Azure Active Directory)를 사용한 인증은 현재 지원하지 않습니다.

외부 데이터 원본

외부 데이터 원본을 만들려면 Orders 데이터베이스에서 다음 명령을 실행합니다.

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH
    (TYPE = RDBMS,
    LOCATION = '<server_name>.database.windows.net',
    DATABASE_NAME = 'Customers',
    CREDENTIAL = ElasticDBQueryCred
) ;

외부 테이블

CustomerInformation 테이블의 정의와 일치하는 Orders 데이터베이스에 외부 테이블을 만듭니다.

CREATE EXTERNAL TABLE [dbo].[CustomerInformation]
( [CustomerID] [int] NOT NULL,
    [CustomerName] [varchar](50) NOT NULL,
    [Company] [varchar](50) NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc)

탄력적 데이터베이스 T-SQL쿼리 샘플 실행

외부 데이터 원본 및 외부 테이블을 정의한 후 외부 테이블을 쿼리하기 위해 이제 T-SQL을 사용할 수 있습니다. Orders 데이터베이스에서 다음 쿼리를 실행합니다.

SELECT OrderInformation.CustomerID, OrderInformation.OrderId, CustomerInformation.CustomerName, CustomerInformation.Company
FROM OrderInformation
INNER JOIN CustomerInformation
ON CustomerInformation.CustomerID = OrderInformation.CustomerID

비용

현재 탄력적 데이터베이스 쿼리 기능은 Azure SQL Database의 비용에 포함되어 있습니다.

가격 책정 정보는 SQL Database 가격 책정을 참조하세요.

다음 단계