Arquivos

Arquivo por Autor

SQL Server – Usando as views de sistema

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:

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:

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:

Nome Descrição
CHECK_CONSTRAINTS Informações sobre as constraints das tabelas
REFERENTIAL_CONSTRAINTS Retorna uma linha para cada FOREIGN KEY no banco selecionado
ROUTINES Todas as funções definidas pelo usuário e stored procedures
COLUMN_PRIVILEGES Colunas com previlégios garantidos para ou pelo usuário atual
ROUTINE_COLUMNS Informações sobre as colunas usadas nas procedures e functions
COLUMNS Informações sobre todas as colunas
SCHEMATA Informações sobre os bancos de dados
CONSTRAINT_COLUMN_USAGE Colunas usadas nas constraints
TABLE_CONSTRAINTS Todas as restrições das tabelas
CONSTRAINT_TABLE_USAGE Tabelas que possuem uma restrição definida
TABLE_PRIVILEGES Tabelas com previlégio garantido para ou pelo usuário atual
TABLES Informações sobre as tabelas
DOMAINS Todos os tipos de dados definidos pelo usuário
VIEW_COLUMN_USAGE Informações sobre colunas utilizadas nas views
KEY_COLUMN_USAGE Colunas restringidas como uma chave
VIEW_TABLE_USAGE Tabelas usadas em uma View
PARAMETERS Todos os parametros para funções definidas pelo usuário e stored procedures
VIEWS Informaçõ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

[]‘s

Colunas usadas nas constraints
CategoriasSQL Tags:,

SQLServer – Zerando valor da coluna Identity

Simples mas útil.
Se você estiver usando uma coluna definida como “Identity” em uma tabela SQL Server, você pode definir qual o próximo valor a ser inserido nesta coluna. Por exemplo, definir que o número da sua coluna ID seja definido como 500 ao invés de 1, que seria o padrão. Abaixo alguns exemplos de como fazer isso e outras utilizações:

Para saber qual será a próxima numeração a ser inserida na coluna identificadora:

DBCC CHECKIDENT ('tablename', NORESEED)

Se quiser então saber o valor do próximo ID na tabela “usuarios”, pode-se usar este comando:

DBCC CHECKIDENT (usuarios, NORESEED)

Para definir o próximo valor da sua coluna ID para 1000, use o seguinte:

DBCC CHECKIDENT (usuarios, RESEED, 999)

Note que o próximo valor será 1000, pois é o valor informado no comando + 1.

Um último detalhe é que você pode envolver o nome da tabela com aspas simples, ou os colchetes quando estiver falando em situações especiais como nome de tabela com espaços (o que eu não gosto) ou caminho completo da tabela:

DBCC CHECKIDENT ( 'seubancodedados.dbo.usuarios', RESEED, 999)

[]‘s e até a próxima!

CategoriasSQL Tags:
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.