Lektion 2: Erstellen und Anwenden einer Richtlinie für Benennungsstandards
Gilt für: SQL Server
Einige Typen von richtlinienbasierten Verwaltungsrichtlinien können Trigger erstellen, um die zukünftige Einhaltung der Richtlinie zu erzwingen. In dieser Lektion erstellen Sie eine Richtlinie, die einen Benennungsstandard für Tabellen erzwingt. Anschließend testen Sie die Richtlinie, indem Sie versuchen, eine Tabelle zu erstellen, die gegen die Richtlinie verstößt.
Voraussetzungen
Zur Durchführung dieses Tutorials benötigen Sie SQL Server Management Studio sowie Zugriff auf einen Server, auf dem SQL-Server ausgeführt wird.
- Installieren Sie SQL Server Management Studio.
- Installieren Sie die SQL Server 2017 Developer Edition.
Erstellen der Datenbank „Finance“
Öffnen Sie ein Abfragefenster in Management Studio, und führen Sie die folgende Anweisung aus:
CREATE DATABASE Finance ; GO
Klicken Sie im Objekt-Explorer auf Datenbanken, und drücken Sie anschließend F5, um die Liste der Datenbanken zu aktualisieren.
Erstellen der Tabellenbedingung „Finance“
- Erweitern Sie im Objekt-Explorer Verwaltung, erweitern Sie Richtlinienverwaltung, klicken Sie mit der rechten Maustaste auf Bedingungenund anschließend auf Neue Bedingung.
Geben Sie im Dialogfeld Neue Bedingung erstellen im Feld Name den Namen Finanz_Tabellenein.
- Wählen Sie in der Liste Facet die Option Mehrteiliger Nameaus.
- Geben Sie im Bereich Ausdruck im Feld Feld die Option @Name aus, wählen Sie im Feld Operator die Option Like aus, und geben Sie in das Feld Wert den Namen
'fintbl%'
ein, um zu erzwingen, dass alle Tabellennamen mit den Buchstaben fintbl anfangen. - Geben Sie auf der Seite Beschreibung die Beschreibung Finanz_Tabellen-Namen müssen mit fintbl beginnenein, und klicken Sie anschließend auf OK , um die Bedingung zu erstellen.
Erstellen der Richtlinie „Finance Name“
- Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Richtlinienund anschließend auf Neue Richtlinie.
Geben Sie im Dialogfeld Neue Richtlinie erstellen im Feld Name den Namen Finanz_Nameein.
- Wählen Sie in der Liste Bedingung überprüfen die Option Finanz_Tabellenaus. Diese befindet sich im Abschnitt Mehrteiliger Name .
- Im Abschnitt Für wird eine Liste der Datenbankobjekte angezeigt, die diese Richtlinie anwenden könnten. Aktivieren Sie das Kontrollkästchen für Jede Tabelle.
- Wählen Sie in der Liste Aktiviert aus. (Das Feld Aktiviert gilt nicht für bedarfsgesteuerte Richtlinien.)
- Wählen Sie in der Liste Auswertungsmodus die Option Bei Änderung: Verhindernaus. Dadurch wird die Richtlinie erzwungen, indem ein Datenbanktrigger für die Datenbank Finanzen erstellt wird.
- Wählen Sie in der Liste Serverbeschränkung die Option Keineaus.
- Fügen Sie auf der Seite Beschreibung die Beschreibung „Tabellennamen in der Finance-Datenbank müssen "fintbl%" enthalten“ hinzu.
- Kehren Sie zur Seite Allgemein zurück, erweitern Sie im Bereich Jede Datenbank den Eintrag Jede, und klicken Sie anschließend auf Neue Bedingung.
Geben Sie im Dialogfeld Neue Bedingung erstellen im Feld Name den Namen Finanz_Datenbankein.
- Vervollständigen Sie im Feld Ausdruck den Ausdruck so, dass er @Name = 'Finance' umfasst, und klicken Sie anschließend auf OK, um die Bedingungsseite zu schließen.
Hinweis
Sie müssen möglicherweise mit dem Cursor aus dem Feld Wert wechseln, um die Schaltfläche OK zu aktivieren.
Wählen Sie OK aus.
Erstellen der Richtlinienkategorie „Finance“
- Erweitern Sie im Objekt-Explorer Verwaltung, klicken Sie mit der rechten Maustaste auf Richtlinienverwaltungund anschließend auf Kategorien verwalten.
Geben Sie im Dialogfeld Richtlinienkategorien verwalten unter Namedie Zeichenfolge Finanzen in das leere Feld ein, und deaktivieren Sie Datenbankabonnements beauftragen. Datenbankabonnements beauftragen zwingt jede Datenbank in der Instanz, die zu dieser Richtlinienkategorie gehörenden Richtlinien zu abonnieren. Für diese Lektion darf nur die Datenbank Finanzen die Richtlinie Finanz_Name abonnieren.
Wählen Sie OK aus.
Abonnieren der Richtlinienkategorie „Finance“
- Erweitern Sie im Objekt-Explorer Datenbanken, klicken Sie mit der rechten Maustaste auf Finanzen, zeigen Sie auf Richtlinien, und klicken Sie anschließend auf Kategorien.
- Aktivieren Sie das Kontrollkästchen Abonniert für die Kategorie Finanzen .
- Wählen Sie OK aus.
Testen der Durchsetzung der Richtlinie „Finance Name“
Öffnen Sie in Management Studio ein Abfragefenster. Führen Sie die folgenden Anweisungen aus, mit denen versucht wird, eine Tabelle zu erstellen, die gegen die Richtlinie Finanz_Name verstößt. Die Tabelle verstößt gegen die Richtlinie, da der Tabellenname nicht mit den Buchstaben fintblbeginnt.
USE Finance ; GO CREATE TABLE NewTable (Col1 int) ; GO
Beachten Sie, dass die Richtlinie das Erstellen der Tabelle verhindert und eine Informationsmeldung zurückgibt, die den Richtliniennamen liefert.
Policy 'Finance Name' has been violated by 'SQLSERVER:\SQL\SQL\SQL2017\Databases\Finance\Tables\dbo.NewTable'.
This transaction will be rolled back.
Policy condition: '@Name LIKE 'fintbl%''
Policy description: 'Tables names in the Finance database must contain 'fintbl%''.
Additional help: '' : ''
Statement: 'CREATE TABLE NewTable
(Col1 int)'.
Msg 515, Level 16, State 2, Procedure msdb.sys.sp_syspolicy_execute_policy, Line 69 [Batch Start Line 2]
Cannot insert the value NULL into column 'target_query_expression', table 'msdb.dbo.syspolicy_policy_execution_history_details_internal'; column does not allow nulls. INSERT fails.
The statement has been terminated.
Um einen gültigen Namen anzugeben, ändern Sie den Code wie folgt, und führen Sie dann erneut die Anweisung aus.
USE Finance ; GO CREATE TABLE fintblNewTable (Col1 int) ; GO
Nun wird die Tabelle erstellt.
Übernehmen der Richtlinie für den ganzen Server
Momentan hat nur die Datenbank Finanzen die Richtlinienkategorie Finanzen abonniert. In vielen Fällen ist es einfacher, die Richtlinienkategorie für den ganzen Server zu übernehmen. Erweitern Sie im Objekt-Explorer Verwaltung, klicken Sie mit der rechten Maustaste auf Richtlinienverwaltungund anschließend auf Kategorien verwalten.
Suchen Sie im Dialogfeld Richtlinienkategorien verwalten nach der Kategorie „Finanzen“, und aktivieren Sie das Kontrollkästchen Datenbankabonnements beauftragen für die Kategorie „Finanzen“.
Wählen Sie OK aus. Nun gilt die Kategorie „Finanzen“ für alle Datenbanken, aber durch die von Ihnen erstellte Bedingung ist die Richtlinie „Finanz_Name“ nur auf die Datenbank „Finanzen“ beschränkt. Dieses Beispiel zeigt, wie Sie komplexe Kombinationen von Bedingungen verwenden können, um Richtlinien so zuzuweisen, dass sie für viele Server richtig übernommen werden.
Zusammenfassung
Dieses Lernprogramm hat gezeigt, wie Sie Bedingungen, Richtlinien und Richtliniengruppen der richtlinienbasierten Verwaltung erstellen und die Kompatibilität der Ziele der richtlinienbasierten Verwaltung überprüfen können.
Nächste
Dieses Lernprogramm ist beendet. Um zum Anfang des Tutorials zurückzukehren, rufen Sie Tutorial: Verwalten von Servern mit der richtlinienbasierten Verwaltung auf.
Eine Liste der Tutorials finden Sie unter Tutorials für SQL Server 2016.
Weitere Informationen
Verwalten von Servern mit der richtlinienbasierten Verwaltung