Atualmente um dos maiores
objetivos de empresas é possuir uma plataforma ao mesmo tempo organizada e robusta. Sendo assim, o SQL Server 2008 nos trouxe o
framework Policy Management, também conhecido como Declarative Management Framework, que tem por objetivo manter os dados nas regiões pré-definidas pelo
usuário.
Componentes do Policy Management
Existem
cinco componentes fundamentais que englobam o framework Policy
Managemen. Estes componentes podem ser usados para
criação e verificação de condições. São eles:
- Facets
(Facetas) - Conditions
(Condições) - Policies
(Políticas) - Policy
targets (Política alvo) - Policy
categories (Categorias de Política)
01. Facets
As facetas
podem ser descritas como objetos padrões que automaticamente estão
disponíveis para o uso após a instalação do aplicativo SQL Server
2008. Neste caso, as facetas definem o tipo de objeto ou opção
assinalada para: Banco de dados, Indexes, Endpoint, entre outros.
Existem aproximadamente 74 facetas disponíveis, são elas implementadas
por .NET assemblies possuindo suas propriedades únicas para cada
uma.
Todos os
objetos do framework Policy Management estão armazenados no
banco de dados msdb, e as facetas podem ser ilustradas de duas formas:
uma delas utilizando o comando dbo.syspolicy_management_facets, ou
então, utilizando o SQL Server Management Studio (SSMS).
02. Conditions
As condições
têm por objetivo irem mais além do que as facetas oferecem, ou seja,
podemos definir expressões Transact-SQL avançadas utilizando
operadores =, <>, LIKE, NOT LIKE, IN ou NOT IN. Por exemplo, a
cláusula WHERE nos garante a filtração dos dados para chegarmos a
um determinado ponto utilizando menos recurso de processador, as
condições são similares, todavia as condições são verificadas
em um único passo.
03. Policy
Targets
A política alvo tem por objetivo principal a
efetuação de inúmeras condições as quais serão executadas em
instâncias remotas, por exemplo: nosso servidor está localizado em
Fortaleza, temos 2 Filiais atualmente localizadas em São Paulo e Rio
de Janeiro, podemos aplicar as políticas padrões do servidor
central (Fortaleza) para ambos as filiais citadas acima.
04. Policies
As
políticas estão assinaladas a uma única condição. Os objetivos
principais são verificar uma determinada circunstância e reforçar
uma determinada cláusula.
As políticas podem ser executadas das seguintes formas:
- On schedule – a execução é feita por um agendamento definido pelo usuário, neste
caso é utilizado um job através do SQL Server Agent. - On demand – disponibiliza a política quando é feita a execução pelo usuário.
- On change, prevent
– efetua a criação de um gatilho data definition language (DDL)
impedindo que ocorra alguma mudança inesperada. - On change, log only – se por acaso ocorrer alguma mudança, automaticamente é criado um
evento de notificação.
05. Policy
Categories
As categorias de
política podem ser usadas para um ou mais grupo de uma única
unidade, a categoria padrão se não assinalada será DEFAULT. Para
verificar ou forçar uma determinada política é necessária a
criação de uma assinatura para uma ou mais políticas.
Posso
importar ou exportar políticas?
Sim,
é possível fazer isso, as políticas e as condições podem ser
exportadas para arquivos formados e, além disso, pode-se também
importar através deles. O SQL Server possui 53 políticas as quais
estão localizadas no diretório Microsoft SQL
Server\100\Tools\Policies, dentre as existentes podemos
categoriza-las como:
- 50 Políticas direcionadas a Engine do Banco
de Dados; - 2 Políticas direcionadas ao Reporting Services;
- 1
Política direcionada ao Analysis Services.
Como
importar e exportar as políticas
Podemos
importar/exportar as políticas utilizando a janela Object Explorer a
qual localiza-se na parte interior do SQL Server Management Studio
(SSMS). Clique com o botão direito em Policies > Import
Policy. Para exportar as políticas devidamente, é necessário
ter pelo o menos uma, sendo assim crie a sua política, em seguida
clique com o botão direito encima e Export Policy, a figura abaixo
ilustra de forma clara, veja:
Figura
1.0 – Object Explorer Policies
Exemplo
Prático
Este
exemplo tem por objetivo forçar a integridade dos dados, ou seja,
todas as tabelas em nosso banco de dados atual terão que iniciar com
o prefixo tbl_. Caso a criação de alguma tabela se iniciar fora
desse padrão, a aplicação não será sucedida, ou melhor, irá
sofrer um rollback, caso contrário, aplicação irá sofrer um
committed e assim será bem sucedida a transação pela qual está
dentro do padrão adotado pela empresa.
1º)
Clique em Management,
em seguida Policy
Management, após isto
clique com o botão direito em Conditions
>
New Condition.
Figura
1.1 – Object Explorer Conditions
2º)
Defina as seguintes características: Name: PM_Table (ou
desejado), Facet: Multipart Name, abaixo do campo Field
selecione @Name, em Operator selecione LIKE,
e por último emValue s digite ‘tbl_%’, e por fim
clique em OK.
Definição: Essa janela tem por
objetivo definirmos qual o padrão que a política irá adotar, neste
caso irá se chamar: PM_Table, a faceta por nome Multipart Name, e
por último foi definido que a variável @Name, ou seja, o nome de
cada tabela terá que se iniciar com o prefixo tbl_.
Figura
1.2 (Conditions)
NOTA: Veja que após
termos clicado em Ok foi exibida a nossa condição na raiz Conditions,
a imagem abaixo ilustra de forma clara.
Figura
1.3 – Conditions PM_Table
3º) Estando posto ao
nó Policy Management, clique com o botão direito em
Policies, em seguida New Policy.
4º) Defina as
seguintes propriedades, Name: PM_TableComplete, habilite a
opção Enabled, em Check Condition selecione a condição
conforme criamos nos passos anteriores, marque a opção Table,
em Evaluation Mode selecione On Change: prevent, clique na aba
Description, em seguida defina uma descrição conforme pode
nos ajudar futuramente, e por último clique em OK.
Figura
1.4 – New Policy
Figura
1.5 – New Policy – Description
Ótimo, nossa política
está completamente finalizada, se por acaso algum usuário tentar
efetuar alguma instrução Transact-SQL juntamente com a cláusula
CREATE TABLE sem adicionar os seguintes parâmetros: tbl_, a aplicação
irá sofrer um rollback, veja o exemplo abaixo:
Figura
1.6 – Messages
Como pode ser visto,
aplicação não foi bem sucedida, isto devido a nossa política
conforme criamos nos passos anteriores, veja que com este framework
temos uma grande facilidade em definirmos um certo padrão e utilizá-lo de uma forma fácil/clara.
Conclusão
Este artigo teve por
objetivo a exibição de um novo framework do SQL Server 2008, Policy
Management, que tem por objetivo forçar a integridade dos
dados em uma aplicação comercial. Mostramos quais
são os componentes que englobam este framework, como devemos
exportar/importar políticas, e por último vimos um exemplo prático
de como aplicarmos uma determinada política em um ambiente real.
[]´s