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
Open SQL Server Management Studio of SQL Server Data Tools in Visual Studio.
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
enpassword
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.
- De
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.