quarta-feira, 30 de janeiro de 2008

SQL Server 2008: Declarative Management Framework (DMF) Parte 2

No ultimo post (http://sqlserver-brasil.blogspot.com/2008/01/sql-server-2008-declarative-management.html) escrevi sobre os principais objetos que compõe o DMF, neste post vou mostrar como criar uma regra para evitar o uso do prefixo SYS para criar tabela e SP_ e XP_ para criar Stored Procedure.

Criando uma Condition
O primeiro passo é criar uma Condition que irá definir as regras utilizando uma Facet. Para criar uma Condition basta abrir o Management Studio, abrir conexão com o servidor SQL Server 2008 (Relational Engine), expandir Management, clicar com o botão direito em Conditions e seleciona New Condition.

Vou utilizar a Facet Multipart Name que disponibiliza dois atributos: @Name e @Schema. Estes atributos se referem ao nome e schema de alguns objetos de banco de dados como tabelas, stored procedure, sinônimo, funções, etc. Observe na imagem abaixo que utilizei a propriedade @Name com o operador NOT LIKE, comparando com ‘sys%’, ‘sp_%’ e ‘xp_%’.



Criando uma Policy
O próximo passo é criar uma Policy utilizando a Condition criada acima, definindo o modo como as regras será implantadas. Para criar uma Policy basta clicar como o botão direito na pasta Policy e selecionar New Policy.

Na janela New Policy definimos o nome em Name e selecionamos a Condition criada acima Landry Prefixos Proibidos. Em Against targets irá aparecer a lista de objetos que esta Condition se aplica, basta marcar StoredProcedure e Table. Você poderá clicar em Every e filtrar os objetos, por exemplo, aplicar a regra só em um banco de dados, ou apenas bancos de dados que comecem com ‘RH%’.

Em Execution Mode vamos escolher On Change – Prevent que utiliza Trigger DDL para aplicar a restrição no momento da criação do objeto. Existe ainda a possibilidade de aplicar a regra apenas a servidores (instâncias) específicos, como por exemplo, servidores 64bits.

Testando o Policy
Para testar a regra criada acima basta tentar criar uma tabela com prefixo SYS ou uma Stored Procedure iniciando com SP_ ou XP_, veja na figura abaixo a mensagem de erro.

Acredito que este recurso será muito utilizado no SQL Server 2008, principalmente para forçar a adoção de boas práticas na configuração e convenção de nomes de objetos.

Até o próximo post,
Landry.

Um comentário:

Anônimo disse...

Por Favor poderia me dizer como eu faço para poder se conectar ao MS SQL SERVER 2005?

estou tendo poblemas por que nunca tinha usado o MS SQL...

queria sabe o que eu devo fazer para criar uma conexão, na janela de nova conexão tem onde escreve o nome do servidor(Server Name) o que eu devo colocar la?

queria cria um banco de dados de um jogo online e em local hots mesmo...

ficaria muito grato se podese responder essa pergunta de iniciante!

qualquer coisa meu e-mail é:
linkin_park_jun@hotmail.com