Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält Tipps zum Entwickeln dedizierter SQL-Poollösungen durch Implementieren von gespeicherten Prozeduren.
Was dich erwartet
Der dedizierte SQL-Pool unterstützt viele der T-SQL-Features, die in SQL Server verwendet werden. Wichtiger ist, dass es skalierungsspezifische Features gibt, die Sie verwenden können, um die Leistung Ihrer Lösung zu maximieren.
Darüber hinaus gibt es zusätzliche Features und Funktionen, die Verhaltensunterschiede aufweisen, um die Skalierung und Leistung des dedizierten SQL-Pools aufrechtzuerhalten.
Einführung von gespeicherten Prozeduren
Gespeicherte Prozeduren eignen sich hervorragend zum Kapseln des SQL-Codes, der in der Nähe ihrer dedizierten SQL-Pooldaten gespeichert ist. Gespeicherte Prozeduren helfen Entwicklern auch, ihre Lösungen zu modularisieren, indem der Code in verwaltbare Einheiten gekapselt wird, wodurch die Wiederverwendbarkeit von Code erleichtert wird. Jede gespeicherte Prozedur kann auch Parameter akzeptieren, um sie noch flexibler zu gestalten.
Der dedizierte SQL-Pool bietet eine vereinfachte und optimierte Implementierung gespeicherter Prozeduren. Der größte Unterschied im Vergleich zu SQL Server besteht darin, dass die gespeicherte Prozedur kein vorkompilierter Code ist.
Im Allgemeinen ist die Kompilierungszeit für Data Warehouses im Vergleich zu der Zeit, die zum Ausführen von Abfragen für große Datenvolumes benötigt wird, gering. Es ist wichtiger, sicherzustellen, dass der gespeicherte Prozedurcode für große Abfragen ordnungsgemäß optimiert ist.
Tipp
Ziel ist es, Stunden, Minuten und Sekunden zu sparen, nicht Millisekunden. Daher ist es hilfreich, gespeicherte Prozeduren als Container für SQL-Logik zu betrachten.
Wenn ein dedizierter SQL-Pool Ihre gespeicherte Prozedur ausführt, werden die SQL-Anweisungen zur Laufzeit analysiert, übersetzt und optimiert. Während dieses Prozesses wird jede Anweisung in verteilte Abfragen konvertiert. Der SQL-Code, der für die Daten ausgeführt wird, unterscheidet sich von der übermittelten Abfrage.
Schachteln von gespeicherten Prozeduren
Wenn gespeicherte Prozeduren andere gespeicherte Prozeduren aufrufen oder dynamische SQL ausführen, wird die innere gespeicherte Prozedur oder der Codeaufruf als geschachtelt bezeichnet.
Der dedizierte SQL-Pool unterstützt maximal acht Schachtelungsebenen. Im Gegensatz dazu sind in SQL Server 32 Schachtelungsebenen zulässig.
Der Aufruf der obersten gespeicherten Prozedur entspricht Schachtelungsebene 1.
EXEC prc_nesting
Wenn die gespeicherte Prozedur auch einen weiteren EXEC-Aufruf durchführt, wird die Schachtelungsebene auf 2 erhöht.
CREATE PROCEDURE prc_nesting
AS
EXEC prc_nesting_2 -- This call is nest level 2
GO
EXEC prc_nesting
Wenn die zweite Prozedur dann dynamischen SQL-Code ausführt, wird die Schachtelungsebene auf 3 erhöht.
CREATE PROCEDURE prc_nesting_2
AS
EXEC sp_executesql 'SELECT 'another nest level' -- This call is nest level 2
GO
EXEC prc_nesting
Dedizierter SQL-Pool unterstützt derzeit keine @@NESTLEVEL. Daher müssen Sie die Schachtelungsebene nachverfolgen. Es ist unwahrscheinlich, dass Sie den Grenzwert von acht Schachtelungsebenen überschreiten. Wenn dies dennoch der Fall ist, müssen Sie Ihren Code so überarbeiten, dass er den Schachtelungsebenen innerhalb dieses Grenzwerts entspricht.
INSERT..EXECUTE
Der dedizierte SQL-Pool ermöglicht es Ihnen nicht, das Resultset einer gespeicherten Prozedur mit einer INSERT-Anweisung zu nutzen. Es gibt jedoch einen alternativen Ansatz, den Sie verwenden können. Ein Beispiel finden Sie im Artikel zu temporären Tabellen.
Einschränkungen
Es gibt einige Aspekte von Transact-SQL gespeicherten Prozeduren, die nicht in dediziertem SQL-Pool implementiert sind, die wie folgt sind:
- temporäre gespeicherte Prozeduren
- Nummerierte gespeicherte Prozeduren
- erweiterte gespeicherte Prozeduren
- CLR-gespeicherte Prozeduren
- Verschlüsselungsoption
- Replikationsoption
- Parameter mit Tabellenwert
- schreibgeschützte Parameter
- Standardparameter
- Ausführungskontexte
- return-Anweisung
Nächste Schritte
Weitere Hinweise zur Entwicklung finden Sie in der Entwicklungsübersicht.