Freigeben über


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

  1. Öffnen Sie SQL Server Management Studio oder SQL Server Data Tools in Visual Studio.

  2. 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 und password 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.

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.