Como obter uma organização robusta no SQL Server 2008
Atualmente um dos maiores
objetivos de empresas é possuir uma plataforma ao mesmo tempo organizada e robusta. Sendo assim, o SQL↳SQL64 conteúdosSQL Server – Como evitar SQL Injection?Data · mai 2019Azure SQL DB Managed InstanceData · abr 2019SQL Server – Como evitar SQL Injection? Pare de utilizar Query Dinâmica como EXEC(@Query)Data · abr 2019Ver tudo em Data → 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↳.NET113 conteúdosNovidades do .NET 9 – o tipo genérico OrderedDictionaryDev (Back & Front) · dez 2024Novidades .NET 10: novas formas de uso do .NET CLIDev (Back & Front) · dez 2025Novidades do .NET 5: implementando um proxy reverso com YARP + ASP.NET 5Dev (Back & Front) · nov 2020Ver tudo em Dev (Back & Front) → 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








Cezar Taurion
John Calistro





