Prise en main des requêtes de bases de données croisées (partitionnement vertical) (version préliminaire)

S’applique à : Azure SQL Database

Les requêtes de bases de données élastiques (en préversion) pour Azure SQL Database vous permettent d’exécuter des requêtes T-SQL qui s’étendent sur plusieurs bases de données via un seul point de connexion. Cet article s’applique aux bases de données partitionnées verticalement.

À l’issue du processus, vous serez capable de configurer et d’utiliser une base de données Azure SQL pour exécuter des requêtes qui s’étendent sur plusieurs bases de données associées.

Pour plus d’informations sur la fonctionnalité de requête de base de données élastique, consultez l’article Vue d’ensemble de la requête de base de données élastique Azure SQL Database.

Prérequis

L’autorisation ALTER ANY EXTERNAL DATA SOURCE est requise. Cette autorisation est incluse dans l’autorisation ALTER DATABASE. Les autorisations ALTER ANY EXTERNAL DATA SOURCE sont nécessaires pour faire référence à la source de données sous-jacente.

Créer les exemples de bases de données

Pour commencer, créez deux bases de données, Customers et Orders, sur le même serveur ou sur des serveurs différents.

Exécutez les requêtes suivantes sur la base de données Orders pour créer la table OrderInformation et ajouter les exemples de données.

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)

Exécutez maintenant la requête suivante sur la base de données Customers pour créer la table CustomerInformation et ajouter les exemples de données.

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

Créez des objets de base de données

Clé principale et informations d’identification de la base de données

  1. Ouvrez SQL Server Management Studio ou SQL Server Data Tools dans Visual Studio.

  2. Connectez-vous à la base de données Orders et exécutez les commandes T-SQL suivantes :

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

    La valeur « master_key_password » est un mot de passe fort de votre choix utilisé pour chiffrer les informations d’identification de connexion. Le « nom d’utilisateur » et le « mot de passe » doivent être le nom d’utilisateur et le mot de passe utilisés pour se connecter à la base de données Customers (créez un nouvel utilisateur dans la base de données Customers s’il n’en existe pas déjà un). L’authentification à l’aide de Microsoft Entra ID (anciennement Azure Active Directory) avec des requêtes élastiques n’est pas prise en charge actuellement.

Sources de données externes

Pour créer une source de données externe, exécutez la commande suivante sur la base de données Orders :

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

Tables externes

Créez une table externe sur la base de données Orders qui corresponde à la définition de la table CustomerInformation :

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

Exécutez un exemple de requête T-SQL de base de données élastique

Après avoir défini vos tables externes et votre source de données externe, vous pouvez utiliser T-SQL pour exécuter des requêtes sur vos tables externes. Exécutez cette requête sur la base de données Orders :

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

Coût

Actuellement, la fonctionnalité de requête de base de données élastique est incluse dans le coût de votre base de données Azure SQL.

Pour plus d’informations sur la tarification, voir Tarification SQL Database.

Étapes suivantes