Armazenando metadados em tabelas dos bancos de dados SQL Server usando propriedades estendidasQuase tudo o que e colocado nestes posts e fruto de experiencias ocorridas dentro do meu ambiente de trabalho. Por isso, o assunto de hoje nao vai sair deste padrao e pretendo contar como a necessidade de documentar trezentas e quarenta e duas tabelas (342) em um banco de dados em apenas um dia e meio de trabalho me empurrou para buscar uma solucao que torne o banco auto documentado e possa, de forma rapida e eficiente, oferecer dados sobre os seus objetos, ainda que em um nivel muito basico.A ideia e poder usar o proprio banco de dados para dar informacoes sobre os seus objetos e ter um dicionario de dados pelo menos parra as tabelas. Uma das maiores dificuldades que sempre encontrei e saber o que cada uma armazena. Em sistemas que irao ficar em producao durante um longo periodo e consequentemente passarao por varias alteracoes e manutencoes, e indispensavel uma documentacao que possa acelerar a compreensao de cada objeto, principalmente as tabelas. Considere ainda sistemas de informacao onde varias pessoas trabalham para dar manutencao e onde haja alguma rotatividade de pessoal, neste caso se nao houver um minimo de documentacao, a tarefa de explicar o funcionamento do banco se torna muito dificil e extensa.No SQL Server (a partir da versao 2008), foram introduzidas as propriedades estendidas dos objetos. Estas consistem de um dicionario do tipo chave e valor que podem ser vinculados com elementos como: bancos de dados, esquemas (schemas), tabelas, colunas, tipos de dados, etc. No final do artigo, na secao links, coloco os enderecos para acessar a documentacao oficial. O que quero mostrar aqui e uma utilizacao para este recurso de forma a documentar as tabelas dos bancos de dados sem precisar lancar mao de ferramentas externas.As propriedades estendidas de tabelas podem ser acessadas, visualizadas e alteradas usando a ferramenta SQL Server Management Studio (SSMS). Basta selecionar uma tabela, clicar com o botao direito sobre ela e acessar o item Propriedades. Na janela que se abre, existe um seletor para as propriedades estendidas que exibe uma interface para visualizar e alterar estes elementos.Uma vantagem das propriedades estendidas e que podem ser manipuladas usando instrucoes Transact SQL (TSQL) com operacoes para modificacao destes dados e tambem consultas. Ao se gerar scripts para exportacao do schema de uma tabela, as propriedades estendidas tambem sao incluidas, o que facilita a replicacao do banco. Observe o exemplo do script que e gerado para a tabela Person.Persons do banco de dados AdventureWorks2012 da Microsoft.USE [AdventureWorks2012]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [Production].[Product]( [ProductID] [int] IDENTITY(1,1) NOT NULL, [Name] [dbo].[Name] NOT NULL, [ProductNumber] [nvarchar](25) NOT NULL, [MakeFlag] [dbo].[Flag] NOT NULL, [FinishedGoodsFlag] [dbo].[Flag] NOT NULL, [Color] [nvarchar](15) NULL, [SafetyStockLevel] [smallint] NOT NULL, [ReorderPoint] [smallint] NOT NULL, [StandardCost] [money] NOT NULL, [ListPrice] [money] NOT NULL, [Size] [nvarchar](5) NULL, [SizeUnitMeasureCode] [nchar](3) NULL, [WeightUnitMeasureCode] [nchar](3) NULL, [Weight] [decimal](8, 2) NULL, [DaysToManufacture] [int] NOT NULL, [ProductLine] [nchar](2) NULL, [Class] [nchar](2) NULL, [Style] [nchar](2) NULL, [ProductSubcategoryID] [int] NULL, [ProductModelID] [int] NULL, [SellStartDate] [datetime] NOT NULL, [SellEndDate] [datetime] NULL,