Entendento o SQL Server sysobjects e syscolumns

Postado por Carlos Fernando Sylverio | Postado em Programação, Tecnologia | Postado em 07-12-2009

2

SQL Server sysobjects é uma tabela do SGBD SQL Server que armazena informações sobre os objetos criado no banco de dados. Contendo uma linha (registro) para cada objeto existente, como uma restrição, padrão, log, regra e procedimento armazenado.
No exemplo abaixo podemos encontrar informação sobre todos os objetos utilizados no banco de dados:
 

SELECT * FROM sysobjects
 

A coluna type e xtype possuem informação sobre o tipo de objeto. Tome cuidado para não confundir os valores das constantes. Há pequenas particularidades entre elas.
Para exibir todas as tabelas criadas pelo usuário executamos a seguinte instrução:
 

SELECT  * FROM sysobjects WHERE xtype='U'
 

Ou saber as trigger existentes em cada tabela:

 
SELECT
    Sys2.name           AS TableName,
    Sys1.name           AS TriggerName,
    CASE
        WHEN Sys1.deltrig > 0 THEN 'Delete'
        WHEN Sys1.instrig > 0 THEN 'Insert'
        WHEN Sys1.updtrig > 0 THEN 'Update'
    END
FROM
    sysobjects Sys1
    INNER JOIN sysobjects Sys2 ON
        Sys1.parent_obj = Sys2.id
WHERE
    Sys1.xtype = 'TR'
ORDER BY
    Sys2.name
 

Lista de possibilidades de valores para a coluna xtype:

  • C = CHECK constraint 
  • D = Default or DEFAULT constraint 
  • F = FOREIGN KEY constraint 
  • L = Log 
  • P = Stored procedure 
  • PK = PRIMARY KEY constraint (type is K) 
  • RF = Replication filter stored procedure 
  • S = System table 
  • TR = Trigger 
  • U = User table 
  • UQ = UNIQUE constraint (type is K) 
  • V = View 
  • X = Extended stored procedure

 
A tabela syscolumns retorna uma linha para cada coluna de um objeto que tem colunas, como exibições ou tabelas. E pode ser um auxilio na obtenção de informação sobre as colunas das tabelas:

 
SELECT 
    *
FROM 
    sysobjects SysObj
    INNER JOIN syscolumns SysCol ON
        SysObj.id = SysCol.id
WHERE 
    SysObj.type='U'
    AND
    SysObj.name = 'tbl_cliente'
 

Referência:

Observação: Os exemplos deste post foram criados para a versão 2005 do SQL Server, para versão 2000 do SQL Server consulte o artigo Mapeando tabelas do sistema do SQL Server 2000 para exibições do sistema do SQL Server 2005

Persistência de Dados com IBatis ou NHibernate

Postado por Carlos Fernando Sylverio | Postado em Tecnologia | Postado em 16-02-2009

0

Em quase todo sistema que utiliza banco de dados para armazenar e recuperar informações, torna-se difícil o mapeamento das tabelas com os objetos utilizados pela aplicação, por diversos fatores como por exemplo:

  • O desenvolvedor perde muito tempo codificando classes e diversos métodos para preencher seus objetos.
  • Quanto mais o sistema cresce, mais complexo se torna o código para preencher os objetos utilizados pela aplicação.
  • O processo de preencher todos os objetos em cascata, muitas vezes torna lento o sistema, alem disso, podem acabar causando diversos erros por seus objetos estarem nulos, quando não são corretamente preenchidos.
  • Difícil manutenção e escalabilidade do sistema.

Para resolver esses problemas temos algumas aternativas, como a utilização de ferramentas de mapeamento objeto/relacional, como o iBatis e Hibernate.

A versão do Hibernate para .NET chama-se NHibernate.

Mas o que são essas ferramentas:

Ambos são framework escritos em Java e .NET (o iBatis também trabalha com Ruby/Rails), que trabalham com aplicações permitindo o acesso a banco de dados sem a necessidade de escrever uma linha de código JDBC ou ADO.NET, fazendo todo todo o acesso através de associações de querys SQL ou stored procedures a objetos por meio de um XML de mapeamento.

Com essas ferramentas podemos reduzir significativamente os problemas apresentados acima.

Mais adiante farei um post com exemplo de utilização do iBatis e hibernante.

Até mais :-P