Sql Server 2008 Policies - un esempio

Una delle possibili applicazioni del Policy-Based Management di Sql Server 2008 è il rispetto delle naming conventions nel disegno dei database. Vediamo un semplice esempio.

--creo un database di test
USE [master]
GO

CREATE DATABASE [testPolicies]
GO

--creo lo schema che mi servirà per testare la policy
USE [testPolicies]
GO

CREATE SCHEMA [dev] AUTHORIZATION [dbo]
GO

creo una condition chiamata "condNomeTabella" dove specifico che i nomi delle tabelle dovranno iniziare per "tbl" e dovranno appartenere allo schema "dev" .

condition

creo un policy chiamata "polNomeTabella", la applico al database di test creando una condizione apposita. Seleziono l'opzione "On change:prevent" per impedire a chi crea le tabelle di violare la policy.

policy

Delle seguenti istruzioni CREATE TABLE solo la terza andrà a buon fine perchè sia il nome tabella sia lo schema saranno aderenti ai requisiti.

--violiamo la policy per il nome tabella
CREATE TABLE [dev].[testtable]
(
    idTable int,
    field1 varchar(50),
    field2 varchar(50)
)
--violiamo la policy per lo schema
CREATE TABLE [dbo].[tblTest]
(
    idTable int,
    field1 varchar(50),
    field2 varchar(50)
)

--OK, l'istruzione verrà eseguita correttamente
CREATE TABLE [dev].[tblTest]
(
    idTable int,
    field1 varchar(50),
    field2 varchar(50)
)

Informazioni aggiuntive

https://msdn.microsoft.com/en-us/library/bb510408.aspx