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.
Nach Abschluss des Themas haben Sie Folgendes gelernt: Konfigurieren und Verwenden einer Azure SQL-Datenbank zum Ausführen von Abfragen, die sich über mehrere verwandte Datenbanken erstrecken.
Weitere Informationen zur Abfragefunktion für elastische Datenbanken finden Sie unter Übersicht über die Abfrage für elastische Datenbanken in Azure SQL-Datenbank.
Voraussetzungen
Es ist die Berechtigung ALTER ANY EXTERNAL DATA SOURCE 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 die zwei Datenbanken Customers (Kunden) und Orders (Bestellungen), auf demselben oder auf unterschiedlichen Servern.
Führen Sie die folgenden Abfragen in der Datenbank Orders aus, um die Tabelle OrderInformation 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 dann die folgende Abfrage in der Datenbank Customers aus, um die Tabelle CustomerInformation 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>';
Das „master_key_password“ ist ein sicheres Kennwort Ihrer Wahl, das verwendet wird, um die Anmeldeinformationen der Verbindung zu verschlüsseln. Für „username“ und „password“ müssen Sie den Benutzernamen und das Kennwort angeben, mit denen Sie sich bei der Datenbank „Customers“ anmelden (erstellen Sie einen neuen Benutzer in der Datenbank „Customers“, sofern noch kein Benutzer vorhanden ist). Die Authentifizierung über Microsoft Entra ID (früher Azure Active Directory) mit elastischen Abfragen wird derzeit nicht unterstützt.
Externe Datenquellen
Um eine externe Datenquelle zu erstellen, führen Sie den folgenden Befehl für die Datenbank „Orders“ aus:
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 Datenbank „Orders“, die der Definition der Tabelle „CustomerInformation“ entspricht:
CREATE EXTERNAL TABLE [dbo].[CustomerInformation]
( [CustomerID] [int] NOT NULL,
[CustomerName] [varchar](50) NOT NULL,
[Company] [varchar](50) NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc)
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 jetzt T-SQL verwenden, um externe Tabellen abzufragen. Führen Sie für die Datenbank „Orders“ diese Abfrage 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.
Nächste Schritte
- Eine Übersicht über elastische Abfragen finden Sie unter Übersicht über elastische Abfragen in Azure SQL-Datenbank.
- Die Syntax und Beispiele für Abfragen von vertikal partitionierten Daten finden Sie unter Abfragen von vertikal partitionierten Daten.
- Ein Tutorial zur horizontalen Partitionierung (Sharding) finden Sie unter Erste Schritte mit elastischen Abfragen für horizontale Partitionierung (Sharding).
- Die Syntax und Beispiele für Abfragen von horizontal partitionierten Daten finden Sie unter Abfragen von horizontal partitionierten Daten.
- Unter sp_execute_remote finden Sie eine gespeicherte Prozedur, mit der eine Transact-SQL-Anweisung für eine einzelne Remoteinstanz von Azure SQL-Datenbank oder für eine Gruppe von Datenbanken ausgeführt wird, die als Shards in einem Schema mit horizontaler Partitionierung dienen.