Erste Schritte mit datenbankübergreifenden Abfragen (vertikale Partitionierung, Vorschau)
Gilt für::Azure SQL-Datenbank
Mit Abfragen für elastische Datenbanken (Vorschau) für Azure SQL-Datenbank können Sie T-SQL-Abfragen ausführen, die sich mit einem einzigen Verbindungspunkt über mehrere Datenbanken erstrecken. Dieser Artikel gilt für vertikal partitionierte Datenbanken. In diesem Artikel erfahren Sie, wie Sie eine Azure SQL-Datenbank konfigurieren und verwenden, um Abfragen auszuführen, die mehrere verwandte Datenbanken umfassen.
Weitere Informationen zum Abfragefeature für elastische Datenbanken finden Sie unter Übersicht über elastische Abfragen in Azure SQL-Datenbank (Vorschau).
Voraussetzungen
Die Berechtigung „ALTER ANY EXTERNAL DATA SOURCE“ ist erforderlich. Diese Berechtigung ist in der Berechtigung ALTER DATABASE enthalten. ALTER ANY EXTERNAL DATA SOURCE-Berechtigungen sind erforderlich, um auf die zu Grunde liegende Datenquelle zu verweisen.
Erstellen der Beispieldatenbanken
Erstellen Sie zunächst zwei Datenbanken, Customers
und Orders
, entweder auf demselben oder auf unterschiedlichen logischen Servern.
Führen Sie die folgenden Abfragen für die Orders
-Datenbank aus, um die OrderInformation
Tabelle zu erstellen und die Beispieldaten einzugeben.
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)
Führen Sie nun die folgende Abfrage für die Customers
-Datenbank aus, um die CustomerInformation
Tabelle zu erstellen und die Beispieldaten einzugeben.
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')
Erstellen von Datenbankobjekten
Erstellen des Datenbankhauptschlüssels und der Anmeldeinformationen
Öffnen Sie SQL Server Management Studio oder SQL Server Data Tools in Visual Studio.
Stellen Sie eine Verbindung mit der Datenbank „Orders“ her, und führen Sie die folgenden T-SQL-Befehle aus:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>'; CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred WITH IDENTITY = '<username>', SECRET = '<password>';
- Die
master_key_password
ist ein sicheres Kennwort Ihrer Wahl zum Verschlüsseln der Verbindungsanmeldeinformationen. - Die
username
undpassword
sollten der Benutzername und das Kennwort sein, mit dem Sie sich bei der Kundendatenbank anmelden (erstellen Sie einen neuen Benutzer in der Kundendatenbank, wenn noch keiner vorhanden ist). - Die Authentifizierung mit Microsoft Entra ID (früher Azure Active Directory) mit elastischen Abfragen wird derzeit nicht unterstützt.
- Die
Externe Datenquellen
Führen Sie zum Erstellen einer externen Datenquelle den folgenden Befehl in der Orders
-Datenbank aus, um eine Verbindung mit der Customers
-Datenbank herzustellen. Geben Sie den logischen Azure SQL-Server der Customers
-Datenbank unter LOCATION
an.
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH
(TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'Customers',
CREDENTIAL = ElasticDBQueryCred
);
Externe Tabellen
Erstellen Sie eine externe Tabelle in der Orders
-Datenbank, deren Definition der CustomerInformation
-Tabelle entspricht.
CREATE EXTERNAL TABLE [dbo].[CustomerInformation]
( [CustomerID] [int] NOT NULL,
[CustomerName] [varchar](50) NOT NULL,
[Company] [varchar](50) NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc)
Remoteabfragen
Verwenden Sie die gespeicherte Prozedur sp_execute_remote, um eine Transact-SQL-Anweisung für eine einzelne Azure SQL-Remotedatenbank oder mehrere Datenbanken auszuführen, die als Shards in einem horizontalen Partitionierungsschema dienen. Die folgende T-SQL-Remoteabfrage gibt Daten aus der externen OrderInformation
Tabelle zurück.
EXEC sp_execute_remote
N'MyElasticDBQueryDataSrc',
N'SELECT COUNT(CustomerID) AS customer_count FROM CustomerInformation';
Ausführen einer T-SQL-Abfrage für eine elastische Beispieldatenbank
Nachdem Sie die externe Datenquelle und die externen Tabellen definiert haben, können Sie nun T-SQL verwenden, um Ihre externen Tabellen abzufragen. Führen Sie diese Abfrage auf der Orders
-Datenbank aus.
SELECT OrderInformation.CustomerID, OrderInformation.OrderId, CustomerInformation.CustomerName, CustomerInformation.Company
FROM OrderInformation
INNER JOIN CustomerInformation
ON CustomerInformation.CustomerID = OrderInformation.CustomerID;
Kosten
Derzeit ist die Abfragefunktion für elastische Datenbanken in den Kosten für Ihre Azure SQL-Datenbank enthalten.
Preisinformationen finden Sie unter Preise für SQL-Datenbank.