SQL Server und Co. Gespeicherte Prozeduren Gespeicherte Prozeduren Bernd Jungbluth, Horn „Oh – by the way: The same procedure as last year, Miss Sophie?“ „The same procedure as every year, James.“ Auch der SQL Server bietet Procedures: Stored Procedures. Und wie auch Miss Sophie greift der SQL Server gerne auf altbewährte Procedures zurück – natürlich weitaus öfter als nur einmal im Jahr und auch nicht immer nur auf ein und dieselbe Weise. Im Gegenteil: Sie können für die Verwaltung und Aufbereitung Ihrer Daten mehrere Stored Procedures in Ihrer Datenbank anlegen und diese immer wieder verwenden. Das sollten Sie auch ausgiebig tun, denn gerade Stored Procedures bieten das meiste Potenzial, wenn es um Geschwindigkeit, Datenkonsistenz und die Implementation von Geschäftslogik geht. Eine Stored Procedure ist nichts anderes als eine Prozedur, in der, ähnlich einer VBA-Funktion, mehrere Anweisungen – hier natürlich SQL-Anweisungen – gespeichert werden. Daher auch der Name Stored Procedure (zu deutsch: gespeicherte Prozedur). Warum aber sollten SQL-Anweisungen auf dem SQL Server gespeichert werden? Immerhin können die SQL-Anweisungen doch im Frontend wunderbar nach den dort gegebenen Umständen zur Laufzeit zusammengestellt und ausgeführt werden. Die Antwort auf diese Frage lautet: Geschwindigkeit. Geschwindigkeit Bevor der SQL Server eine SQL-Anweisung ausführt, prüft er zunächst die Syntax der SQL-Anweisung. Zu dieser Syntaxprüfung gehört nicht nur die Kontrolle der Syntax der einzelnen Befehle, sondern es Zusammenfassung Tipps und Tricks zum Einsatz von gespeicherten Prozeduren in einer MDB Techniken SQL Server 2005, Access 2000-2007, VBA, T-SQL Voraussetzungen Access, VBA, T-SQL Beispieldateien SPs.mdb, spUpdateInsertRegion.sql, spBestellungenKundeMitAnzPos.sql Shortlink 626 14 Access im Unternehmen 5/2008 wird auch die Existenz der dort angegebenen SQL Server-Objekte, wie Tabellen, Sichten und deren Spalten, geprüft. Diese Syntaxprüfung erfolgt vor jeder Ausführung der SQL-Anweisung. Nach der Syntaxkontrolle wird die SQL-Anweisung zunächst kompiliert, das heißt, es wird ein Ausführungsplan für die Ermittlung der Daten durch den Abfrageoptimierer erstellt. Dieser Ausführungsplan ist mit einer Wegbeschreibung vergleichbar. Er enthält die Reihenfolge, in der etwa die Tabellen der SQL-Anweisung gelesen oder welche Indizes benutzt werden. Anhand dieses Ausführungsplans wird die SQL-Anweisung ausgeführt. Auch bei der Ausführung einer gespeicherten Prozedur wird zunächst eine Syntaxkontrolle durchgeführt und ein Ausführungsplan erstellt. Doch im Gegensatz zur SQL-Anweisung nicht bei jeder, sondern nur bei der ersten Ausführung. Denn der Ausführungsplan wird im sogenannten Prozedurcache – also im Arbeitsspeicher – abgelegt. Bei der nächsten Ausführung entfallen Syntaxkontrolle und Kompilieren der gespeicherten Prozedur. Der SQL Server greift direkt auf den Ausführungsplan im Arbeitsspeicher zu. Und das macht die Ausführung von gespeicherten Prozeduren schnell – sehr schnell. Aber nicht nur die Geschwindigkeit ist ein Trumpf der gespeicherten Prozeduren. Mit gespeicherten Prozeduren können Sie auch die Datenkonsistenz und das Einhalten von Geschäftsregeln gewährleisten. www.access-im-unternehmen.de