martes, 8 de enero de 2013

SQL Server: Modos de evaluación de directivas

En el artículo "SQL Server: Uso de directivas y condiciones para saber si hay tablas sin índice cluster" del 25 de diciembre os indicaba que existen varios modos de evaluación de directivas, hoy toca explicar en qué consiste cada uno de los cuatro existentes:

  1. On demand, la directiva se evalúa cuando lo especifica el usuario (de forma manual).

  2. On schedule, mediante un trabajo de SQL Server se especifica la periodicidad con la que se evalúa la directiva (automático).

  3. On change: log only, utiliza la notificación de eventos para evaluar la directiva cuando algún cambio relevante sucede (automático).

  4. On change: prevent, utiliza DDL triggers para detectar y deshacer las operaciones que provocan la violación de directivas definidas (de forma automática). Para que este modo de evaluación funcione es necesario que estén habilitados en el servidor los triggers anidados (nested triggers), podéis encontrar información al respecto en el siguiente enlace del MSDN.

En la siguiente imagen podemos ver cómo especificamos el modo de evaluación de la directiva cuando creamos/modificamos una.


También, tal y como comentaba en el artículo citado anteriormente, los modos de evaluación de directivas dependen de la faceta sobre la que se aplica la condición. A destacar:

Para saber los modos de evaluación de directivas de cada faceta es importante tener en cuenta:
  1. La siguiente consulta nos permite saber qué modo de evaluación de directivas aplica a cada faceta.

    -- Modos de evalución por faceta
    SELECT name AS Faceta, 
     CASE execution_mode
     WHEN 7 THEN 'On change: prevent'
     WHEN 6 THEN 'On change: log only'
     WHEN 4 THEN 'On schedule'
     WHEN 0 THEN 'On demand'
     ELSE 'Undefined'
     END AS ModoEvaluacion
    FROM msdb.dbo.syspolicy_management_facets 
    order by execution_mode
    
    Nos devuelve el siguiente conjunto de resultados:


    De este modo, por ejemplo, podemos definir directivas para prevenir que se creen stored procedures cuyo nombre no comience por 'usp' pero no podemos definir directivas para prevenir que se creen tablas cuyo nombre no comience por 'tbl'.

  2. Unas pocas directivas soportan el modo de evaluación 'On change: prevent', algunas más el On change: log only, unas cuantas más el On schedule y todas el On demand. El siguiente gráfico muestra mejor el concepto. Sólo soportan los modos de evaluación 'On Change' aquellas directivas relacionadas con facetas que tienen cobertura de eventos DDL.


Y hasta aquí el artículo de hoy, espero que os haya sido interesante, dentro de areaTIC puedes encontrar otros artículos, no dudes en consultar nuestro archivo; también puedes seguirnos por RSS o las principales redes sociales (twitter, facebook, linkedin...)


LECTURAS RELACIONADAS RECOMENDADAS POR AREATIC.NET

No hay comentarios:

Publicar un comentario en la entrada