Lección 2: Crear y aplicar una directiva de normas de denominación
Se aplica a: SQL Server
Algunos tipos de directivas de administración basada en directivas pueden crear desencadenadores para exigir el cumplimiento futuro con la directiva. En esta lección, va a crear una directiva que exige una denominación estándar para tablas. A continuación, va a probar la directiva intentando crear una tabla que infrinja dicha directiva.
Requisitos previos
Para llevar a cabo este tutorial necesita tener SQL Server Management Studio y acceso a un servidor que ejecute SQL Server.
- Instale SQL Server Management Studio.
- Instale SQL Server 2017 Developer Edition.
Creación de la base de datos Finance
En Management Studio, abra un período de consulta y ejecute la instrucción siguiente:
CREATE DATABASE Finance ; GO
En el Explorador de objetos, haga clic en Bases de datosy, a continuación, presione F5 para actualizar la lista de bases de datos.
Creación de la condición Finance Tables
- En el Explorador de objetos, expanda Administración, expanda Administración de directivas, haga clic con el botón derecho en Condicionesy, después, haga clic en Nueva condición.
En el cuadro de diálogo Crear nueva condición , en el cuadro Nombre , escriba Finance Tables.
- En la lista Faceta , seleccione Nombre de varias partes.
- En el cuadro de diálogo Expresión, en el cuadro Campo, seleccione @Nombre; en el cuadro Operador, seleccione Me gusta; y en el cuadro Valor, escriba
'fintbl%'
para hacer que todos los nombres de tabla comiencen con las letras fintbl. - En la página Descripción , escriba Los nombres de tablas de finanzas deben comenzar con fintbly, a continuación, haga clic en Aceptar para crear la condición.
Creación de la directiva Finance Name
- En el Explorador de objetos, haga clic con el botón derecho en Directivasy, después, haga clic en Nueva directiva.
En el cuadro de diálogo Crear nueva directiva , en el cuadro Nombre , escriba Finance Name.
- En la lista Condición de comprobación , seleccione Finance Tables. Está en el área Nombre de varias partes .
- En el área Contra verá una lista de los objetos de base de datos que podrían aplicar esta directiva. Active la casilla de Cada tabla.
- Seleccione la lista Habilitado . (El cuadro Habilitado no se aplica a las directivas A petición ).
- En la lista Modo de evaluación , seleccione Al cambiar: impedir. Esto exigirá la directiva creando un desencadenador de base de datos en la base de datos Finance.
- En la lista Restricción de servidor , seleccione Ninguna.
- En la página Descripción, agregue la descripción "Los nombres de tabla de la base de datos Finance deben contener 'fintbl%'".
- Vuelva a la página General y, en el área Cada base de datos, expanda Cada y, a continuación, haga clic en Nueva condición.
En el cuadro de diálogo Crear nueva condición , en el cuadro Nombre , escriba Finance Database.
- En el cuadro Expresión, complete la expresión para incluir @Name = "Finance" y, después, haga clic en Aceptar para cerrar la página de la condición.
Nota:
Es posible que tenga que salir del cuadro Valor para habilitar el botón Aceptar .
Seleccione Aceptar.
Creación de la categoría de directivas Finance
- En el Explorador de objetos, expanda Administración, haga clic con el botón derecho en Administración de directivasy, después, haga clic en Administrar categorías.
En el cuadro de diálogo Administrar categorías de directivas , en Nombre, escriba Finance en el cuadro en blanco y, a continuación, anule la selección de Suscripciones de base de datos de mandatos. Suscripciones de base de datos de mandatos exigirá que cada base de datos en la instancia se suscriba a las directivas que pertenecen a esta categoría de directiva. Para esta lección, solo la base de datos Finance debería suscribirse a la directiva Finance Name.
Seleccione Aceptar.
Suscripción a la categoría de directivas Finance
- En el Explorador de objetos, expanda Bases de datos, haga clic con el botón derecho en Finance, elija Directivasy, después, haga clic en Categorías.
- Seleccione la casilla Suscrito para la categoría Finance .
- Seleccione Aceptar.
Prueba del cumplimiento de la directiva Finance Name
En Management Studio, abra un nuevo período de consulta. Ejecute las instrucciones siguientes que intentan crear una tabla que infringe la directiva Finance Name . La tabla infringe la directiva porque el nombre de tabla no comienza con las letras fintbl.
USE Finance ; GO CREATE TABLE NewTable (Col1 int) ; GO
Observe que la directiva evita que se cree la tabla y devuelve un mensaje informativo que proporciona el nombre de la directiva.
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.
Para proporcionar un nombre válido, modifique el código como sigue y ejecute la instrucción de nuevo.
USE Finance ; GO CREATE TABLE fintblNewTable (Col1 int) ; GO
Esta vez, la tabla se crea.
Aplicación de la directiva al servidor entero
Actualmente, solo la base de datos Finance se suscribe a la categoría de directiva Finance. En muchos casos, es más fácil aplicar la categoría de directiva a todo el servidor. En el Explorador de objetos, expanda Administración, haga clic con el botón derecho en Administración de directivasy, después, haga clic en Administrar categorías.
En el cuadro de diálogo Administrar categorías de directiva , busque la categoría Finance y seleccione la casilla Suscripciones de base de datos de mandatos para la categoría Finance.
Seleccione Aceptar. Ahora la categoría Finance se aplica a todas las bases de datos, pero la condición que ha creado restringe la directiva Finance Name a la base de datos Finance. De esta forma, se muestra cómo se pueden utilizar combinaciones complejas de condiciones para destinar las directivas de modo que se apliquen correctamente en muchos servidores.
Resumen
En este tutorial se ha demostrado cómo crear condiciones de la administración basada en directivas, directivas y grupos de directivas, y cómo aplicar los filtros y comprobar la compatibilidad de los destinos de la administración basada en directivas.
Siguientes
Este tutorial ha finalizado. Para volver al inicio, visite Tutorial: Administrar servidores mediante administración basada en directivas.
Para obtener una lista de tutoriales, vea Tutoriales para SQL Server 2016.
Consulte también
Administrar servidores mediante administración basada en directivas