Banco de Dados - SQL Server

DMF - Declarative Management Framework no SQL Server 2008

O Declarative Management Framework [DMF] é uma ferramenta nativa que integra o pacote de novas soluções do SQL Server 2008 e se propõe a auxiliar na criação de padrões e políticas de utilização do banco de dados, seguindo padrões definidos pela equipe que gerencia o SQL Server na empresa.

por Diego Nogare



O Declarative Management Framework [DMF] é uma ferramenta nativa que integra o pacote de novas soluções do SQL Server 2008 e se propõe a auxiliar na criação de padrões e políticas de utilização do banco de dados, seguindo padrões definidos pela equipe que gerencia o SQL Server na empresa. Após sua configuração, o desenvolvimento passa a seguir as regras estabelecidas e caso algum ponto seja diferente do que foi configurado, o Database Engine não permite que o script seja concluído e exibe uma mensagem dizendo que as regras foram violadas e que a transação sofrerá um rollback.

Estas políticas são completamente flexíveis e adaptáveis a cada empresa, por exemplo, é possível definir o padrão de nomes dos objetos do banco, definir uma obrigatoriedade de schema ou usuário, ou especificar que algum objeto que não pode ser utilizado em determinadas situações... Estas normas geralmente são definidas pela equipe de Database Administrator [DBA] e a utilização é feita pelos Database Developers [DBD]. Mas nada impede que outros papéis configurem e utilizem o banco e as políticas implantadas.

Um dos pontos fortes desta ferramenta é a possibilidade da replicação das políticas criada no Declarative Management Framework para todo o parque de servidores, selecionando os servidores que sofrerão as alterações, deixando a administração para todos os servidores especificados com a mesma política. E caso seja feita uma alteração em alguma regra da política, todos os servidores que estiverem sob aquela configuração, automaticamente sofrerão as alterações e passarão a seguir as novas regras.

É possível tomar conhecimento de algum procedimento que infringiu as políticas, também configuradas por atitudes e ações. O SQL Server permite configurar o DMF para enviar um e-mail para o DBA, por exemplo, quando alguém criar uma tabela fora dos padrões de nomenclatura, ou criar um usuário que foi atribuído ao perfil de S.A. no banco. Tudo isso configurado através do DMF e replicado para quantos servidores forem necessários.

Antes de partir para o exemplo da criação de algumas políticas, vale a pena entender o que significa os itens que serão trabalhados no DMF do SQL Server 2008, e para explicar estes itens, vamos até a parte inicial do DMF. Veja na Figura 1, os itens que serão explicados.

Figura 1. Menu onde se encontra o DMF.

Conecte-se no Banco de Dados, abra a Object Explorer (View >> Object Explorer) vá até o menu Management e expanda suas opções. O DMF encontra-se dentro de Policy Management. São os três itens que aparecem no menu.

Após expandir o menu, vamos entender o que são cada uma das opções que aparecem:

Policies: Pode-se entender que as policies são as políticas aplicadas, baseadas nas condições (conditions) e nos objetos (facet).

Conditions: São as condições de uma determinada política, aplicada a um facet. É possível definir várias políticas em um mesmo facet, e serão agrupadas como condição.

Facet: Os facets são os objetos de banco de dados que vamos trabalhar. Quando os facets forem expandidos, será possível encontrar vários nomes já conhecidos como Table, Login, Schema, e vários outros... Representando praticamente todos os objetos existentes no banco de dados.

Agora que já vimos o que são cada um dos grupos de configuração do DMF, vamos montar uma política de exemplo.

Neste exemplo, vamos criar uma política de nomenclatura para as tabelas. São dois caminhos que podem ser seguidos:

1) Começaremos escolhendo qual será o objeto (facet) que terá nossa política. Neste caso será Table. Clique com o botão direito em cima de Table e aponte o mouse para New Condition. Veja a Figura 2.

Figura 2. Nova condição através dos Facets.

2) Ir diretamente em Conditions, e criar uma nova condição. Clicando com o botão direito e selecionando New Condition. Veja a Figura 3.

Figura 3. Nova condição através de Condition.

Em ambos os casos o resultado será o mesmo, a única diferença é que pela primeira opção o facet já estará selecionado, e pela segunda opção, será necessário escolher qual será o facet. Mas isso não muda nada no final. Vamos utilizar o exemplo da segunda opção, para selecionarmos o facet manualmente.

Após clicar em New Condition, a tela de criação de condições será apresentada, e o primeiro campo que é solicitado o preenchimento é o campo Name, que será o nome de identificação desta política.

Neste caso, pode ser dado qualquer nome que lhe seja de fácil associação, como vamos trabalhar com o nome da tabela, sugiro que seja “Nomenclatura de Tabela”. O campo exatamente abaixo do Name é o Facet (objeto) que será aplicada esta configuração que está sendo criada. Escolha a opção Table. Abaixo da escolha da Facet, vem o grande momento, montar a condição da política. Uma grid é apresentada, e as condições são montadas utilizando os itens das colunas. Na primeira linha, não é possível colocar um AND ou OR, justamente porque estamos na primeira linha. O preenchimento passará então a ser feito da segunda coluna pra frente. A coluna Field é referente à variável que sofrerá a validação, como será sobre o nome da tabela, o campo Field selecionado deverá ser o @Name. A coluna Operator é para definir qual ação ocorrerá com aquela variável, selecione a opção LIKE (semelhante ao coringa LIKE do T-SQL). E por final a coluna Value que pode receber uma outra variável ou algum texto, neste caso, vai receber o texto tbl%’    (lembre-se que estamos trabalhando com T-SQL, então o texto deve estar entre apóstrofos [aspas simples]). Veja a Figura 4, como seria esta tela já com as configurações apresentadas acima.

Figura 4. Criação da condição do nome da tabela.

Reparar no menu Conditions que agora existirá uma nova condição que não existia antes, esta é a condição que acabamos de criar. Veja na Figura 5 este item.

Figura 5. Menu Conditions com o item criado.

Pronto, 50% do trabalho já está feito. Utilizar uma Facet pronta para criar uma condição!

Agora vamos para a segunda parte do trabalho, que é tão simples quanto a primeira. Será criada a política, escolhendo a condição que fará parte dela.

Neste passo será criada uma política para os nomes de objetos. Vamos adicionar a condição criada, e fazer alguns testes. Para isso, clique com o botão direito do mouse em Policy e vá em New Policy, uma tela de criação de políticas será aberta. Veja a Figura 6 o menu.

Figura 6. Menu New Policy.

Nesta tela será adicionada o nome da política, e qual condition ela utilizará. É possível restringir algum servidor para não ter esta política aplicada, para isso, será necessário criar uma condition utilizando a facet “Server”.

O nome desta política é o mesmo da condition de tabela, Nomenclatura de Tabela, que precisa ser colocado no campo Name. Na comboBox de Check Condition escolha a opção Nomenclatura de Tabela, que é onde esta política atuará. Novamente, é possível selecionar algum servidor ou banco de dados que não terão estas políticas, mas isso gera material para outro artigo futuro. Tenha certeza que o item Evaluation Mode esteja marcado como On Demand, que executará a política sempre que algum objeto do Facet for alterado. Acompanhe na Figura 7 a tela de novas políticas.

Figura 7. Criação de nova política

Depois de clicar no botão OK, a política será criada mas ainda não será executada, o passo para executar é apresentado mais a frente. Após criar esta política, o menu de Policy será apresentado com o item existente. Veja este item na Figura 8.

Figura 8. Menu Policies com os item criado.

Agora que a política está criada é possível testar, para isso, clique com o botão direito do mouse na política criada e aponte para Evaluate. Este item está apresentado na Figura 9.

Figura 9. Item Evaluate na política criada.

Ao clicar neste item, a política é executada com base nas condições existentes e seus facets correspondentes. A tela que é apresentada mostra os detalhes do que foi executado, o que está dentro das normas estabelecidas, ou o que não está. Os itens analisados que são satisfatórios ficam assinalados com um “check” verde, e os itens que não foram aprovados pela analise do DMF, fica assinalado com uma cruz vermelha. Acompanhe a Figura 10 estes itens aprovados e reprovados.

Figura 10. Resultado da análise do DMF.

É possível ver os detalhes dos resultados de retorno, para isso, vá até a linha do Target Details que deseja consultar e clique no texto View..., uma nova tela será aberta apresentando a mensagem e uma breve explicação do motivo.

Este é o conceito do DMF, criar políticas que serão aplicadas em um ou mais servidores e bancos de dados para manter o desenvolvimento dentro dos trilhos. Com isso, concluímos mais um artigo sobre SQL Server 2008.

Até o Próximo.

Diego Nogare

Diego Nogare - Graduado em Ciência da Computação e Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvimento Web com .NET, Colaborador do Portal Linha de Código, co-Líder do grupo de usuários Codificando .NET, co-Líder dos Microsoft Student Partners [MSP] de São Paulo e Microsoft Most Valuable Professional [MVP] em SQL Server, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em eventos da Microsoft, Codificando .NET e INETA BR, mantém o site: www.diegonogare.net.