quinta-feira, 21 de março de 2024

Olá amigos!

Hoje falarei brevemente sobre um assunto bem interessante no SQL Server que são as views de sistema com informações de schema do banco de dados.

O que são views de sistema?
O Sql Server disponibiliza uma série de views para auxílio na localização de schema de tabelas, views, procedures, entre outras necessidades, facilitando em muito a localização e também a utilização dessas informações

Para quê servem?
Digamos que seja necessário saber em qual tabela temos uma coluna contendo a string “name” em seu nome. Uma forma de resolver isto seria usando a view sysobjects e a view syscolumns, conforme exemplo abaixo:

1
2
3
4
SELECT * FROM SYSOBJECTS OBJ
INNER JOIN SYSCOLUMNS COL
ON OBJ.ID = COL.ID
WHERE COL.NAME LIKE '%NAME%'

Ótimo, isso funciona perfeitamente, porém existe uma forma mais fácil de fazer isto, usando as views de sistema. Em vez de usar isto, use isto:

1
2
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%name%'

A vantagem mais notável é a sintaxe simplificada ao mesmo tempo uma gama maior de informações retornadas sem necessidade de fazer outros joins com outras views, como é necessário fazer quando usamos as views como sysobjects, syscolumns, etc. Sempre que forem utilizar estas views, é preciso usar o nome qualificado INFORMATION_SCHEMA.nome_da_view.

Abaixo uma lista das principais views do INFORMATION_SCHEMA e seus objetivos:

NomeDescrição
CHECK_CONSTRAINTSInformações sobre as constraints das tabelas
REFERENTIAL_CONSTRAINTSRetorna uma linha para cada FOREIGN KEY no banco selecionado
ROUTINESTodas as funções definidas pelo usuário e stored procedures
COLUMN_PRIVILEGESColunas com previlégios garantidos para ou pelo usuário atual
ROUTINE_COLUMNSInformações sobre as colunas usadas nas procedures e functions
COLUMNSInformações sobre todas as colunas
SCHEMATAInformações sobre os bancos de dados
CONSTRAINT_COLUMN_USAGEColunas usadas nas constraints
TABLE_CONSTRAINTSTodas as restrições das tabelas
CONSTRAINT_TABLE_USAGETabelas que possuem uma restrição definida
TABLE_PRIVILEGESTabelas com previlégio garantido para ou pelo usuário atual
TABLESInformações sobre as tabelas
DOMAINSTodos os tipos de dados definidos pelo usuário
VIEW_COLUMN_USAGEInformações sobre colunas utilizadas nas views
KEY_COLUMN_USAGEColunas restringidas como uma chave
VIEW_TABLE_USAGETabelas usadas em uma View
PARAMETERSTodos os parametros para funções definidas pelo usuário e stored procedures
VIEWSInformações sobre as Views

Por hora é isso, façam seus selects e avaliem a necessidade e utilização de cada uma das views citadas.

Referência: http://msdn.microsoft.com/en-us/library/ms186778.aspx