Mar 14 2011

Desc/Comments no SQL Server

Category: SQL ServerSuzuki @ 08:54

Sabe aquele campo no MySql ou no Oracle destinando a você colocar um comentário referente a um campo ou tabela?
E você esta trabalhando com o SQL Server e pensou em documentar a base de dados da mesma forma, porém o SQL Server tem isso?
A resposta é sim! Ao menos a partir da versão 2005.


No SQL Server é um pouco diferente, porem existe essa funcionalidade. O nome ou melhor dizendo o termo referente é lista de propriedades estendidas (extended property), a maneira de utilizar esta função de documentar é através de procedures do sistema.
Nesta postagem irei mostrar como criar a tabela, inserir comentários para a tabela e como inserir comentários em colunas, mostrarei também como consultar estas informações. Para esta postagem utilizarei o SQL Server 2005 Express com o Management Studio.

Vamos para a ação.

Script para criar a tabela (uma tabela bem simples, já utilizada aqui no site):

  1. CREATE TABLE [DBO].[CLIENT](   
  2.     [ID] [INT] IDENTITY(1,1) NOT NULL,   
  3.     [NAME] [VARCHAR](30) NOT NULL,   
  4.     CONSTRAINT [PK_CLIENT] PRIMARY KEY CLUSTERED   
  5.     (   
  6.         [ID] ASC  
  7.     )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON,   
  8.   
  9. ALLOW_PAGE_LOCKS  = ONON [PRIMARY]   
  10. ON [PRIMARY]  

Agora que temos uma tabela, basta adicionarmos um comentário para a tabela e para os campos e a resposta para isso é sys.sp_addextendedproperty (essa procedure irá adicionar a propriedade entendida a um objeto) se quiser mais detalhes sobre sp_addextendedproperty veja em .

Vamos adicionar o seguinte comentário parar a tabela (Table of Clients, used to save clients names.), note que o mesmo é atribuído através do parâmetro @value:

  1. --COMMENTS IN CLIENT TABLE   
  2. EXEC sys.sp_addextendedproperty    
  3.      @name=N'MS_Description',    
  4.      @value=N'Table of Clients, used to save clients names. ' ,    
  5.      @level0type=N'SCHEMA',   
  6.      @level0name=N'dbo',    
  7.      @level1type=N'TABLE',   
  8.      @level1name=N'CLIENT'  
  9. GO  

Agora vamos fazer o mesmo com as colunas da tabela de clientes.

Note que o parâmetro @level2type defini que será uma coluna, no @level2name defini o nome da coluna, na primeira execução é a coluna ID e na segunda é a coluna NAME e o @value ainda defini a descrição.

Seguem os comandos:

  1. --COMMENTS IN COLUMN OF CLIENT TABLE   
  2. EXEC sys.sp_addextendedproperty    
  3.      @name=N'MS_Description',    
  4.      @value=N'Unique identifier of Clients table' ,    
  5.      @level0type=N'SCHEMA',   
  6.      @level0name=N'dbo',    
  7.      @level1type=N'TABLE',   
  8.      @level1name=N'CLIENT',    
  9.      @level2type=N'COLUMN',   
  10.      @level2name=N'ID'  
  11. GO   
  12.   
  13. --COMMENTS IN COLUMN OF CLIENT TABLE   
  14. EXEC sys.sp_addextendedproperty    
  15.      @name=N'MS_Description',    
  16.      @value=N'Name of Clients.' ,    
  17.      @level0type=N'SCHEMA',   
  18.      @level0name=N'dbo',    
  19.      @level1type=N'TABLE',   
  20.      @level1name=N'CLIENT',    
  21.      @level2type=N'COLUMN',   
  22.      @level2name=N'NAME'  
  23. GO  

Ok! Está pronto. Para consultar o comentário da tabela e das colunas precisaremos de uma função.

A FN_LISTEXTENDEDPROPERTY é responsável por nos retornar as propriedades estendidas dos objetos, se você deseja obter detalhes veja .

Seguem os selects para consultarmos os comentários:

  1. --return table coments and others   
  2. SELECT *   
  3.   FROM FN_LISTEXTENDEDPROPERTY ('MS_DESCRIPTION''SCHEMA''DBO''TABLE'DEFAULTNULLNULL)   
  4.  WHERE OBJNAME = 'CLIENT'  
  5.   
  6. --return columns comments   
  7. SELECT *   
  8.   FROM FN_LISTEXTENDEDPROPERTY ('MS_DESCRIPTION''SCHEMA''DBO''TABLE''CLIENT''COLUMN'DEFAULT)  

E o resultado será:

ExtendedProperty_1

Observação: Quando executados estes comandos eles adicionam dados na tabela sys.extended_properties.
Podemos consultar assim:

  1. SELECT *    
  2.   FROM sys.extended_properties  

Ok! Mas e se você quiser deletar uma propriedade estendida de uma coluna ou tabela? Ou se quiser alterar uma propriedade estendida?

Existem duas procedures para auxiliar: a sys.sp_dropextendedproperty e a sys.sp_updateextendedproperty.

Abaixo segue script para deletar e alterar a propriedade estendida da coluna NAME (recomendo que você vá consultando com os selects passados anteriormente para conferir os resultado):

  1. --REMOVE COMMENTS IN COLUMN OF CLIENT TABLE   
  2. EXEC sys.sp_dropextendedproperty    
  3.      @name=N'MS_Description',    
  4.      --@value=N'Name of Clients.' ,    
  5.      @level0type=N'SCHEMA',   
  6.      @level0name=N'dbo',    
  7.      @level1type=N'TABLE',   
  8.      @level1name=N'CLIENT',    
  9.      @level2type=N'COLUMN',   
  10.      @level2name=N'NAME'  
  11. GO   
  12.   
  13. --UPDATE COMMENTS IN COLUMN OF CLIENT TABLE   
  14. EXEC sys.sp_updateextendedproperty     
  15.      @name=N'MS_Description',    
  16.      @value=N'Name of Clients. (EXTRA INFO).' ,    
  17.      @level0type=N'SCHEMA',   
  18.      @level0name=N'dbo',    
  19.      @level1type=N'TABLE',   
  20.      @level1name=N'CLIENT',    
  21.      @level2type=N'COLUMN',   
  22.      @level2name=N'NAME'  
  23. GO  

E se você deseja consultar mais dados referente a tabela colunas, tamanho, etc.

Podemos utilizar duas procedures: sys.sp_help e sys.sp_columns.

Mais detalhes sobre sp_help pode ser encontrado em .

Mais detalhes sobre sp_columns pode ser encontrado em .

Ao executar a procedure.

  1. sys.sp_help CLIENT  

Teremos:

ExtendedProperty_2

Ao executar a procedure.

  1. sys.sp_columns CLIENT  

Teremos:

ExtendedProperty_3

Espero que tenha sido útil.
Até a próxima.

 

E Deus limpará de seus olhos toda a lágrima; e não haverá mais morte, nem pranto, nem clamor, nem dor; porque já as primeiras coisas são passadas. (Apocalipse 21:4)

Share or Bookmark this post…

Tags: , , , , , , , , , , , ,

Kommentare

1.
trackback DotNetKicks.com says:

Desc/Comments with SQL Server

You've been kicked (a good thing) - Trackback from DotNetKicks.com

2.
pingback thiagosatoshisuzuki.wordpress.com says:

Pingback from thiagosatoshisuzuki.wordpress.com

Desc/Comments no SQL Server « Thiago Satoshi Suzuki

Voeg kommentaar By


(Sal you Gravatar ikone vertoon)

  Country flag

biuquote
  • Opmerkings
  • Voorskou
Loading