Showplansicherheit

Showplan-Ausführungsplaninformationen können auf verschiedene Arten erstellt werden. Sie können Optionen von Transact-SQL der SET-Anweisung oder SQL Server Profiler-Ereignisklassen verwenden, oder Sie können die dynamische Verwaltungsfunktion sys.dm_exec_query_plan abfragen. Jede Methode erfordert unterschiedliche Berechtigungen, die in den folgenden Abschnitten beschrieben werden. Weitere Informationen dazu, wie die SHOWPLAN-Berechtigung für Transact-SQL-Batches überprüft wird, finden Sie unter SHOWPLAN-Berechtigung und Transact-SQL-Batches.

HinweisHinweis

Wenn der Kompatibilitätsgrad einer SQL Server-Datenbank mithilfe der gespeicherten Prozedur sp_dbcmptlevel auf 80 festgelegt wird, gilt weiterhin die aktuelle SHOWPLAN-Berechtigung. Das Festlegen des Kompatibilitätsgrades auf 80 bewirkt nicht, dass sich die SHOWPLAN-Berechtigungen wie in Microsoft SQL Server 2000 verhalten.

Informationen zur SHOWPLAN-Berechtigung

Um Ausführungsplanausgaben mit den meisten Transact-SQL-SET-Optionen für Showplan erstellen zu können, müssen Benutzer über folgende Berechtigungen verfügen:

  • Die SHOWPLAN-Berechtigung für die Datenbanken, die Objekte enthalten, auf die in der Transact-SQL-Anweisung verwiesen wird, wie z. B. Sichten, gespeicherte Prozeduren oder benutzerdefinierte Funktionen.

  • Die erforderliche Berechtigung zum Ausführen der eigentlichen Transact-SQL-Anweisung.

    SicherheitshinweisSicherheitshinweis

    Benutzer mit den Berechtigungen SHOWPLAN, ALTER TRACE oder VIEW SERVER STATE können Abfragen anzeigen, die in der Showplan-Ausgabe erfasst werden. Diese Abfragen enthalten möglicherweise vertrauliche Informationen wie Kennwörter. Daher wird empfohlen, diese Berechtigungen nur Benutzern zu gewähren, die zum Zugreifen auf vertrauliche Informationen berechtigt sind, z. B. Mitglieder der festen Datenbankrolle "db_owner" oder Mitglieder der festen Serverrolle "sysadmin". Darüber hinaus wird empfohlen, Showplan-Dateien oder Ablaufverfolgungsdateien, die Ereignisse mit Bezug zu Showplan enthalten, nur an einem Speicherort zu speichern, für den das NTFS-Dateisystem verwendet wird, und den Zugriff auf Benutzer zu beschränken, die zum Zugreifen auf vertrauliche Informationen berechtigt sind.

    Als Beispiel wird von der folgenden Abfrage ausgegangen:

    SELECT COUNT(*)

    FROM table_1

    WHERE column_1 < 10

    Wenn ein Benutzer mit bösartigen Absichten eine Showplanausgabe für einen Satz von Abfragen wie in diesem Beispiel generiert und den Wert "10" im Prädikat jedes Mal durch unterschiedliche Konstanten ersetzt, könnte der Benutzer eine ungefähre Datenverteilung der Spaltenwerte für column_1 in table_1 ableiten, indem er die geschätzten Zeilenzählungen liest.

Die SHOWPLAN-Berechtigung ist eine Berechtigung auf Datenbankebene, für die Folgendes gilt:

  • Nur folgende Benutzer können diese erteilen, verweigern oder aufheben:

    • Mitglieder der festen Serverrolle sysadmin. Standardmäßig besitzen alle Mitglieder dieser festen Serverrolle die SHOWPLAN-Berechtigung für alle Datenbanken auf dem Server.

    • Mitglieder der festen Serverrolle dbcreator für Datenbanken, die sie erstellen und deren Besitzer sie sind. Standardmäßig verfügen alle Mitglieder dieser festen Serverrolle über die SHOWPLAN-Berechtigung für die Datenbanken, die sie erstellen und deren Besitzer sie sind.

    • Mitglieder der festen Datenbankrolle db_owners für Datenbanken, deren Besitzer sie sind. Standardmäßig verfügen alle Mitglieder dieser festen Datenbankrolle über die SHOWPLAN-Berechtigung für die Datenbanken, deren Besitzer sie sind.

  • Sie unterstützt die Besitzverkettung. Wenn die Besitzketten unterbrochen sind, wird die Berechtigung erneut an dem Knoten überprüft, an dem die Unterbrechung aufgetreten ist. Da die SHOWPLAN-Berechtigung jedoch eine Berechtigung auf Datenbankebene ist, tritt diese Überprüfung nur auf, wenn Abfragen auf Objekte in mindestens zwei Datenbanken verweisen. Weitere Informationen zur Besitzverkettung finden Sie unter Besitzketten.

Informationen zur Syntax zum Erteilen, Verweigern oder Aufheben der SHOWPLAN-Berechtigung finden Sie unter Syntax zum Erteilen, Verweigern und Aufheben der SHOWPLAN-Berechtigung.

Beispiel

Wenn User1 über CREATE TABLE-, INSERT- und SELECT-Berechtigungen verfügt und in der D-Datenbank eine T-Tabelle erstellt (er ist der Besitzer der Tabelle), Zeilen in die Tabelle einfügt und dann eine SELECT-Abfrage für die Tabelle schreibt, wird diese Abfrage erfolgreich ausgeführt. User1 ist jedoch nicht in der Lage, einen Showplan zu generieren, wenn ihm nicht die SHOWPLAN-Berechtigung für die D-Datenbank erteilt wird.

Vorsicht

Angenommen, im vorherigen Beispiel enthält die D-Datenbank die V-Sicht, für die User1 die SELECT-Berechtigung besitzt. Nachdem User1 die SHOWPLAN-Berechtigung für D erteilt wurde, kann er – obwohl er nicht Besitzer von V ist – trotzdem einen Showplan für eine Abfrage für V generieren. Dieser Showplan ermöglicht es ihm, die Sichtdefinition für V, anzuzeigen, einschließlich der Tabellen und Sichten, auf denen V basiert.. Enthält jedoch V ein Objekt, z. B. eine Tabelle, deren Besitzer User1 ist und die sich in einer anderen Datenbank D2 befindet, und ist User1 nicht der Besitzer von D2, wird die SHOWPLAN-Berechtigung für D2 überprüft und ist erforderlich.

Erforderliche Berechtigungen für die Verwendung von SET-Optionen für Showplan

In der folgenden Tabelle sind die erforderlichen Berechtigungen für die Verwendung der verschiedenen Optionen der SET-Anweisung für Showplan aufgeführt:

SET-Optionen für Showplan

Erforderliche Berechtigungen

SET SHOWPLAN_XML ON

SET SHOWPLAN_ALL ON

SET SHOWPLAN_TEXT ON

Für die Anweisungen SELECT, INSERT, UPDATE, DELETE, EXEC stored_prodedure und EXEC user_defined_function sind die folgenden Berechtigungen erforderlich, um einen Showplan zu erstellen:

  • Entsprechende Berechtigungen zum Ausführen der Transact-SQL-Anweisungen.

  • SHOWPLAN-Berechtigung für alle Datenbanken mit Objekten, auf die in den Transact-SQL-Anweisungen verwiesen wird, wie z. B. Tabellen, Sichten usw.

Für alle anderen Anweisungen, wie DDL, USE database_name, SET, DECLARE, dynamisches Transact-SQL usw., sind nur die entsprechenden Berechtigungen zum Ausführen der Transact-SQL-Anweisung erforderlich. Weitere Informationen finden Sie unter SHOWPLAN-Berechtigung und Transact-SQL-Batches.

SET STATISTICS XML ON

SET STATISTICS PROFILE ON

  • Entsprechende Berechtigungen zum Ausführen der Transact-SQL-Anweisungen.

  • SHOWPLAN-Berechtigung für alle Datenbanken mit Objekten, auf die in den Transact-SQL-Anweisungen verwiesen wird.

Für Transact-SQL-Anweisungen, die keine STATISTICS PROFILE- oder STATISTICS XML-Resultsets generieren, sind nur die entsprechenden Berechtigungen zum Ausführen der Transact-SQL-Anweisungen erforderlich. Für Transact-SQL-Anweisungen, die STATISTICS PROFILE- oder STATISTICS XML-Resultsets generieren, müssen die Überprüfungen für die Ausführungsberechtigung für die Transact-SQL-Anweisung und für die SHOWPLAN-Berechtigung erfolgreich verlaufen. Andernfalls wird die Ausführung der Transact-SQL-Anweisung unterbrochen, und es werden keine Showplaninformationen generiert. Informationen zu den Transact-SQL-Anweisungen, die Showplaninformationen generieren, finden Sie unter Showplans erstellende Transact-SQL-Anweisungen.

SET STATISTICS TIME

SET STATISTICS IO

  • Entsprechende Berechtigungen zum Ausführen der Transact-SQL-Anweisungen.

Keine dieser Optionen der SET-Anweisung prüft auf die SHOWPLAN-Berechtigung oder erfordert diese.

Wann wird die SHOWPLAN-Berechtigung überprüft?

Die SHOWPLAN-Berechtigung wird überprüft, wenn eine Transact-SQL-Anweisung oder ein Batch ausgeführt wird und Showplaninformationen generiert werden. Die Überprüfung tritt nicht auf, wenn eine SET-Option für Showplan auf ON festgelegt wird.

HinweisHinweis

Die Kontextdatenbank für einen Transact-SQL-Batch wird mithilfe der USE <database_name>-Anweisung festgelegt. Die SHOWPLAN-Berechtigung wird weder für USE <database_name>-Anweisungen noch für die Kontextdatenbank überprüft.

Weitere Informationen zu den Optionen der SET-Anweisung für Showplan finden Sie in den folgenden Themen:

Erforderliche Berechtigungen zum Anzeigen grafischer Ausführungspläne mithilfe von SQL Server Management Studio

In der folgenden Tabelle sind die erforderlichen Berechtigungen zum Anzeigen grafischer Ausführungspläne in SQL Server Management Studio aufgeführt:

Option für Management Studio-Ausführungsplan

Erforderliche Berechtigungen

Geschätzten Ausführungsplan anzeigen

Erfordert dieselben Berechtigungen, die zum Verwenden der Option SHOWPLAN_XML der SET-Anweisung erforderlich sind.

Tatsächlichen Ausführungsplan einschließen

Erfordert dieselben Berechtigungen, die zum Verwenden der Option STATISTICS XML der SET-Anweisung erforderlich sind.

Weitere Informationen finden Sie unter Anzeigen von grafischen Ausführungsplänen (SQL Server Management Studio).

Erforderliche Berechtigungen zum Anzeigen von Ausführungsplänen mithilfe von SQL Server Profiler-Ereignisklassen

Um Ausführungspläne mithilfe von SQL Server Profiler-Ereignisklassen anzeigen zu können, muss der Benutzer ein Mitglied der festen Serverrolle sysadmin sein oder über die ALTER TRACE-Berechtigung verfügen. Die SHOWPLAN-Berechtigung wird nicht überprüft und ist nicht erforderlich.

Weitere Informationen finden Sie unter Anzeigen von Ausführungsplänen mithilfe von SQL Server Profiler-Ereignisklassen.

Erforderliche Berechtigungen zum Anzeigen von Ausführungsplänen mithilfe der dynamischen Verwaltungsfunktion sys.dm_exec_query_plan

Zum Anzeigen von Ausführungsplänen mithilfe der dynamischen Verwaltungsfunktion sys.dm_exec_query_plan muss den Benutzern lediglich die VIEW SERVER STATE-Berechtigung erteilt werden.

Weitere Informationen finden Sie unter sys.dm_exec_query_plan (Transact-SQL).

Siehe auch

Andere Ressourcen