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