Data

20 jan, 2010

Como obter uma organização robusta no SQL Server 2008

Publicidade

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:

  1. Facets
    (Facetas)
  2. Conditions
    (Condições)
  3. Policies
    (Políticas)
  4. Policy
    targets (Política alvo)
  5. 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