<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sylverio &#187; SQL</title>
	<atom:link href="http://sylverio.com.br/blog/tag/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://sylverio.com.br/blog</link>
	<description>Análise, Arquitetura, Orientação a Objetos, UML, Tecnologias e Programação</description>
	<lastBuildDate>Fri, 11 May 2012 02:35:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Entendento o SQL Server sysobjects e syscolumns</title>
		<link>http://sylverio.com.br/blog/2009/12/entendento-o-sql-server-sysobject-e-syscolumns/</link>
		<comments>http://sylverio.com.br/blog/2009/12/entendento-o-sql-server-sysobject-e-syscolumns/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 01:19:37 +0000</pubDate>
		<dc:creator>Carlos Fernando Sylverio</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://sylverio.com.br/blog/?p=321</guid>
		<description><![CDATA[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 &#8230;<p class="read-more"><a href="http://sylverio.com.br/blog/2009/12/entendento-o-sql-server-sysobject-e-syscolumns/">Saiba mais &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>SQL Server <strong>sysobjects</strong> é 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.<br />
No exemplo abaixo podemos encontrar informação sobre todos os objetos utilizados no banco de dados:<br />
 </p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> sysobjects
 </pre></div></div>

<p>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.<br />
Para exibir todas as tabelas criadas pelo usuário executamos a seguinte instrução:<br />
 </p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span>  <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> sysobjects <span style="color: #993333; font-weight: bold;">WHERE</span> xtype<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'U'</span>
 </pre></div></div>

<p>Ou saber as trigger existentes em cada tabela:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"> 
<span style="color: #993333; font-weight: bold;">SELECT</span>
    Sys2<span style="color: #66cc66;">.</span>name           <span style="color: #993333; font-weight: bold;">AS</span> TableName<span style="color: #66cc66;">,</span>
    Sys1<span style="color: #66cc66;">.</span>name           <span style="color: #993333; font-weight: bold;">AS</span> TriggerName<span style="color: #66cc66;">,</span>
    <span style="color: #993333; font-weight: bold;">CASE</span>
        <span style="color: #993333; font-weight: bold;">WHEN</span> Sys1<span style="color: #66cc66;">.</span>deltrig <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #ff0000;">'Delete'</span>
        <span style="color: #993333; font-weight: bold;">WHEN</span> Sys1<span style="color: #66cc66;">.</span>instrig <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #ff0000;">'Insert'</span>
        <span style="color: #993333; font-weight: bold;">WHEN</span> Sys1<span style="color: #66cc66;">.</span>updtrig <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #ff0000;">'Update'</span>
    <span style="color: #993333; font-weight: bold;">END</span>
<span style="color: #993333; font-weight: bold;">FROM</span>
    sysobjects Sys1
    <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> sysobjects Sys2 <span style="color: #993333; font-weight: bold;">ON</span>
        Sys1<span style="color: #66cc66;">.</span>parent_obj <span style="color: #66cc66;">=</span> Sys2<span style="color: #66cc66;">.</span>id
<span style="color: #993333; font-weight: bold;">WHERE</span>
    Sys1<span style="color: #66cc66;">.</span>xtype <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'TR'</span>
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span>
    Sys2<span style="color: #66cc66;">.</span>name
 </pre></div></div>

<p>Lista de possibilidades de valores para a coluna xtype:</p>
<ul>
<li><strong>C</strong> = CHECK constraint </li>
<li><strong>D</strong> = Default or DEFAULT constraint </li>
<li><strong>F</strong> = FOREIGN KEY constraint </li>
<li><strong>L</strong> = Log </li>
<li><strong>P</strong> = Stored procedure </li>
<li><strong>PK</strong> = PRIMARY KEY constraint (type is K) </li>
<li><strong>RF</strong> = Replication filter stored procedure </li>
<li><strong>S</strong> = System table </li>
<li><strong>TR</strong> = Trigger </li>
<li><strong>U</strong> = User table </li>
<li><strong>UQ</strong> = UNIQUE constraint (type is K) </li>
<li><strong>V</strong> = View </li>
<li><strong>X</strong> = Extended stored procedure</li>
</ul>
<p> <br />
A tabela <strong>syscolumns</strong> 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:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"> 
<span style="color: #993333; font-weight: bold;">SELECT</span> 
    <span style="color: #66cc66;">*</span>
<span style="color: #993333; font-weight: bold;">FROM</span> 
    sysobjects SysObj
    <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> syscolumns SysCol <span style="color: #993333; font-weight: bold;">ON</span>
        SysObj<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> SysCol<span style="color: #66cc66;">.</span>id
<span style="color: #993333; font-weight: bold;">WHERE</span> 
    SysObj<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">TYPE</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'U'</span>
    <span style="color: #993333; font-weight: bold;">AND</span>
    SysObj<span style="color: #66cc66;">.</span>name <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'tbl_cliente'</span>
 </pre></div></div>

<p><strong>Referência</strong>:</p>
<ul>
<li><a href="http://msdn.microsoft.com/pt-br/library/ms177596.aspx" target="_blanck">MSDN Microsoft </a></li>
</ul>
<p><strong>Observação</strong>: Os exemplos deste post foram criados para a versão 2005 do SQL Server, para versão 2000 do SQL Server consulte o artigo <a href="http://msdn.microsoft.com/pt-br/library/ms187997.aspx" target="_blanck">Mapeando tabelas do sistema do SQL Server 2000 para exibições do sistema do SQL Server 2005</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sylverio.com.br/blog/2009/12/entendento-o-sql-server-sysobject-e-syscolumns/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Persistência de Dados com IBatis ou NHibernate</title>
		<link>http://sylverio.com.br/blog/2009/02/persistencia-de-dados-com-ibatis-ou-nhibernate/</link>
		<comments>http://sylverio.com.br/blog/2009/02/persistencia-de-dados-com-ibatis-ou-nhibernate/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 13:53:16 +0000</pubDate>
		<dc:creator>Carlos Fernando Sylverio</dc:creator>
				<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[IBatis]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[Persistência]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://sylverio.com.br/blog/?p=63</guid>
		<description><![CDATA[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 &#8230;<p class="read-more"><a href="http://sylverio.com.br/blog/2009/02/persistencia-de-dados-com-ibatis-ou-nhibernate/">Saiba mais &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>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:</p>
<ul>
<li>O desenvolvedor perde muito tempo codificando classes e diversos métodos para preencher seus objetos.</li>
<li>Quanto mais o sistema cresce, mais complexo se torna o código para preencher os objetos utilizados pela aplicação.</li>
<li>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.</li>
<li>Difícil manutenção e escalabilidade do sistema.</li>
</ul>
<p><!-- br--></p>
<p>Para resolver esses problemas temos algumas aternativas, como a utilização de ferramentas de mapeamento objeto/relacional, como o <a href="http://ibatis.apache.org/" target="_blank">iBatis</a> e <a href="http://www.hibernate.org/" target="_blank">Hibernate</a>.</p>
<p>A versão do Hibernate para .NET chama-se <strong>NHibernate</strong>.</p>
<p>Mas o que são essas ferramentas:</p>
<p>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.</p>
<p>Com essas ferramentas podemos reduzir significativamente os problemas apresentados acima.</p>
<p>Mais adiante farei um post com exemplo de utilização do iBatis e hibernante.</p>
<p>Até mais <img src='http://sylverio.com.br/blog/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://sylverio.com.br/blog/2009/02/persistencia-de-dados-com-ibatis-ou-nhibernate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

