Aan de slag met query's tussen databases (verticale partitionering) (preview)

Van toepassing op: Azure SQL Database

Met een elastische databasequery (preview) voor Azure SQL Database kunt u T-SQL-query's uitvoeren die meerdere databases omvatten met behulp van één verbindingspunt. Dit artikel is van toepassing op verticaal gepartitioneerde databases.

Wanneer u klaar bent, leert u hoe u een Azure SQL Database configureert en gebruikt om query's uit te voeren die meerdere gerelateerde databases omvatten.

Zie het overzicht van query's voor elastische databases in Azure SQL Database voor meer informatie over de functie voor query's voor elastische databases.

Vereisten

ALTER ANY EXTERNAL DATA SOURCE permission is required. Deze machtiging is opgenomen in de machtiging ALTER DATABASE. Machtigingen voor ALTER ANY EXTERNAL DATA SOURCE zijn nodig om te verwijzen naar de onderliggende gegevensbron.

De voorbeelddatabases maken

Als u wilt beginnen, maakt u twee databases, klanten en orders, op dezelfde of verschillende servers.

Voer de volgende query's uit op de database Orders om de tabel OrderInformation te maken en voer de voorbeeldgegevens in.

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)

Voer nu de volgende query uit op de database Klanten om de tabel CustomerInformation te maken en de voorbeeldgegevens in te voeren.

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

Databaseobjecten maken

Hoofdsleutel en referenties met databasebereik

  1. Open SQL Server Management Studio of SQL Server Data Tools in Visual Studio.

  2. Verbinding maken naar de database Orders en voer de volgende T-SQL-opdrachten uit:

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

    De 'master_key_password' is een sterk wachtwoord van uw keuze voor het versleutelen van de verbindingsreferenties. De gebruikersnaam en het wachtwoord moeten de gebruikersnaam en het wachtwoord zijn die worden gebruikt om u aan te melden bij de klantendatabase (maak een nieuwe gebruiker in de klantendatabase als deze nog niet bestaat). Verificatie met behulp van Microsoft Entra ID (voorheen Azure Active Directory) met elastische query's wordt momenteel niet ondersteund.

Externe gegevensbronnen

Als u een externe gegevensbron wilt maken, voert u de volgende opdracht uit in de database Orders:

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

Externe tabellen

Maak een externe tabel in de database Orders, die overeenkomt met de definitie van de tabel CustomerInformation:

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

Een T-SQL-voorbeeldquery voor een elastische database uitvoeren

Nadat u uw externe gegevensbron en uw externe tabellen hebt gedefinieerd, kunt u nu T-SQL gebruiken om query's uit te voeren op uw externe tabellen. Voer deze query uit op de database Orders:

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

Kosten

Op dit moment is de queryfunctie voor elastische databases opgenomen in de kosten van uw Azure SQL Database.

Zie prijzen voor SQL Database voor informatie over prijzen.

Volgende stappen