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.

Erstellen der Datenbank „Finance“

  1. Öffnen Sie in Management Studio ein Abfragefenster, und führen Sie die folgende Anweisung aus:

    CREATE DATABASE Finance ;  
    GO  
    
  2. 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“

  1. Erweitern Sie im Objekt-Explorer Verwaltung, erweitern Sie Richtlinienverwaltung, klicken Sie mit der rechten Maustaste auf Bedingungenund anschließend auf Neue Bedingung.

New condition

  1. Geben Sie im Dialogfeld Neue Bedingung erstellen im Feld Name den Namen Finanz_Tabellenein.

    1. Wählen Sie in der Liste Facet die Option Mehrteiliger Nameaus.
    2. Wählen Sie im Bereich "Ausdruck" im Feld @Name; im Feld "Operator" die Option "Gefällt mir" aus, und geben 'fintbl%' Sie im Feld "Wert" ein, damit alle Tabellennamen mit den Buchstaben fintbl beginnen.
    3. 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.

    Finance tables condition

Erstellen der Richtlinie „Finance Name“

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Richtlinienund anschließend auf Neue Richtlinie.

New policy

  1. Geben Sie im Dialogfeld Neue Richtlinie erstellen im Feld Name den Namen Finanz_Nameein.

    1. Wählen Sie in der Liste Bedingung überprüfen die Option Finanz_Tabellenaus. Diese befindet sich im Abschnitt Mehrteiliger Name .
    2. 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.
    3. Wählen Sie in der Liste Aktiviert aus. (Das Feld Aktiviert gilt nicht für bedarfsgesteuerte Richtlinien.)
    4. 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.
    5. Wählen Sie in der Liste Serverbeschränkung die Option Keineaus.
    6. Fügen Sie auf der Seite Beschreibung die Beschreibung „Tabellennamen in der Finance-Datenbank müssen "fintbl%" enthalten“ hinzu.
    7. Kehren Sie zur Seite Allgemein zurück, erweitern Sie im Bereich Jede Datenbank den Eintrag Jede, und klicken Sie anschließend auf Neue Bedingung.

    Create new Finance Name policy

  2. Geben Sie im Dialogfeld Neue Bedingung erstellen im Feld Name den Namen Finanz_Datenbankein.

    1. 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.

    Create new 'finance database' condition

    Hinweis

    Sie müssen möglicherweise mit dem Cursor aus dem Feld Wert wechseln, um die Schaltfläche OK zu aktivieren.

  3. Klicken Sie auf OK.

Erstellen der Richtlinienkategorie „Finance“

  1. Erweitern Sie im Objekt-Explorer Verwaltung, klicken Sie mit der rechten Maustaste auf Richtlinienverwaltungund anschließend auf Kategorien verwalten.

Manage categories

  1. 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.

    Manage policy categories

  2. Klicken Sie auf OK.

Abonnieren der Richtlinienkategorie „Finance“

  1. 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.

Finance policy categories

  1. Aktivieren Sie das Kontrollkästchen Abonniert für die Kategorie Finanzen .

Subscribed to finance policy

  1. Klicken Sie auf OK.

Testen der Durchsetzung der Richtlinie „Finance Name“

  1. Ö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.
  1. 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

  1. 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.

  2. Suchen Sie im Dialogfeld Richtlinienkategorien verwalten nach der Kategorie „Finanzen“, und aktivieren Sie das Kontrollkästchen Datenbankabonnements beauftragen für die Kategorie „Finanzen“.

  3. Klicken Sie auf OK. 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