Man kennt das ja: DB angelegt, ein paar Kollegen halten sich nicht an die Namenskonvention für die DB-Objekte.
Darum habe ich heute ein paar Minuten Zeit investiert und mich mal mit den Richtlinien/Policies des SQL Server beschäftigt.
Dabei sind mir v.a. folgende Artikel untergekommen:
- Verwalten von Servern mit der richtlinienbasierten Verwaltung
- SQL Server 2008 – Getting tough with Policy Management
Mit der schönen Abfrage …
SELECT facet.name as ‘Facet Name’,
OnDemand = CASE facet.execution_mode & 4
WHEN 4 THEN ‘On Demand; On Schedule’
END,
OnChangeLogOnly = CASE facet.execution_mode & 2
WHEN 2 THEN ‘On Change, Log Only’
END,
OnChangePrevent = CASE facet.execution_mode & 1
WHEN 1 THEN ‘On Change, Prevent’
END
FROM msdb.dbo.syspolicy_management_facets facet
… lässt sich schön Abfragen, welche Facets (ich würde das mal als ZielObjekte bezeichnen) bestimmte Evaluation Modi unterstützen.
In meinem Fall wollte ich z.B. erzwingen, dass Tabellennamen in der Datenbank DB1 immer mit tDb1 beginnen. Leider scheint genau dieses über die Policies nicht unterstützt zu sein, da dafür der Evalutation Mode On Change: prevent verwendet können werden müßte.
Es kann vermutlich nur über DDL Trigger realisiert werden.
Tags: Policy, Richtlinie