Delen via


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. In dit artikel leert u hoe u een Azure SQL Database configureert en gebruikt om query's uit te voeren die meerdere gerelateerde databases omvatten.

Zie overzicht van elastische query's van Azure SQL Database (preview)voor meer informatie over de functie voor elastische databasequery's.

Voorwaarden

De toestemming ALTER ANY EXTERNAL DATA SOURCE is vereist. Deze machtiging is opgenomen in de machtiging ALTER DATABASE. ALTER ANY EXTERNAL DATA SOURCE machtigingen zijn nodig om naar de onderliggende gegevensbron te verwijzen.

De voorbeelddatabases maken

Maak eerst twee databases, Customers en Orders, in dezelfde of verschillende logische servers.

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

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 Customers-database om de CustomerInformation tabel 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 verificatiegegevens op databasegebied

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

  2. Maak verbinding met 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 die wordt gebruikt om de verbindingsreferenties te versleutelen.
    • De username en password moeten de gebruikersnaam en het wachtwoord zijn die worden gebruikt om u aan te melden bij de database Klanten (maak een nieuwe gebruiker in 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 op de Orders-database om verbinding te maken met de Customers-database. Geef de logische Azure SQL-server van de Customers-database op in de LOCATION.

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 Orders-database die overeenkomt met de definitie van de CustomerInformation tabel:

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

Externe vragen

Gebruik de sp_execute_remote opgeslagen procedure om een Transact-SQL instructie uit te voeren op één externe Azure SQL Database of een set databases die fungeren als shards in een horizontaal partitioneringsschema. De volgende externe T-SQL-query retourneert gegevens uit de externe OrderInformation tabel.

EXEC sp_execute_remote
    N'MyElasticDBQueryDataSrc',
    N'SELECT COUNT(CustomerID) AS customer_count FROM CustomerInformation';

Een T-SQL-voorbeeldquery voor een elastische database uitvoeren

Zodra 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 Orders-database:

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 SQL Database Prijzenvoor prijsinformatie.