クロスデータベース クエリの概要 (列方向のパーティション分割) (プレビュー)Get started with cross-database queries (vertical partitioning) (preview)

Azure SQL Database 用の エラスティック データベース クエリ (プレビュー) を使用すると、1 つの接続ポイントで複数のデータベースにまたがる T-SQL クエリを実行することができます。Elastic database query (preview) for Azure SQL Database allows you to run T-SQL queries that span multiple databases using a single connection point. このトピックは 垂直にパーティション分割されたデータベースに適用されます。This topic applies to vertically partitioned databases.

終了すると、複数の関連するデータベースにまたがるクエリを実行するために Azure SQL Database を構成および使用する方法を習得できます。When completed, you will: learn how to configure and use an Azure SQL Database to perform queries that span multiple related databases.

Elastic Database クエリ機能の詳細については、「Azure SQL Database Elastic Database クエリの概要」をご覧ください。For more information about the elastic database query feature, please see Azure SQL Database elastic database query overview.

前提条件Prerequisites

ユーザーは、ALTER ANY EXTERNAL DATA SOURCE アクセス許可を所有している必要があります。You must possess ALTER ANY EXTERNAL DATA SOURCE permission. このアクセス許可は、ALTER DATABASE アクセス許可に含まれています。This permission is included with the ALTER DATABASE permission. ALTER ANY EXTERNAL DATA SOURCE アクセス許可は、基になるデータ ソースを参照するために必要です。ALTER ANY EXTERNAL DATA SOURCE permissions are needed to refer to the underlying data source.

サンプル データベースの作成Create the sample databases

最初に、同じ論理サーバーか異なる論理サーバーで「Customers」と「Orders」という 2 つのデータベースを作成する必要があります。To start with, we need to create two databases, Customers and Orders, either in the same or different logical servers.

Orders」データベースで次のクエリを実行し、「OrderInformation」テーブルを作成し、サンプル データを入力します。Execute the following queries on the Orders database to create the OrderInformation table and input the sample data.

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 テーブルを作成し、サンプル データを入力します。Now, execute following query on the Customers database to create the CustomerInformation table and input the sample data.

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

データベース オブジェクトを作成するCreate database objects

データベース スコープのマスター キーと資格情報Database scoped master key and credentials

  1. SQL Server Management Studio または Visual Studio の SQL Server Data Tools を開きます。Open SQL Server Management Studio or SQL Server Data Tools in Visual Studio.
  2. Orders データベースに接続し、次の T-SQL コマンドを実行します。Connect to the Orders database and execute the following T-SQL commands:

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

    「username」と「password」は Customers データベースのログインに使用するユーザー名とパスワードになります。The "username" and "password" should be the username and password used to login into the Customers database. Azure Active Directory とエラスティック クエリを使用した認証は、現時点ではサポートされていません。Authentication using Azure Active Directory with elastic queries is not currently supported.

外部データ ソースExternal data sources

外部データ ソースを作成するには、Orders データベースで、次のコマンドを実行します。To create an external data source, execute the following command on the Orders database:

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

外部テーブルExternal tables

CustomerInformation テーブルの定義に一致する外部テーブルを Orders データベースで作成します。Create an external table on the Orders database, which matches the definition of the CustomerInformation table:

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 クエリを実行するExecute a sample elastic database T-SQL query

外部データ ソースと外部テーブルを定義すると、T-SQL を使用して外部テーブルにクエリを実行できるようになります。Once you have defined your external data source and your external tables you can now use T-SQL to query your external tables. Orders データベースでこのクエリを実行します。Execute this query on the Orders database:

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

コストCost

現在のところ、エラスティック データベース クエリ機能は Azure SQL Database のコストに含まれています。Currently, the elastic database query feature is included into the cost of your Azure SQL Database.

料金情報については、「 SQL Database の価格」を参照してください。For pricing information see SQL Database Pricing.

次のステップNext steps