Übersicht über elastische Abfragen in Azure SQL-Datenbank (Vorschau)

Gilt für:Azure SQL-Datenbank

Mithilfe des Features für elastische Abfragen (in der Vorschauphase) können Sie eine Transact-SQL-Abfrage ausführen, die mehrere Datenbanken in Azure SQL-Datenbank umfasst. Es ermöglicht das Ausführen datenbankübergreifender Abfragen für den Zugriff auf Remotetabellen und das Verbinden von Microsoft- und Drittanbietertools (Excel, Power BI, Tableau usw.), um Datenebenen mit mehreren Datenbanken abzufragen. Mit dieser Funktion können Sie Abfragen auf große Datenebenen aufskalieren und die Abfrageergebnisse in Berichten für Business Intelligence (BI) darstellen.

Gründe für die Verwendung elastischer Abfragen

Azure SQL-Datenbank

Die datenbankübergreifende Abfrage in Azure SQL-Datenbank erfolgt vollständig in T-SQL. Dies ermöglicht das Durchführen schreibgeschützter Abfragen in Remotedatenbanken und bietet derzeitigen Kunden von SQL Server eine Option zum Migrieren von Anwendungen unter Verwendung von Namen mit drei oder vier Teilen oder eines Verbindungsservers zu Azure SQL-Datenbank.

Verfügbar in allen Dienstebenen

Elastische Abfragen werden in allen Dienstebenen von Azure SQL-Datenbank unterstützt. Informationen zu Leistungseinschränkungen bei niedrigeren Dienstebenen finden Sie nachstehend im Abschnitt „Einschränkungen der Vorschau“.

Übertragen von Parametern mithilfe von Push an Remotedatenbanken

Elastische Abfragen können nun SQL-Parameter zur Ausführung an die Remotedatenbank übertragen.

Ausführen gespeicherter Prozeduren

Führen Sie remote gespeicherte Prozeduraufrufe oder Remotefunktionen mithilfe von sp_execute _remote durch.

Flexibilität

Externe Tabellen mit elastischer Abfrage können auf Remotetabellen mit einem anderen Schema- oder Tabellennamen verweisen.

Szenarien mit elastischen Abfragen

Ziel ist es, Berichterstellungsszenarien zu vereinfachen, in denen mehrere Datenbanken Zeilen zu einem einzelnen Gesamtergebnis beitragen. Die Abfrage kann entweder vom Benutzer oder durch die Anwendung direkt oder indirekt über Tools erstellt werden, die mit der Datenbank verbunden sind. Dies ist besonders hilfreich beim Erstellen von Berichten mit kommerziellen BI- oder Datenintegrationstools bzw. allen Anwendungen, die nicht geändert werden können. Mithilfe einer elastischen Abfrage können Sie mehrere Datenbanken unter Verwendung der gewohnten SQL Server-Verbindungsumgebung in Tools wie Excel, Power BI, Tableau oder Cognos abfragen. Außerdem ermöglicht eine elastische Abfrage den einfachen Zugriff auf eine ganze Sammlung von Datenbanken, die von SQL Server Management Studio oder Visual Studio ausgegeben werden, und sie vereinfacht datenbankübergreifende Abfragen aus Entity Framework oder anderen ORM-Umgebungen. Abbildung 1 zeigt ein Szenario, in dem eine vorhandene Cloudanwendung (die die Clientbibliothek für elastische Datenbanken verwendet) auf einer horizontal skalierten Datenebene aufbaut und eine elastische Abfrage für datenbankübergreifende Berichte verwendet wird.

Abbildung 1 Elastische Abfrage auf horizontal hochskalierter Datenebene

Elastic query used on scaled-out data tier

Kundenszenarien für elastische Abfragen zeichnen sich durch die folgenden Topologien aus:

  • Vertikale Partitionierung – datenbankübergreifende Abfragen (Topologie 1): Die Daten werden zwischen mehreren Datenbanken auf einer Datenschicht vertikal partitioniert. In der Regel befinden sich verschiedene Sätze von Tabellen in verschiedenen Datenbanken. Das bedeutet, dass das Schema bei verschiedenen Datenbanken unterschiedlich ist. Beispielsweise befinden sich alle bestandsbezogenen Tabellen in einer Datenbank, während alle Buchhaltungstabellen in einer zweiten Datenbank enthalten sind. Gängige Anwendungsfälle mit dieser Topologie erfordern zum Erstellen von Berichten das Abfragen von Tabellen in mehreren Datenbanken.
  • Horizontale Partitionierung – Sharding (Topologie 2): Die Daten werden horizontal partitioniert, um Zeilen auf einer horizontal hochskalierten Datenschicht zu verteilen. Bei diesem Ansatz ist das Schema für alle teilnehmenden Datenbanken identisch. Dieser Ansatz wird auch „Sharding“ genannt. Sharding kann (1.) mithilfe der Bibliothek für elastische Datenbanktools oder (2.) eines eigenständigen Shardings ausgeführt und verwaltet werden. Eine elastische Abfrage dient zum viele Shards übergreifenden Abfragen oder Erstellen von Berichten. Shards sind normalerweise Datenbanken in einem Pool für elastische Datenbanken. Sie können sich elastische Abfragen als effiziente Methode für die gleichzeitige Abfrage aller Datenbanken des Pools für elastische Datenbanken vorstellen, sofern die Datenbanken ein gemeinsames Schema teilen.

Hinweis

Die elastische Abfrage eignet sich am besten für Berichtsszenarios, bei denen der Großteil der Verarbeitung (Filterung, Aggregation) auf der Seite der externen Quelle ausgeführt werden kann. Sie eignet sich nicht für ETL-Vorgänge, bei denen große Datenmengen von Remotedatenbanken übertragen werden. Bei umfangreichen Berichtsworkloads oder Data Warehousing-Szenarien mit komplexeren Abfragen, sollten Sie auch die Verwendung von Azure Synapse Analytics in Betracht ziehen.

Vertikale Partitionierung – datenbankübergreifende Abfragen

Lesen Sie zum Einstieg in die Programmierung Erste Schritte mit datenbankübergreifenden Abfragen (vertikale Partitionierung).

Eine elastische Abfrage kann verwendet werden, um Daten in einer Datenbank in Azure SQL-Datenbank anderen Datenbanken in Azure SQL-Datenbank zur Verfügung zu stellen. Dadurch können Abfragen aus einer Datenbank auf Tabellen in einer beliebigen anderen Remotdatenbank in Azure SQL-Datenbank verweisen. Der erste Schritt ist das Definieren einer externen Datenquelle für jede Remotedatenbank. Die externe Datenquelle wird in der lokalen Datenbank definiert, aus der Sie auf Tabellen zugreifen möchten, die sich in der Remotedatenbank befinden. Es sind keine Änderungen an der Remotedatenbank erforderlich. Für normale vertikale Partitionierungsszenarien, in denen verschiedene Datenbanken unterschiedliche Schemas haben, können elastische Abfragen verwendet werden, um gängige Anwendungsfälle zu implementieren, z. B. den Zugriff auf Verweisdaten und datenbankübergreifende Abfragen.

Wichtig

Sie müssen über die Berechtigung ALTER ANY EXTERNAL DATA SOURCE verfügen. 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.

Verweisdaten: Die Topologie wird zur Verwaltung von Verweisdaten verwendet. In der folgenden Abbildung sind die beiden Tabellen mit Verweisdaten (T1 und T2) in einer dedizierten Datenbank gespeichert. Über eine elastische Abfrage können Sie nun aus anderen Datenbanken remote auf die Tabellen T1 und T2 zugreifen (siehe die Abbildung). Wählen Sie Topologie 1, wenn Verweistabellen klein sind oder Remoteabfragen von Verweistabellen selektive Prädikate haben.

Abbildung 2 Vertikale Partitionierung – Verwenden einer elastischen Abfrage zum Abfragen von Verweisdaten

Vertical partitioning - Using elastic query to query reference data

Datenbankübergreifende Abfragen: Elastische Abfragen ermöglichen Anwendungsfälle, die das Abfragen mehrerer Datenbanken in Azure SQL-Datenbank erfordern. Abbildung 3 zeigt vier unterschiedliche Datenbanken: CRM, Bestand, Personal und Produkte. Abfragen, die auf eine der Datenbanken angewendet werden, benötigen außerdem Zugriff auf eine oder alle anderen Datenbanken. Bei Verwenden einer elastischen Abfrage können Sie Ihre Datenbank für diesen Fall konfigurieren, indem Sie einige einfache DDL-Anweisungen auf jede der vier Datenbanken anwenden. Nach dieser einmaligen Konfiguration ist der Zugriff auf eine Remotetabelle so einfach wie das Verweisen auf eine lokale Tabelle in Ihren T-SQL-Abfragen oder in Ihren BI-Tools. Dieser Ansatz wird empfohlen, wenn von den Remoteabfragen keine umfangreichen Ergebnisse zurückgegeben werden.

Abbildung 3 Vertikale Partitionierung – Verwenden einer elastischen Abfrage zum Abfragen verschiedener Datenbanken

Vertical partitioning - Using elastic query to query across various databases

Die folgenden Schritte dienen zum Konfigurieren elastischer Datenbankabfragen für Szenarien mit vertikaler Partitionierung, die Zugriff auf eine Tabelle in Remotedatenbanken in Azure SQL-Datenbank mit demselben Schema erfordern:

Nach Ausführen der DDL-Anweisungen können Sie auf die Remotetabelle „mytable“ wie auf eine lokale Tabelle zugreifen. Azure SQL-Datenbank öffnet automatisch eine Verbindung mit der Remotedatenbank, verarbeitet Ihre Anforderung an die Remotedatenbank und gibt die Ergebnisse zurück.

Horizontale Partitionierung (Sharding)

Das Verwenden einer elastischen Abfrage für Berichtsaufgaben auf einer Datenebene mit Sharding, d.h. horizontaler Partitionierung, erfordert, dass die Datenbanken der Datenebene durch eine Shardzuordnung für elastische Datenbanken dargestellt werden. Normalerweise wird nur eine einzelne Shardzuordnung in diesem Szenario verwendet, und eine dedizierte Datenbank mit elastischen Abfragefunktionen (Hauptknoten) dient als Einstiegspunkt für Berichtsabfragen. Nur diese dedizierte Datenbank benötigt Zugriff auf die Shardzuordnung. Abbildung 4 zeigt diese Topologie und ihre Konfiguration mit der elastischen Abfragedatenbank und Shardzuordnung. Weitere Informationen zur Clientbibliothek für elastische Datenbanken und zum Erstellen von Shardzuordnungen finden Sie unter Verwaltung von Shardzuordnungen.

Abbildung 4 Horizontale Partitionierung – Verwenden einer elastischen Abfrage von Datenebenen mit Sharding für die Berichterstellung

Horizontal partitioning - Using elastic query for reporting over sharded data tiers

Hinweis

Die elastische Abfragedatenbank (Hauptknoten) kann eine separate Datenbank oder aber die gleiche Datenbank sein, die als Host für die Shardzuordnung fungiert. Stellen Sie unabhängig von der ausgewählten Konfiguration sicher, dass Dienstebene und Computegröße der Datenbank hoch genug sind, um das voraussichtliche Aufkommen an Anmelde- und Abfrageanforderungen zu bewältigen.

Die folgenden Schritte dienen zum Konfigurieren elastischer Datenbankabfragen für Szenarios mit horizontaler Partitionierung, die Zugriff auf eine Gruppe von Tabellen in (üblicherweise) mehreren Remotedatenbanken in Azure SQL-Datenbank erfordern:

Nachdem Sie diese Schritte ausgeführt haben können Sie auf die horizontal partitionierte Tabelle „mytable“ wie auf eine lokale Tabelle zugreifen. Azure SQL-Datenbank öffnet automatisch mehrere parallele Verbindungen mit den Remotedatenbanken, in denen die Tabellen physisch gespeichert sind, verarbeitet die Anforderungen an die Remotedatenbanken und gibt die Ergebnisse zurück. Weitere Informationen zu den Schritten, die für das Szenario der horizontalen Partitionierung erforderlich sind, finden Sie unter Elastische Abfrage für die horizontale Partitionierung.

Lesen Sie zum Einstieg in die Programmierung Erste Schritte mit elastischen Abfragen für horizontale Partitionierung (Sharding).

Wichtig

Die erfolgreiche Ausführung elastischer Abfragen für eine große Anzahl von Datenbanken hängt stark von der Verfügbarkeit der einzelnen Datenbanken während der Abfrageausführung ab. Wenn eine der Datenbanken nicht verfügbar ist, kann die gesamte Abfrage nicht ausgeführt werden. Wenn Sie mehrere Hundert oder Tausend Datenbanken gleichzeitig abfragen möchten, stellen Sie sicher, dass in die Clientanwendung Wiederholungslogik eingebettet ist, oder nutzen Sie Aufträge für die elastische Datenbanken (Vorschauversion), um kleinere Teilmengen der Datenbanken abzufragen, und führen Sie die Ergebnisse der einzelnen Abfragen in einem einzigen Ziel zusammen.

T-SQL-Abfragen

Sobald Sie Ihre externen Datenquellen und externen Tabellen definiert haben, können Sie herkömmliche SQL Server-Verbindungszeichenfolgen zum Verbinden mit den Datenbanken verwenden, in denen Sie Ihre externen Tabellen definiert haben. Sie können dann bei den nachstehend beschriebenen Einschränkungen über diese Verbindung T-SQL-Anweisungen auf Ihre externen Tabellen anwenden. Weitere Informationen und Beispiele für T-SQL-Abfragen finden Sie in den Dokumentationsthemen für horizontale Partitionierung und vertikale Partitionierung.

Konnektivität für Tools

Sie können herkömmliche SQL Server-Verbindungszeichenfolgen zum Verbinden Ihrer Anwendungen bzw. BI- oder Datenintegrationstools mit Datenbanken verwenden, die externe Tabellen enthalten. Stellen Sie sicher, dass SQL Server als Datenquelle für das Tool unterstützt wird. Nach dem Herstellen der Verbindung können Sie auf die elastische Abfragedatenbank und externen Tabellen wie auf jede andere SQL Server-Datenbank zugreifen, mit der Sie sich über Ihr Tool verbinden.

Wichtig

Gestützte Abfragen werden nur unterstützt, wenn Sie eine Verbindung mit SQL Server herstellen.

Kosten

Elastische Abfragen sind in den Kosten von Azure SQL-Datenbank enthalten. Beachten Sie, dass Topologien unterstützt werden, in denen sich Remotedatenbanken in einem anderen Rechenzentrum befinden als der Endpunkt der elastischen Abfrage. Der Datenausgang aus Remotedatenbanken wird jedoch zu den üblichen Azure-Gebühren in Rechnung gestellt.

Einschränkungen der Vorschau

  • Die Ausführung Ihrer ersten elastischen Abfrage kann bei kleineren Ressourcen und der Dienstebene „Standard“ und „Universell“ einige Minuten dauern. Dieser Zeitraum wird für das Laden der elastischen Abfragefunktionalität benötigt: je höher die Dienstebene und Computegröße, desto besser die Ladeleistung.
  • Das Erstellen von Skripts für externe Datenquellen oder externe Tabellen in SSMS oder SSDT wird noch nicht unterstützt.
  • Import/Export für Azure SQL-Datenbank unterstützt noch keine externen Datenquellen und externen Tabellen. Wenn Sie Import/Export verwenden müssen, löschen Sie diese Objekte vor dem Exportieren, und erstellen Sie sie nach dem Importieren neu.
  • Elastische Abfragen unterstützen derzeit nur den schreibgeschützten Zugriff auf externe Tabellen. Sie können jedoch die vollständige Transact-SQL-Funktionalität für die Datenbank nutzen, in der die externe Tabelle definiert ist. Dies kann beispielsweise hilfreich sein, um temporäre Ergebnisse z.B. mithilfe von „SELECT <> INTO <>“ dauerhaft zu speichern, oder um gespeicherte Prozeduren für die elastische Abfragedatenbank zu definieren, die auf externe Tabellen verweisen.
  • Mit Ausnahme von „nvarchar(max)“ (einschließlich räumlicher Typen) werden LOB-Typen in externen Tabellendefinitionen nicht unterstützt. Um dieses Problem zu umgehen, können Sie eine Sicht für die Remotedatenbank erstellen, die den LOB-Typ in „nvarchar(max)“ umwandelt, ihre externe Tabelle für die Sicht anstatt für die Basistabelle definieren und sie in Ihren Abfragen in den ursprünglichen LOB-Typ rückumwandeln.
  • Durch Spalten vom Datentyp „nvarchar(max)“ im Ergebnisset werden erweiterte Batchverarbeitungstechniken deaktiviert, die bei der Implementierung elastischer Abfragen verwendet werden und möglicherweise die Leistung der Abfragen für eine Größenordnung oder sogar zwei Größenordnungen in nicht kanonischen Anwendungsfällen beeinträchtigen, in denen eine Vielzahl von nicht aggregierten Daten infolge der Abfrage übertragen werden.
  • Spaltenstatistiken werden für externe Tabellen derzeit nicht unterstützt. Tabellenstatistiken werden unterstützt, müssen aber manuell erstellt werden.
  • Cursor werden für externe Tabellen in Azure SQL-Datenbank nicht unterstützt.
  • Elastische Abfragen funktionieren nur mit Azure SQL-Datenbank. Sie können sie nicht zum Abfragen einer SQL Server-Instanz verwenden.
  • Private Links werden derzeit bei elastischen Abfragen für die Datenbanken, die Ziele externer Datenquellen sind, nicht unterstützt.

Feedback geben

Geben Sie uns unten, in den MSDN-Foren oder auf Stack Overflow Feedback zu Ihrer Erfahrung mit elastischen Datenbankabfragen. Für uns sind alle Arten von Feedback zum Dienst (Fehler, Designprobleme und fehlende Features) interessant.

Nächste Schritte