Mit Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Problembeschreibung

Betrachten Sie das folgende Szenario:

  • Erstellen eine Richtlinie mit Policy-basiertem Management (PBM) in Microsoft SQL Server 2008, Microsoft SQL Server 2008 R2 oder Microsoft SQL Server 2012.

  • Evaluierungsmodus für die Richtlinie wird Auf Zeitplan.

  • Eine Bedingung für die Richtlinie enthält die ExecuteSql() -Funktion.


In diesem Szenario müssen Sie beim Ausführen des SQL Server-Agent-Auftrags der Agent generiert Fehlalarme und folgende Fehlermeldung wird in der SQL Server-Fehlerprotokolldatei protokolliert:

Fehler: 34052, Schweregrad: 16, Status: 1.
Richtlinie ' <Name der>' wurde verletzt.



Hinweis Dieses Problem tritt nicht auf, wenn Sie diesen Auftrag manuell ausführen.

Ursache

Dieses Problem tritt auf, weil eine erstellte PBM-Richtlinie verletzt wird. PBM legt Richtlinie Verstoß Nachrichten in das Fehlerprotokoll als ein Mechanismus für die Überwachung. Dies bedeutet, dass Sie die Serverkonfiguration, um zu ermitteln, warum die Richtlinie verletzt überprüfen sollten.

Die Verwendung der ExecuteSql() -Funktion im Rahmen der Ursache. Diese Funktion ermöglicht das Richtlinien zum Erstellen einer Bedingung ausgedrückt in Transact-SQL und Transact-SQL-Code in PBM kann auch ausgeführt werden. Deshalb standardmäßig der Code unter führt Sicherheitskontext ein gering privilegiertes Konto ## MS_PolicyTsqlExecutionLogin ##. Das Konto ## MS_PolicyTsqlExecutionLogin ## Berechtigungen für jede Datenbank Msdb -Datenbank nicht angegeben. Beim Ausführen ein geplanten Auftrags ist einer der ersten, die automatisch hinzugefügt Anweisung < > [DBName] verwenden . Diese Anweisung wird die richtlinienüberprüfung fehlschlägt.

Wenn Sie diesen Auftrag manuell ausführen, verwendet SQL Server die aktuellen Sicherheitskontext. Als Abfragen in der Berechtigung wird dieser Auftrag ordnungsgemäß ausgewertet.

PROBLEMUMGEHUNG

Um dieses Problem zu beheben, gewähren Sie dem Konto ## MS_PolicyTsqlExecutionLogin ## die erforderlichen Berechtigungen, um die erforderlichen Anweisungen ausgeführt.

Zum Beispiel reicht die public-Rolle für bestimmte Abfragen ausführen. Diese Rolle kann basierend auf Unternehmen und Richtlinien ggf. geändert werden. Allerdings ist es sehr unwahrscheinlich ändern, wie dies aus Sicherheitsgründen beabsichtigt.

Weitere Informationen

Weitere Informationen über die ExecuteSQL() -Funktion finden Sie auf der folgenden MSDN-Website:

Einführung in die ExecuteSQL()-Funktion

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern
Schulungen erkunden
Neue Funktionen als Erster erhalten
Microsoft Insider beitreten

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?

Vielen Dank für Ihr Feedback!

×