<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>SQL From Hell.com</title>
	<atom:link href="http://sqlfromhell.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sqlfromhell.wordpress.com</link>
	<description>Um nome bem intuitivo para muita informação!</description>
	<lastBuildDate>Fri, 20 Jan 2012 10:57:39 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='sqlfromhell.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/eb38953921d0776db31e264c512cfca8?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>SQL From Hell.com</title>
		<link>http://sqlfromhell.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sqlfromhell.wordpress.com/osd.xml" title="SQL From Hell.com" />
	<atom:link rel='hub' href='http://sqlfromhell.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Gerando scripts do banco de dados por PowerShell – Passo 1</title>
		<link>http://sqlfromhell.wordpress.com/2012/01/18/gerando-scripts-do-banco-de-dados-por-powershell-passo-1/</link>
		<comments>http://sqlfromhell.wordpress.com/2012/01/18/gerando-scripts-do-banco-de-dados-por-powershell-passo-1/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 10:25:39 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SMO]]></category>
		<category><![CDATA[Trabalhando com SMO]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[DriAll]]></category>
		<category><![CDATA[DriPrimaryKey]]></category>
		<category><![CDATA[Primary Keys]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[SmoExtended]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management Objects]]></category>

		<guid isPermaLink="false">http://sqlfromhell.wordpress.com/?p=3880</guid>
		<description><![CDATA[Tento já explicado como utilizar o SMO para gerar o scripts do SQL Server por .NET, agora teremos a alternativa com PowerShell: Forma resumida para este script se executado dentro do próprio contexto do SQL Server (Jobs, PowerShell do SQL Server ou sqlps.exe): Artigo relacionado: PowerShell no SQL Server – Step 1<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3880&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tento já explicado como utilizar o SMO para <a title="Gerando scripts do banco de dados por .NET – Passo 1" href="http://sqlfromhell.wordpress.com/2012/01/17/gerando-scripts-do-banco-de-dados-por-net-passo-1/" target="_blank">gerar o scripts do SQL Server por .NET</a>, agora teremos a alternativa com PowerShell:</p>
<p><pre class="brush: powershell;"># Referências
[void][system.reflection.assembly]::loadfrom(&quot;C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Smo.dll&quot;)

# Objetos
$srv = new-object Microsoft.SqlServer.Management.Smo.Server(&quot;.\SQLEXPRESS&quot;)

$db = $srv.Databases[&quot;DemoAspNet&quot;]

# 1. Gerando o Script do banco de dados
$db.Script() | Out-File &quot;C:\Temp\DemoAspNet.sql&quot;

# 2. Gerando o Script das tabelas do banco de dados
$db.Tables | % { $_.Script() } | Out-File &quot;C:\Temp\DemoAspNet_Tables.sql&quot;

# 3. Script com o GO entre as linhas (Forma 1)
$go = &quot;`nGO`n&quot;
$db.Tables | % { $_.Script() | % { $_ + $go} } | Out-File &quot;C:\Temp\DemoAspNet_Tables.sql&quot;

# 4. Script com o GO entre as linhas (Forma 2)
$go = &quot;
GO
&quot;
$db.Tables | % { $_.Script() | % { $_ + $go} } | Out-File &quot;C:\Temp\DemoAspNet_Tables.sql&quot;

# 5. Gerando o DROP das tabelas
$options = new-object Microsoft.SqlServer.Management.Smo.ScriptingOptions
$options.ScriptDrops = $TRUE

$go = &quot;`nGO`n&quot;
$db.Tables | % { $_.Script($options) | % { $_ + $go} } | Out-File &quot;C:\Temp\DemoAspNet_TableDrop.sql&quot;

# 6. Gerando o script das tabelas com as Primary Keys
$options = new-object Microsoft.SqlServer.Management.Smo.ScriptingOptions
$options.DriPrimaryKey = $TRUE

$go = &quot;`nGO`n&quot;
$db.Tables | % { $_.Script($options) | % { $_ + $go} } | Out-File &quot;C:\Temp\DemoAspNet_TableKey.sql&quot;

# 7. Gerando o script das tabelas com as Keys e Constraints, sem Collation
$options = new-object Microsoft.SqlServer.Management.Smo.ScriptingOptions
$options.DriAll = $TRUE
$options.NoCollation = $TRUE

$go = &quot;`nGO`n&quot;
$db.Tables | % { $_.Script($options) | % { $_ + $go} } | Out-File &quot;C:\Temp\DemoAspNet_TableAll.sql&quot;</pre></p>
<p>Forma resumida para este script se executado dentro do próprio contexto do SQL Server (Jobs, PowerShell do SQL Server ou sqlps.exe):</p>
<p><pre class="brush: powershell;"># Sem referências

# Objetos
sl SQLSERVER:\SQL\LOCALHOST\SQLEXPRESS\Databases\DemoAspNet

$db = get-item .

# 1. Gerando o Script do banco de dados
$db.Script() | Out-File &quot;C:\Temp\DemoAspNet.sql&quot;

# 2. Gerando o Script das tabelas do banco de dados
dir Tables | % { $_.Script() } | Out-File &quot;C:\Temp\DemoAspNet_Tables.sql&quot;

# 3. Script com o GO entre as linhas (Forma 1)
$go = &quot;`nGO`n&quot;
dir Tables | % { $_.Script() | % { $_ + $go} } | Out-File &quot;C:\Temp\DemoAspNet_Tables.sql&quot;

# 4. Script com o GO entre as linhas (Forma 2)
$go = &quot;
GO
&quot;
$db.Tables | % { $_.Script() | % { $_ + $go} } | Out-File &quot;C:\Temp\DemoAspNet_Tables.sql&quot;

# 5. Gerando o DROP das tabelas
$options = new-object Microsoft.SqlServer.Management.Smo.ScriptingOptions
$options.ScriptDrops = $TRUE

$go = &quot;`nGO`n&quot;
dir Tables | % { $_.Script($options) | % { $_ + $go} } | Out-File &quot;C:\Temp\DemoAspNet_TableDrop.sql&quot;

# 6. Gerando o script das tabelas com as Primary Keys
$options = new-object Microsoft.SqlServer.Management.Smo.ScriptingOptions
$options.DriPrimaryKey = $TRUE

$go = &quot;`nGO`n&quot;
dir Tables | % { $_.Script($options) | % { $_ + $go} } | Out-File &quot;C:\Temp\DemoAspNet_TableKey.sql&quot;

# 7. Gerando o script das tabelas com as Keys e Constraints, sem Collation
$options = new-object Microsoft.SqlServer.Management.Smo.ScriptingOptions
$options.DriAll = $TRUE
$options.NoCollation = $TRUE

$go = &quot;`nGO`n&quot;
dir Tables | % { $_.Script($options) | % { $_ + $go} } | Out-File &quot;C:\Temp\DemoAspNet_TableAll.sql&quot;</pre></p>
<p><strong>Artigo relacionado:</strong></p>
<p><a title="PowerShell no SQL Server – Step 1" href="http://sqlfromhell.wordpress.com/2011/01/13/powershell-sql-server/" rel="bookmark" target="_blank">PowerShell no SQL Server – Step 1</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3880/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3880&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2012/01/18/gerando-scripts-do-banco-de-dados-por-powershell-passo-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>
	</item>
		<item>
		<title>Gerando scripts do banco de dados por .NET – Passo 1</title>
		<link>http://sqlfromhell.wordpress.com/2012/01/17/gerando-scripts-do-banco-de-dados-por-net-passo-1/</link>
		<comments>http://sqlfromhell.wordpress.com/2012/01/17/gerando-scripts-do-banco-de-dados-por-net-passo-1/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 09:30:07 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[SMO]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Trabalhando com SMO]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[SQL Server Management Objects]]></category>
		<category><![CDATA[SmoExtended]]></category>
		<category><![CDATA[DriPrimaryKey]]></category>
		<category><![CDATA[DriAll]]></category>
		<category><![CDATA[Primary Keys]]></category>

		<guid isPermaLink="false">https://sqlfromhell.wordpress.com/?p=3866</guid>
		<description><![CDATA[Criar scripts do banco de dados, ou de qualquer objeto do SQL Server por .NET não é algo muito complexo, pois os principais objetos do SMO possuem o método Script. Mas como gerar o script desejado é o que pode dar um pouco de dor de cabeça para quem esta começando com SMO, seja no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3866&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Criar scripts do banco de dados, ou de qualquer objeto do SQL Server por .NET não é algo muito complexo, pois os principais objetos do SMO possuem o método Script. Mas como gerar o script desejado é o que pode dar um pouco de dor de cabeça para quem esta começando com SMO, seja no .NET ou no PowerShell.</p>
<p>Para primeira demonstração, vamos ver como é simples gerar o script de criação do banco de dados:</p>
<p><pre class="brush: csharp;">using System;
using System.IO;
using Microsoft.SqlServer.Management.Smo;

namespace DemoSmo
{
    class DemoScript1
    {
        static void Main()
        {
            const string serverName = @&quot;.\SQLEXPRESS&quot;;

            const string databaseName = &quot;DemoAspNet&quot;;

            const string scriptPath = @&quot;C:\TEMP\DemoAspNet.sql&quot;;

            var server = new Server(serverName);

            var database = server.Databases[databaseName];

            // Gerando o script do banco de dados e salvando este em um arquivo
            using (var file = new StreamWriter(scriptPath))
            {
                Console.WriteLine(&quot;Script do banco de dados...&quot;);

                foreach (var str in database.Script())
                {
                    file.WriteLine(str);
                    file.WriteLine(&quot;GO&quot;);
                }
            }

            Console.WriteLine(&quot;Script concluído ...&quot;);

            Console.ReadKey();
        }
    }
}
</pre></p>
<p>Agora a geração do script das tabelas do banco de dados:</p>
<p><pre class="brush: csharp;">using System;
using System.IO;
using System.Linq;
using Microsoft.SqlServer.Management.Smo;

namespace DemoSmo
{
    class DemoScript2
    {
        static void Main()
        {
            const string serverName = @&quot;.\SQLEXPRESS&quot;;

            const string databaseName = &quot;DemoAspNet&quot;;

            const string scriptPath = @&quot;C:\TEMP\DemoAspNet.sql&quot;;

            var server = new Server(serverName);

            var database = server.Databases[databaseName];

            using (var file = new StreamWriter(scriptPath))
            {
                Console.WriteLine(&quot;Script das tabelas...&quot;);

                // Relacionando as tabelas do banco de dados
                foreach (var table in database.Tables.Cast&lt;Table&gt;().Where(table =&gt; !table.IsSystemObject))
                {
                    // Gerando o script de cada uma das tabelas
                    file.WriteLine(&quot;--&quot;);
                    file.WriteLine(&quot;-- Tabela: [{0}].[{1}]&quot;, table.Schema, table.Name);
                    file.WriteLine(&quot;--&quot;);
                    foreach (var str in table.Script())
                    {
                        file.WriteLine(str);
                        file.WriteLine(&quot;GO&quot;);
                    }
                }
            }

            Console.WriteLine(&quot;Script concluído ...&quot;);
            Console.ReadKey();
        }
    }
}
</pre></p>
<p>Na geração do script das tabelas, é bem provável que você vá se perguntar &#8220;onde estão as constraints das tabelas?&#8221;, ai entra o objeto <a title="ScriptingOptions Properties" href="http://msdn.microsoft.com/en-US/library/microsoft.sqlserver.management.smo.scriptingoptions_properties.aspx" target="_blank">ScriptOptions</a>, o qual pode ser utilizado como argumento para o método Script, afim de definir como e do que será gerado o script.</p>
<p>Para entender isso, temos abaixo um ScriptOptions configurado para gerar o script das tabelas com as Primary Keys (DriPrimaryKey):</p>
<p><pre class="brush: csharp;">var scriptOptions = new ScriptingOptions { DriPrimaryKey = true };</pre></p>
<p>O ScriptOptions para gerar o script de DROP das tabelas (ScriptDrops):</p>
<p><pre class="brush: csharp;">var scriptOptions = new ScriptingOptions { ScriptDrops = true };</pre></p>
<p>E para um exemplo final, utilizando o ScriptOption afim de gerar o script das tabelas com as Keys e Constraints (DriAll) e sem informar Collation das colunas (NoCollation):</p>
<p><pre class="brush: csharp;">using System;
using System.IO;
using System.Linq;
using Microsoft.SqlServer.Management.Smo;

namespace DemoSmo
{
    class DemoScript3
    {
        static void Main()
        {
            const string serverName = @&quot;.\SQLEXPRESS&quot;;

            const string databaseName = &quot;DemoAspNet&quot;;

            const string scriptPath = @&quot;C:\TEMP\DemoAspNet.sql&quot;;

            var server = new Server(serverName);

            var database = server.Databases[databaseName];

            //Definindo o objeto ScriptingOptions
            var scriptOptions = new ScriptingOptions { DriAll = true, NoCollation = true };

            using (var file = new StreamWriter(scriptPath))
            {
                Console.WriteLine(&quot;Script das tabelas...&quot;);

                foreach (var table in database.Tables.Cast&lt;Table&gt;().Where(table =&gt; !table.IsSystemObject))
                {
                    //ScriptingOptions com argumento do método Script
                    file.WriteLine(&quot;\n\n--\n-- Tabela: [{0}].[{1}]\n--\n&quot;, table.Schema, table.Name);
                    foreach (var str in table.Script(scriptOptions))
                    {
                        file.WriteLine(str);
                        file.WriteLine(&quot;GO&quot;);
                    }
                }
            }

            Console.WriteLine(&quot;Script concluído ...&quot;);
            Console.ReadKey();
        }
    }
}
</pre></p>
<p>No artigo da próxima semana veremos como utilizar o objeto Scripter para gerar o script de vários objetos ao mesmo tempo, e ainda nesta semana a versão deste artigo para PowerShell.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3866/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3866&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2012/01/17/gerando-scripts-do-banco-de-dados-por-net-passo-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>
	</item>
		<item>
		<title>Gerando backups do SQL Server por PowerShell</title>
		<link>http://sqlfromhell.wordpress.com/2012/01/12/gerando-backups-do-sql-server-por-powershell/</link>
		<comments>http://sqlfromhell.wordpress.com/2012/01/12/gerando-backups-do-sql-server-por-powershell/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 12:12:23 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SMO]]></category>
		<category><![CDATA[Trabalhando com SMO]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[BackupDeviceItem]]></category>
		<category><![CDATA[SmoExtended]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management Objects]]></category>

		<guid isPermaLink="false">https://sqlfromhell.wordpress.com/?p=3855</guid>
		<description><![CDATA[No primeiro artigo desta semana vimos como gerar backups do SQL Server por .NET, agora veremos alternativas mais simples para tal, com o PowerShell. Para o nosso primeiro script de Backup com PowerShell, precisaremos referenciar os assemblies do SMO, e criar um código semelhante ao que vimos com .NET: Mas quando no contexto do PowerShell do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3855&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>No primeiro artigo desta semana vimos <a title="Gerando backups do SQL Server por .NET" href="http://sqlfromhell.wordpress.com/2012/01/09/gerando-backups-do-sql-server-por-net/" target="_blank">como gerar backups do SQL Server por .NET</a>, agora veremos alternativas mais simples para tal, com o PowerShell.</p>
<p>Para o nosso primeiro script de Backup com PowerShell, precisaremos referenciar os assemblies do SMO, e criar um código semelhante ao que vimos com .NET:</p>
<p><pre class="brush: powershell;"># Referências
[void][system.reflection.assembly]::loadfrom(&quot;C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Smo.dll&quot;)
[void][system.reflection.assembly]::loadfrom(&quot;C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.SmoExtended.dll&quot;)

# Objetos
$srv = new-object Microsoft.SqlServer.Management.Smo.Server(&quot;.\SQLEXPRESS&quot;)

$bk = new-object Microsoft.SqlServer.Management.Smo.Backup

# Definindo de qual banco de dados será executado o backup
$bk.Database = &quot;BASE1&quot;

# Definindo onde será salvo o backup
$bk.Devices.AddDevice(&quot;C:\TEMP\BASE1_PowerShell.bak&quot;, [Microsoft.SqlServer.Management.Smo.DeviceType]::File)

# Executando o backup
$bk.SqlBackup($srv)</pre></p>
<p>Mas quando no contexto do PowerShell do SQL Server (scripts executados em Jobs ou diretamente pelo PowerShell presente no SQL Server Management Studio ou SQLPS.exe), teremos algumas facilidades, como não precisar referenciar os assemblies do SMO e utilizar de &#8220;atalhos&#8221; para instanciar as variáveis do SQL Server (ex.: Smo.Server):</p>
<p><pre class="brush: powershell;"># Sem referências

# Objetos
$srv = get-item SQLSERVER:\SQL\LOCALHOST\SQLEXPRESS

$bk = new-object Microsoft.SqlServer.Management.Smo.Backup

# Definindo de qual banco de dados será executado o backup
$bk.Database = &quot;BASE1&quot;

# Definindo onde será salvo o backup
$bk.Devices.AddDevice(&quot;C:\TEMP\BASE1_PowerShell.bak&quot;, [Microsoft.SqlServer.Management.Smo.DeviceType]::File)

# Executando o backup
$bk.SqlBackup($srv)</pre></p>
<p><strong>Referências:</strong></p>
<p><a title="How To Load .NET Assemblies In A PowerShell Session" href="http://www.dougfinke.com/blog/index.php/2010/08/29/how-to-load-net-assemblies-in-a-powershell-session/" target="_blank">How To Load .NET Assemblies In A PowerShell Session</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3855/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3855&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2012/01/12/gerando-backups-do-sql-server-por-powershell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>
	</item>
		<item>
		<title>Gerando backups do SQL Server por .NET</title>
		<link>http://sqlfromhell.wordpress.com/2012/01/09/gerando-backups-do-sql-server-por-net/</link>
		<comments>http://sqlfromhell.wordpress.com/2012/01/09/gerando-backups-do-sql-server-por-net/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 21:11:47 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[SMO]]></category>
		<category><![CDATA[Trabalhando com SMO]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[BackupDeviceItem]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[SmoExtended]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management Objects]]></category>

		<guid isPermaLink="false">https://sqlfromhell.wordpress.com/?p=3847</guid>
		<description><![CDATA[No artigo da semana passada, tivemos uma breve introdução à biblioteca SMO, que pode ser tanto utilizada pelo .NET quanto pelo PowerShell para criar aplicações ou scripts para gerenciar o SQL Server. Nesta semana, demonstrarei como utilizar as classes Smo.Backup e Smo.BackupDeviceItem, de um outro assembly do SMO, o SmoExtended, que poderá ser encontrado no caminho: C:\Program [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3847&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>No artigo da semana passada, tivemos uma breve <a title="Gerenciando o SQL Server por meio de aplicações .NET – Primeiros passos" href="http://sqlfromhell.wordpress.com/2012/01/05/gerenciando-o-sql-server-por-meio-de-aplicacoes-net-primeiros-passos/" target="_blank">introdução à biblioteca SMO</a>, que pode ser tanto utilizada pelo .NET quanto pelo PowerShell para criar aplicações ou scripts para gerenciar o SQL Server.</p>
<p>Nesta semana, demonstrarei como utilizar as classes Smo.Backup e Smo.BackupDeviceItem, de um outro assembly do SMO, o SmoExtended, que poderá ser encontrado no caminho:</p>
<p><em>C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.SmoExtended.dll<br />
</em></p>
<p>As classes Smo.Backup e Smo.BackupDeviceItem são responsáveis respectivamente por gerar backup e determinar onde este será salvo.</p>
<p>Para demonstrar a utilização destas classes, adequei o <a title="Gerenciando o SQL Server por meio de aplicações .NET – Primeiros passos" href="http://sqlfromhell.wordpress.com/2012/01/05/gerenciando-o-sql-server-por-meio-de-aplicacoes-net-primeiros-passos/" target="_blank">exemplo da semana passada</a>, que relacionava os bancos de dados de uma determinada instancia do SQL Server, para também possibilitar identificar a data de ultimo backup de um determinado banco de dados e realizar o backup do mesmo:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2012/01/010912_2111_gerandoback1.png?w=655" alt="" /></p>
<p>Ajuste realizado:</p>
<p><pre class="brush: csharp;">// Gerando a classe Smo.Backup
var backup = new Backup { Database = database.Name };

// Definindo com o Smo.BackupDeviceItem onde será salvo o backup
var path = string.Format(@&quot;C:\Temp\{0}_{1:yyyy-MM-dd HH_mm_ss}.bak&quot;, database.Name, DateTime.Now);

backup.Devices.AddDevice(path, DeviceType.File);

// Executando o backup
backup.SqlBackup(server);</pre></p>
<p><span id="more-3847"></span>Código completo:</p>
<p><pre class="brush: csharp;">using System;
using System.Linq;
using System.Security;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

namespace DemoSmo
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine(&quot;Servidor:&quot;);
            var serverInstance = Console.ReadLine();
            Console.WriteLine();

            Console.WriteLine(&quot;Usuário:&quot;);
            var user = Console.ReadLine();
            Console.WriteLine();

            ServerConnection conn;

            if (!string.IsNullOrEmpty(user))
            {
                Console.WriteLine(&quot;Senha:&quot;);
                var pass = ReadPassword();
                Console.WriteLine();

                // Criando um objeto de conexão com SQL Authentication
                conn = new ServerConnection(serverInstance, user, pass);
            }
            else
            {
                // Criando um objeto de conexão com Windows Authentication
                conn = new ServerConnection(serverInstance);
            }

            // Criando um objeto que abstrai a instância do SQL Server
            var server = new Server(conn);

            Console.WriteLine(&quot;Carregando lista de bancos de dados ...&quot;);
            Console.WriteLine();

            try
            {
                // Recuperando a lista de banco de dados
                var lst = server.Databases.Cast&lt;Database&gt;().OrderBy(db =&gt; db.ID).ToArray();

                // Escrevendo a relação de banco de dados encontrados
                foreach (var db in lst) Console.WriteLine(&quot;{0}. {1}&quot;, db.ID, db.Name);

                // Recuperando o banco de dados por meio do número informado pelo usuário
                Console.WriteLine();
                Console.WriteLine(&quot;Digite o número do banco de dados:&quot;);

                var key = Console.ReadLine();

                int id;

                if (!int.TryParse(key, out id)) return;

                var database = lst.FirstOrDefault(db =&gt; db.ID == id);

                if (database == null) return;

                Console.WriteLine();

                // Recuperando informações do último backup do banco de dados
                if (database.LastBackupDate == DateTime.MinValue)
                {
                    Console.WriteLine(&quot;Nenhum backup encontrado.&quot;);
                }
                else
                {
                    Console.WriteLine(&quot;Último backup: {0:yyyy-MM-dd HH:mm:ss}&quot;, database.LastBackupDate);
                }
                Console.WriteLine();
                Console.WriteLine(&quot;Aperte ENTER para gerar um backup, ou qualquer outra tecla para sair.&quot;);

                if (Console.ReadKey().Key != ConsoleKey.Enter) return;

                // Gerando a classe Smo.Backup
                var backup = new Backup { Database = database.Name };

                // Definindo com o Smo.BackupDeviceItem onde será salvo o backup
                var path = string.Format(@&quot;C:\Temp\{0}_{1:yyyy-MM-dd HH_mm_ss}.bak&quot;, database.Name, DateTime.Now);

                backup.Devices.AddDevice(path, DeviceType.File);

                // Executando o backup
                backup.SqlBackup(server);

                Console.WriteLine();
                Console.WriteLine(&quot;Backup concluído ...&quot;);
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        // Método para evitar que a senha digitada apareça na tela da aplicação
        private static SecureString ReadPassword()
        {
            var pass = new SecureString();

            while (true)
            {
                var key = Console.ReadKey(true);

                if (key.Key == ConsoleKey.Enter) break;

                pass.AppendChar(key.KeyChar);

                Console.Write(&quot;*&quot;);
            }

            Console.WriteLine();

            return pass;
        }
    }
}</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3847/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3847&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2012/01/09/gerando-backups-do-sql-server-por-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>

		<media:content url="http://sqlfromhell.files.wordpress.com/2012/01/010912_2111_gerandoback1.png" medium="image" />
	</item>
		<item>
		<title>Gerenciando o SQL Server por meio de aplicações .NET – Primeiros passos</title>
		<link>http://sqlfromhell.wordpress.com/2012/01/05/gerenciando-o-sql-server-por-meio-de-aplicacoes-net-primeiros-passos/</link>
		<comments>http://sqlfromhell.wordpress.com/2012/01/05/gerenciando-o-sql-server-por-meio-de-aplicacoes-net-primeiros-passos/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 19:11:11 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[SMO]]></category>
		<category><![CDATA[Trabalhando com SMO]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management Objects]]></category>

		<guid isPermaLink="false">https://sqlfromhell.wordpress.com/?p=3834</guid>
		<description><![CDATA[Já tratamos no blog duas formas de interação da .NET Framework com o SQL Server, sendo a primeira e principal forma interação, por ADO.NET para execução de comandos T-SQL,  e a segunda forma, por SQL CLR para estender funcionalidades do SQL com .NET. Além destas duas formas de interação, temos o SMO (SQL Server Management [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3834&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Já tratamos no blog duas formas de interação da .NET Framework com o SQL Server, sendo a primeira e principal forma interação, por <a title="ADO.NET: Introdução" href="http://sqlfromhell.wordpress.com/2009/10/31/ado-net-introducao/" target="_blank">ADO.NET para execução de comandos T-SQL</a>,  e a segunda forma, por <a title="Trabalhando com SQL CLR – Resumo" href="http://sqlfromhell.wordpress.com/2011/01/03/trabalhando-com-sql-clr/" target="_blank">SQL CLR para estender funcionalidades do SQL com .NET</a>.</p>
<p>Além destas duas formas de interação, temos o SMO (<a title="SQL Server Management Objects" href="http://sqlfromhell.wordpress.com/category/smo/" target="_blank">SQL Server Management Objects</a>) que nos permite gerenciar o SQL Server utilizando um coleção de assemblies .NET, que podem ser utilizados em scripts do <a title="PowerShell" href="http://sqlfromhell.wordpress.com/category/powershell/" target="_blank">PowerShell</a> ou em aplicações .NET de forma bem transparente.</p>
<p>Há alguns anos escrevi um artigo para revista <a title="Mundo.Net: Gerenciando o SQL Server através de aplicações .Net" href="http://sqlfromhell.wordpress.com/2010/02/24/mundo-net-gerenciando-o-sql-server-atraves-de-aplicacoes-net/" target="_blank">Mundo .NET</a> sobre este assunto, mas não demonstrei muito do potencial que temos com SMO.</p>
<p>A partir deste artigo, pretendo iniciar uma nova série de artigos que tratarão várias formas de utilizar SMO com .NET e também com <a title="PowerShell" href="http://sqlfromhell.wordpress.com/category/powershell/" target="_blank">PowerShell</a> (mais como um comparativo de como fazer com .NET e com PowerShell).</p>
<p>Hoje, vamos começar com uma aplicação .NET simples que ilustra bem a utilização do SMO.</p>
<p>Tento um projeto .NET, o primeiro passo será encontrar os assemblies que compõe a SMO, no caso do SQL Server 2008 (100). Eles podem ser encontrados nas pastas:</p>
<p><em>C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies<br />
</em><em>C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies</em></p>
<p><strong>Caso não os encontre, você pode instalá-los:</strong><br />
<a title="Microsoft SQL Server 2008 Management Objects" href="http://www.microsoft.com/download/en/details.aspx?id=16177#SMO" target="_blank">http://www.microsoft.com/download/en/details.aspx?id=16177#SMO</a><br />
(Microsoft SQL Server 2008 Management Objects)</p>
<p>Para a nossa primeira aplicação, precisaremos dos seguintes assemblies referenciados em nossa aplicação:</p>
<p><em>Microsoft.SqlServer.Smo.dll<br />
Microsoft.SqlServer.ConnectionInfo.dll<br />
Microsoft.SqlServer.Management.Sdk.Sfc.dll<br />
</em></p>
<p><img src="http://sqlfromhell.files.wordpress.com/2012/01/010512_1910_netesmoge1.png?w=655" alt="" /></p>
<p>Adicionadas as referencias ao projeto, será possível criar uma aplicação simples em .NET (em C# no meu caso) para relacionar os bancos de dados de uma determinada instancia do SQL Server:</p>
<p><pre class="brush: csharp;">using System;
using System.Linq;
using System.Security;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

namespace DemoSmo
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine(&quot;Servidor:&quot;);
            var serverInstance = Console.ReadLine();
            Console.WriteLine();

            Console.WriteLine(&quot;Usuário:&quot;);
            var user = Console.ReadLine();
            Console.WriteLine();

            ServerConnection conn;

            if (!string.IsNullOrEmpty(user))
            {
                Console.WriteLine(&quot;Senha:&quot;);
                var pass = ReadPassword();
                Console.WriteLine();

                // Criando um objeto de conexão com SQL Authentication
                conn = new ServerConnection(serverInstance, user, pass);
            }
            else
            {
                // Criando um objeto de conexão com Windows Authentication
                conn = new ServerConnection(serverInstance);
            }

            // Criando um objeto que abstrai a instância do SQL Server
            var server = new Server(conn);

            Console.WriteLine(&quot;Carregando lista de bancos de dados ...&quot;);
            Console.WriteLine();

            try
            {
                // Recuperando a lista de banco de dados
                var lst = server.Databases;

                // Escrevendo a relação de banco de dados encontrados
                foreach (var db in lst.Cast&lt;Database&gt;().OrderBy(e =&gt; e.ID))
                {
                    Console.WriteLine(&quot;{0}. {1}&quot;, db.ID, db.Name);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine();
            Console.WriteLine(&quot;Concluído ...&quot;);
            Console.ReadKey();
        }

        // Método para evitar que a senha digitada apareça na tela da aplicação
        private static SecureString ReadPassword()
        {
            var pass = new SecureString();

            while (true)
            {
                var key = Console.ReadKey(true);

                if (key.Key == ConsoleKey.Enter) break;

                pass.AppendChar(key.KeyChar);

                Console.Write(&quot;*&quot;);
            }

            Console.WriteLine();

            return pass;
        }
    }
}
</pre></p>
<p>E por fim, executando a aplicação por <a title="Habilitando SQL Authentication e o usuário “sa”" href="http://sqlfromhell.wordpress.com/2009/05/24/habilitando-sql-authentication-e-o-usuario-sa/" target="_blank">SQL Authentication</a>:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2012/01/010512_1910_netesmoge2.png?w=655" alt="" /></p>
<p>E por Windows Authetication:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2012/01/010512_1910_netesmoge3.png?w=655" alt="" /></p>
<p>Por enquanto não há muitos materiais no blog sobre <a title="SQL Server Management Objects" href="http://sqlfromhell.wordpress.com/category/smo/" target="_blank">SMO</a>, então você pode esperar novos artigos serem publicados, encontrar outras fontes pela internet ou comprar <a title="Mundo.Net: Gerenciando o SQL Server através de aplicações .Net" href="http://sqlfromhell.wordpress.com/2010/02/24/mundo-net-gerenciando-o-sql-server-atraves-de-aplicacoes-net/" target="_blank">a revista que tem o artigo que escrevi sobre SMO</a>.</p>
<p>Até o próximo artigo!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3834/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3834/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3834/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3834/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3834/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3834/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3834/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3834/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3834/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3834/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3834/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3834/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3834/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3834/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3834&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2012/01/05/gerenciando-o-sql-server-por-meio-de-aplicacoes-net-primeiros-passos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>

		<media:content url="http://sqlfromhell.files.wordpress.com/2012/01/010512_1910_netesmoge1.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2012/01/010512_1910_netesmoge2.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2012/01/010512_1910_netesmoge3.png" medium="image" />
	</item>
		<item>
		<title>A verdade sobre a instalação em Português do SQL Server</title>
		<link>http://sqlfromhell.wordpress.com/2012/01/03/sql-server-instalacao/</link>
		<comments>http://sqlfromhell.wordpress.com/2012/01/03/sql-server-instalacao/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 18:16:44 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[Query 4 Fun]]></category>
		<category><![CDATA[Query From Hell]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">http://sqlfromhell.wordpress.com/?p=3801</guid>
		<description><![CDATA[Seja consciente, a cada instalação em Português do Windows Server ou SQL Server, morre um mico leão dourado&#8230; Então pensem no bem das futuras gerações, instalem o Windows Server e o SQL Server em Inglês. Agradecimentos ao @magalhaesv pela frase que deu origem a esta campanha.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3801&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-3802 aligncenter" title="Seja consciente, a cada instalação em Português do Windows Server ou SQL Server, morre um mico leão dourado..." src="http://sqlfromhell.files.wordpress.com/2012/01/micoleaosqlserver.gif?w=655" alt="Seja consciente, a cada instalação em Português do Windows Server ou SQL Server, morre um mico leão dourado... Então pensem no bem das futuras gerações, instalem o Windows Server e o SQL Server em Inglês."   /><br />
<span id="more-3801"></span></p>
<p style="text-align:center;"><em>Seja consciente, a cada instalação em Português do Windows Server ou SQL Server,<br />
morre um mico leão dourado&#8230;</em></p>
<p style="text-align:center;"><em>Então pensem no bem das futuras gerações, instalem o Windows Server<br />
e o SQL Server em Inglês.</em></p>
<p>Agradecimentos ao <a href="http://twitter.com/magalhaesv" target="_blank">@magalhaesv</a> pela frase que deu origem a esta campanha.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3801/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3801&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2012/01/03/sql-server-instalacao/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>

		<media:content url="http://sqlfromhell.files.wordpress.com/2012/01/micoleaosqlserver.gif" medium="image">
			<media:title type="html">Seja consciente, a cada instalação em Português do Windows Server ou SQL Server, morre um mico leão dourado...</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerShell &#8211; Especial de Natal</title>
		<link>http://sqlfromhell.wordpress.com/2011/12/21/powershell-especial-de-natal-2011/</link>
		<comments>http://sqlfromhell.wordpress.com/2011/12/21/powershell-especial-de-natal-2011/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 21:20:27 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Query 4 Fun]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Feliz Ano Novo]]></category>
		<category><![CDATA[Feliz Natal]]></category>

		<guid isPermaLink="false">https://sqlfromhell.wordpress.com/?p=3790</guid>
		<description><![CDATA[Boa noite pessoas, Seguindo tradição do blog, pelo terceiro Natal consecutivo, estava planejando algo bem diferente dos anos anteriores, e em conversas com o @WilliamPietro, tivemos a ideia de criar um script de PowerShell especial para esta data. Abaixo o script: Resultado, durante aproximadamente 10 minutos a tela do PowerShell exibirá de forma alternada as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3790&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Boa noite pessoas,</p>
<p>Seguindo tradição do blog, pelo terceiro Natal consecutivo, estava planejando algo bem diferente dos anos anteriores, e em conversas com o <a href="https://twitter.com/WilliamPietro">@WilliamPietro</a>, tivemos a ideia de criar um script de PowerShell especial para esta data.</p>
<p>Abaixo o script:</p>
<p><pre class="brush: powershell;">$a = (Get-Host).UI.RawUI
$a.WindowTitle = &quot;PowerShell - Especial de Natal&quot;
$b = $a.WindowSize
$b.Width = 18
$b.Height = 12
$a.WindowSize = $b

$c = &quot;        .`n       .#.`n      .###.`n     .#%##%.`n    .%##%###.`n   .##%###%##.`n  .#%###%##%##.`n        #`n        #`n&quot;

1..300 | % {
	$a.BackgroundColor = &quot;darkgreen&quot;
	$a.ForegroundColor = &quot;white&quot;
	cls
	Write-Host $c
	Write-Host &quot;    HO HO HO&quot;
	Wait-Event -timeout 1
	$a.BackgroundColor = &quot;red&quot;
	$a.ForegroundColor = &quot;white&quot;
	cls
	Write-Host $c
	Write-Host &quot;   Feliz Natal&quot;
	Wait-Event -timeout 1
}
</pre></p>
<p>Resultado, durante aproximadamente 10 minutos a tela do PowerShell exibirá de forma alternada as seguintes mensagens:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122111_2120_powershelle1.png?w=655" alt="" /><img src="http://sqlfromhell.files.wordpress.com/2011/12/122111_2120_powershelle2.png?w=655" alt="" /></p>
<p>Boas festas, e que tenhamos um ótimo 2012!</p>
<p><strong>Artigos relacionados: </strong></p>
<p><a title="Spatial Data: STGeomFromText" href="http://sqlfromhell.wordpress.com/2009/12/13/spatial-data-stgeomfromtext/" target="_blank">Artigo de Natal de 2009</a></p>
<p><a title="Um pouco de Google Maps neste Natal" href="http://sqlfromhell.wordpress.com/2010/12/21/um-pouco-de-google-maps-neste-natal/" target="_blank">Artigo de Natal de 2010</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3790/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3790/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3790/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3790/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3790/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3790/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3790/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3790/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3790/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3790/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3790/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3790/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3790/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3790/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3790&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2011/12/21/powershell-especial-de-natal-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122111_2120_powershelle1.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122111_2120_powershelle2.png" medium="image" />
	</item>
		<item>
		<title>Desenvolvendo componentes COM+ com .NET</title>
		<link>http://sqlfromhell.wordpress.com/2011/12/20/desenvolvendo-componentes-complus-com-net/</link>
		<comments>http://sqlfromhell.wordpress.com/2011/12/20/desenvolvendo-componentes-complus-com-net/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 11:56:00 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[Deprecated Features]]></category>
		<category><![CDATA[Interoperabilidade]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[.NET Framework]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[COM+]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">https://sqlfromhell.wordpress.com/?p=3771</guid>
		<description><![CDATA[Quando se trabalha com .NET em sistemas mistos com plataformas legadas, como ASP Classic, VB, VBScript, Delphi ou até mesmo Ole Automation do SQL Server, o .NET ainda permite interoperabilidade com estes sistemas por meio de componentes COM+, seja o .NET consumindo COM+ ou a plataforma legada consumindo um COM+ desenvolvido em .NET. Como existem [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3771&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quando se trabalha com .NET em sistemas mistos com plataformas legadas, como ASP Classic, VB, VBScript, Delphi ou até mesmo Ole Automation do SQL Server, o .NET ainda permite interoperabilidade com estes sistemas por meio de componentes COM+, seja o .NET consumindo COM+ ou a plataforma legada consumindo um COM+ desenvolvido em .NET.</p>
<p>Como existem poucos artigos em português para explicar como desenvolver COM+ com .NET, procurei a demonstrar a criação de componente simples com C# no Visual Studio 2010.</p>
<p>Para a criação do componente, utilizei um projeto do tipo Class Library:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven1.png?w=655" alt="" /></p>
<p>A este projeto adicionei referência à System.EnterpriseServices:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven2.png?w=655" alt="" /></p>
<p>Nas propriedades do projeto, editei a &#8220;Assembly Information&#8221;,</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven3.png?w=655" alt="" /></p>
<p>especificando o Assembly como COM-Visible:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven4.png?w=655" alt="" /></p>
<p>De acordo com a plataforma do sistema legado (x64, x86) que o COM+ irá trabalhar, defini esta em Plataform target:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven5.png?w=655" alt="" /></p>
<p><em>Obs.: Esta opção é muito importante, pois é muito comum criar um componente em x64 e este não ser visível para uma aplicação VB x86, assim como tentar criar componentes x86 para tentar acessar por um VBScript que será executado em uma plataforma x64.</em></p>
<p>Por fim, criei uma chave &#8220;strong name&#8221; para o projeto:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven6.png?w=655" alt="" /></p>
<p>Para uma classe .NET ser considerada componente, ela deverá ser herdada de System.EnterpriseServices.ServicedComponent, conforme abaixo, onde temos uma classe simples cujo o seu único método retorna um texto:</p>
<p><pre class="brush: csharp;">
using System.EnterpriseServices;

namespace DemoCom
{
    public class Objeto : ServicedComponent
    {
        public string Teste()
        {
            return &quot;Demo COM+ //By SQL From Hell&quot;;
        }
    }
}
</pre></p>
<p>Após realizar o build do projeto, utilizei o regsvcs de acordo com a plataforma x86/x64 e versão da .NET Framework do projeto, informando o caminho do seu assembly (DLL) onde esta &#8220;$(TargetPath)&#8221;.</p>
<p><em>C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe $(TargetPath)</em></p>
<p><em>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regsvcs.exe $(TargetPath)</em></p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven7.png?w=655" alt="" /></p>
<p>Após a instalação do componente, este será visível na relação de COM+ Applications no Component Services:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven8.png?w=655" alt="" /></p>
<p>Para testar o COM+, utilizarei um VBScript simples:</p>
<p><pre class="brush: vb;">
Dim obj
Set obj = CreateObject(&quot;DemoCom.Objeto&quot;)
MsgBox obj.Teste
</pre></p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven9.png?w=655" alt="" /></p>
<p>Também sendo possível por Ole Automation do SQL Server:</p>
<p><pre class="brush: sql;">
DECLARE @obj INT

DECLARE @return INT, @text NVARCHAR(4000)

-- Criando a 'instância' do componentes

EXEC @return = sp_OACreate 'DemoCom.Objeto', @obj OUT

-- Verificando se a chamada obteve sucesso.

IF @return = 0 PRINT 'COM: OK'

-- Chamando o método Teste

EXEC @return = sp_OAMethod @obj, 'Teste', @text OUT

IF @return = 0 PRINT 'Teste: OK'

PRINT 'Resultado: ' + @text
</pre></p>
<p>E por fim, para desinstalar o componente, bastará utilizar o mesmo regsvcs informando &#8220;/u&#8221;.</p>
<p><em>C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe /u $(TargetPath)</em></p>
<p><em>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regsvcs.exe /u $(TargetPath)</em></p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven10.png?w=655" alt="" /></p>
<p><strong>Artigos relacionados:</strong></p>
<p><a title="Acessando dados de Web Service com Ole Automation Procedures" href="http://sqlfromhell.wordpress.com/2011/09/29/ole-automation-procedures/" target="_blank">Acessando dados de Web Service com Ole Automation Procedures</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3771/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3771&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2011/12/20/desenvolvendo-componentes-complus-com-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven1.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven2.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven3.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven4.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven5.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven6.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven7.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven8.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven9.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/12/122011_1155_desenvolven10.png" medium="image" />
	</item>
		<item>
		<title>Gerando templates das System Views e Information Functions</title>
		<link>http://sqlfromhell.wordpress.com/2011/12/15/template-views-e-information-functions/</link>
		<comments>http://sqlfromhell.wordpress.com/2011/12/15/template-views-e-information-functions/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 22:20:42 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">http://sqlfromhell.wordpress.com/?p=1274</guid>
		<description><![CDATA[Boa noite pessoas, para limpar minha pasta de scripts, segue outras duas queries que ainda não tinha colocado no blog. Gerando templetes das System Views: SELECT [name] AS [View] ,'SELECT * FROM [sys].['+ [name] + ']' AS Query FROM sys.all_views WHERE [schema_id] = SCHEMA_ID('sys') ORDER BY [name] Gerando templates das Information Functions: SELECT [name] AS [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=1274&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Boa noite pessoas, para limpar minha pasta de scripts, segue outras duas queries que ainda não tinha colocado no blog.</p>
<p>Gerando templetes das System Views:</p>
<div style="background-color:#000000;color:#ffffff;font-weight:bold;border:#ffffff 1px;margin:5px;padding:5px;"><code>SELECT<br />
[name] AS [View]<br />
,'SELECT * FROM [sys].['+ [name] + ']' AS Query<br />
FROM sys.all_views<br />
WHERE [schema_id] = SCHEMA_ID('sys')<br />
ORDER BY [name]</code></div>
<p>Gerando templates das Information Functions:</p>
<div style="background-color:#000000;color:#ffffff;font-weight:bold;border:#ffffff 1px;margin:5px;padding:5px;"><code>SELECT<br />
[name] AS [Function]<br />
,'SELECT * FROM [sys].['+ [name] + ']'<br />
+ ISNULL('(' + LEFT([parameters], LEN([parameters]) - 1) + ')', '')<br />
AS Query<br />
FROM sys.all_objects o<br />
CROSS APPLY<br />
(<br />
SELECT CAST((<br />
SELECT [name] + ', '<br />
FROM [sys].[all_parameters]<br />
WHERE [object_id] = o.[object_id]<br />
FOR XML PATH('')<br />
) AS VARCHAR(8000)) AS [parameters]<br />
) p<br />
WHERE [schema_id] = SCHEMA_ID('sys')<br />
AND [type] = 'IF'<br />
ORDER BY [name]</code></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/1274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/1274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/1274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/1274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/1274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/1274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/1274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/1274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/1274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/1274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/1274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/1274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/1274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/1274/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=1274&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2011/12/15/template-views-e-information-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>
	</item>
		<item>
		<title>Excessos e descasos na gestão na área de TI</title>
		<link>http://sqlfromhell.wordpress.com/2011/12/15/excessos-e-descasos-na-gestao-na-area-de-ti/</link>
		<comments>http://sqlfromhell.wordpress.com/2011/12/15/excessos-e-descasos-na-gestao-na-area-de-ti/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 22:07:53 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[Gestão]]></category>
		<category><![CDATA[Controle]]></category>
		<category><![CDATA[Execução]]></category>
		<category><![CDATA[Gestão de TI]]></category>
		<category><![CDATA[Liderança]]></category>
		<category><![CDATA[Organização]]></category>
		<category><![CDATA[Planejamento]]></category>

		<guid isPermaLink="false">http://sqlfromhell.wordpress.com/?p=3671</guid>
		<description><![CDATA[Ao se falar em gestão na área de TI, a temos fundamentada em cinco atividades básicas da administração: Planejamento, Organização, Execução, Controle e Liderança. Mas tanto excessos, como a falta de dedicação em algumas destas atividades, são fatores a prejudicar os resultados que são esperados deste área. Os principais problemas são visíveis já na atividade [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3671&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ao se falar em gestão na área de TI, a temos fundamentada em cinco atividades básicas da administração: <strong>Planejamento, Organização, Execução, Controle e Liderança</strong>. Mas tanto excessos, como a falta de dedicação em algumas destas atividades, são fatores a prejudicar os resultados que são esperados deste área.</p>
<p>Os principais problemas são visíveis já na atividade de Planejamento, onde são determinadas as ações pelas quais as estratégias da organização serão suportadas ou executadas pela área de TI. O excesso de planejamento neste momento pode estar relacionado ao uso demasiado de tempo para planejar como se dará toda a execução, numa tentativa utópica de planejar tudo o que será feito e prever todos os problemas que podem ocorrer durante a execução, tirando muito da autonomia de quem executará, além do planejamento ter que lidar com problemas tão complexos e dinâmicos que não poderão estar claros neste momento.</p>
<p>Da mesma forma, <strong>o descaso no planejamento pode tornar o objetivo da execução algo muito vago e exigir muito da autonomia de pessoas que talvez não estejam aptas para tomar iniciativas ou decisões</strong>. Assim, a busca de um equilíbrio no planejamento, permitindo uma visão clara do que é esperado da equipe e além de dar um pouco de autonomia à equipe (de acordo com a maturidade desta), para que esta equipe tenha o poder de planejar a execução das atividades mais específicas e tomar decisões a fim de resolver problemas de pouco impacto que venham a surgir durante a execução.</p>
<p>A atividade de Organização é vítima normalmente do descaso, por não orientar a equipe sobre as responsabilidades de cada elemento e também não definindo as regras que devem ser obedecidas (ex.: como se dará a comunicação com outras áreas da organização, clientes e fornecedores), o que poderá gerar conflitos internos na equipe durante o andamento dos trabalhos, ou conflitos entre a equipe e as outras áreas da organização.</p>
<p><strong>A atividade de Organização permite a equipe entenda suas responsabilidades e as regras para execução das suas atividades</strong>. Sendo estas bem definidas, exigirá poucas mudanças durante a execução das atividades, além de suprimir conflitos desnecessários e evitar que determinadas pessoas fiquem sobrecarregadas de atividades.</p>
<p><strong>Se as atividades de Organização e Planejamento não estiverem bem definidas, os problemas serão visíveis na atividade de Execução, resultando em retrabalhos, conflitos, atrasos e não alcançando os resultados esperados pelas suas atividades.</strong></p>
<p>Durante a atividade de Execução, a atividade de Controle permite verificar problemas não esperados ou observar o comportamento e o impacto de problemas previstos, o que possibilita à equipe e ao gestor definir novos planos e se reorganizar a fim de resolver tais ocorrências. Esta atividade requer um pouco de prudência do gestor, pois a falta de controle do que esta acontecendo pode comprometer toda a execução das atividades, e o excesso de controle pode gerar insatisfação por conflitar com a maturidade e a cultura da equipe (hábitos, forma de fazer suas atividades e resolver problemas).</p>
<p>A atividade de Liderança pode sofrer pelo excesso, tornando <strong>a figura do gestor mais como um “pai” da equipe, tornando a equipe superdependente do seu gestor</strong>. Ou sofrer pelo descaso, onde o gestor não é visto como elemento que merece alguma consideração por parte da equipe ou que visto como uma figura que “só atrapalha, no lugar de ajudar”.</p>
<p><strong>A figura do gestor deve vista de acordo com a maturidade da equipe</strong>, na qual deve ser visto como um elemento de auxilio (representante na comunicação com os outros setores da organização, parceiros, clientes e fornecedores) para equipes maduras e que já possuem autonomia, ou como elemento de orientação para que a equipe ainda não madura chegue a desenvolver seus relacionamentos e aos poucos conquistar sua autonomia.</p>
<p>Assim, evitando o excesso ou o descaso com as atividades de gestão na área de TI, será possível alcançar os resultados esperados pela organização, assim como fomentar a maturidade e autonomia da equipe, exigindo do gestor <strong>o papel de coordenar a equipe e melhorar os relacionamentos desta com elementos internos e externos da organização</strong>.</p>
<p><em>Rascunho escrito em Setembro de 2011.</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3671/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3671&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2011/12/15/excessos-e-descasos-na-gestao-na-area-de-ti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>
	</item>
		<item>
		<title>Iniciando com XQuery – Namespaces têm solução!</title>
		<link>http://sqlfromhell.wordpress.com/2011/11/29/iniciando-com-xquery-namespaces-tem-solucao/</link>
		<comments>http://sqlfromhell.wordpress.com/2011/11/29/iniciando-com-xquery-namespaces-tem-solucao/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 00:14:35 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[Trabalhando com XML]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[XQuery]]></category>

		<guid isPermaLink="false">https://sqlfromhell.wordpress.com/?p=3745</guid>
		<description><![CDATA[É muito comum em cenário com XML ter situações que no cabeçalho do arquivo há &#8220;xmlns&#8221; e nós com prefixos &#8220;xsi:&#8221;, &#8220;xsd:&#8221; e entre outros, deixando o DBA ou desenvolvedor responsável pelas consultas confuso com o fato de consultas com simples XQueries não trazerem nenhum resultado. Mesmo que o comportamento &#8220;padrão&#8221; nestes cenários na maioria [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3745&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>É muito comum em cenário com XML ter situações que no cabeçalho do arquivo há &#8220;xmlns&#8221; e nós com prefixos &#8220;xsi:&#8221;, &#8220;xsd:&#8221; e entre outros, deixando o DBA ou desenvolvedor responsável pelas consultas <strong>confuso com o fato de consultas com simples XQueries não trazerem nenhum resultado.</strong></p>
<p>Mesmo que o comportamento &#8220;padrão&#8221; nestes cenários na maioria das vezes é dar um REPLACE no cabeçalho do XML, vamos aprender como resolver esta situação de forma prática.</p>
<p>O XML que usarei para o exemplo possui um namespace bem comum para dados oriundos de aplicações como o http://tempuri.org/, que é o namespace padrão do exemplo (URL declarada com xmlns sem qualquer sufixo):</p>
<p><pre class="brush: sql;">DECLARE @X XML

SET @X = '
&lt;ArrayOfDsItem xmlns=&quot;http://tempuri.org/&quot; xmlns:ns2=&quot;http://tempuri2.org/&quot;&gt;
  &lt;DsItem Code=&quot;1&quot; Value=&quot;ACRE&quot; Value2=&quot;AC&quot;&gt;
    &lt;ns2:Status&gt;Não existe&lt;/ns2:Status&gt;
  &lt;/DsItem&gt;
  &lt;DsItem Code=&quot;5&quot; Value=&quot;BAHIA&quot; Value2=&quot;BA&quot; /&gt;
  &lt;DsItem Code=&quot;11&quot; Value=&quot;MATO GROSSO&quot; Value2=&quot;MT&quot; /&gt;
  &lt;DsItem Code=&quot;13&quot; Value=&quot;MINAS GERAIS&quot; Value2=&quot;MG&quot; /&gt;
  &lt;DsItem Code=&quot;19&quot; Value=&quot;RIO DE JANEIRO&quot; Value2=&quot;RJ&quot; /&gt;
  &lt;DsItem Code=&quot;21&quot; Value=&quot;RIO GRANDE DO SUL&quot; Value2=&quot;RS&quot; /&gt;
  &lt;DsItem Code=&quot;24&quot; Value=&quot;SÃO PAULO&quot; Value2=&quot;SP&quot; /&gt;
&lt;/ArrayOfDsItem&gt;'</pre></p>
<p>Visto que estamos tratando de um namespace padrão, podemos determinar ou por T-SQL ou por XQuery, que este é o bendito namespace de todo o XML:</p>
<p><pre class="brush: sql;">-- Definindo o namespace padrão
;WITH XMLNAMESPACES (DEFAULT 'http://tempuri.org/')
SELECT
	E.value('@Value', 'varchar(25)') AS Estado,
	E.value('@Value2', 'char(2)') AS Sigla
FROM @X.nodes('//ArrayOfDsItem/DsItem') AS N(E)

SELECT
	E.value('@Value', 'varchar(25)') AS Estado,
	E.value('@Value2', 'char(2)') AS Sigla
FROM @X.nodes('
	declare default element namespace &quot;http://tempuri.org/&quot;;
	//ArrayOfDsItem/DsItem
') AS N(E)</pre></p>
<p>Ou podemos criar um namespace sinônimo (ns), o que afetará um pouco a nossa XQuery:</p>
<p><pre class="brush: sql;">-- Definindo um sinonimo para namespace padrão (ns)
;WITH XMLNAMESPACES ('http://tempuri.org/' AS ns)
SELECT
	E.value('@Value', 'varchar(25)') AS Estado,
	E.value('@Value2', 'char(2)') AS Sigla
FROM @X.nodes('//ns:ArrayOfDsItem/ns:DsItem') AS N(E)

SELECT
	E.value('@Value', 'varchar(25)') AS Estado,
	E.value('@Value2', 'char(2)') AS Sigla
FROM @X.nodes('
	declare namespace ns = &quot;http://tempuri.org/&quot;;
	//ns:ArrayOfDsItem/ns:DsItem
') AS N(E)</pre></p>
<p>Mas e agora, tenho dois ou mais namespaces no XML, o que podemos fazer? Podemos optar por qualquer uma das práticas anteriores (definindo um sinônimo ou definindo o namespace padrão) e mais os sinônimos para os namespaces secundários:</p>
<p><pre class="brush: sql;">-- Definindo o namespace padrão e o sinonimo para o secundário (ns2)
;WITH XMLNAMESPACES (
	DEFAULT 'http://tempuri.org/',
	'http://tempuri2.org/' AS ns2
)
SELECT
	E.value('@Value', 'varchar(25)') AS Estado,
	E.value('@Value2', 'char(2)') AS Sigla,
	E.value('ns2:Status[1]', 'varchar(25)') AS Comentario
FROM @X.nodes('//ArrayOfDsItem/DsItem') AS N(E)

SELECT
E.value('@Value', 'varchar(25)') AS Estado,
E.value('@Value2', 'char(2)') AS Sigla,
E.value('
	declare namespace ns2 = &quot;http://tempuri2.org/&quot;;
	ns2:Status[1]
' , 'varchar(25)') AS Comentario
FROM @X.nodes('
	declare default element namespace &quot;http://tempuri.org/&quot;;
	//ArrayOfDsItem/DsItem
') AS N(E)

-- Definindo sinonimos para namespace padrão (ns) e para o secundário (ns2)
;WITH XMLNAMESPACES (
	'http://tempuri.org/' AS ns,
	'http://tempuri2.org/' AS ns2
)
SELECT
	E.value('@Value', 'varchar(25)') AS Estado,
	E.value('@Value2', 'char(2)') AS Sigla,
	E.value('ns2:Status[1]', 'varchar(25)') AS Comentario
FROM @X.nodes('//ns:ArrayOfDsItem/ns:DsItem') AS N(E)

SELECT
E.value('@Value', 'varchar(25)') AS Estado,
E.value('@Value2', 'char(2)') AS Sigla,
E.value('
	declare namespace ns2 = &quot;http://tempuri2.org/&quot;;
	ns2:Status[1]
' , 'varchar(25)') AS Comentario
FROM @X.nodes('
	declare namespace ns = &quot;http://tempuri.org/&quot;;
	//ns:ArrayOfDsItem/ns:DsItem
') AS N(E)</pre></p>
<p>Ficou legal, não ficou? Mas nada te impede de colocar alguns REPLACEs na sua query e ser feliz&#8230;</p>
<p>No próximo artigo veremos com iniciar um pequeno caos com o FOR XML e Namespaces&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3745/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3745&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2011/11/29/iniciando-com-xquery-namespaces-tem-solucao/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>
	</item>
		<item>
		<title>Contando os minutos para o SQL Saturday 100</title>
		<link>http://sqlfromhell.wordpress.com/2011/11/25/contando-os-minutos-para-o-sql-saturday-100/</link>
		<comments>http://sqlfromhell.wordpress.com/2011/11/25/contando-os-minutos-para-o-sql-saturday-100/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 14:06:45 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[SQL Saturday 100]]></category>

		<guid isPermaLink="false">https://sqlfromhell.wordpress.com/?p=3738</guid>
		<description><![CDATA[Bom dia pessoas, Neste sábado, estaremos (eu, o @WilliamPietro e o @VitorBitner) em São Paulo para assistir o melhor evento de SQL Server que este país já viu, o SQL Saturday 100. Evento que contará com a presença de feras de SQL Server do Brasil e de outros países, permitindo além de ver novidades do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3738&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bom dia pessoas,</p>
<p>Neste sábado, estaremos (eu, o <a href="http://twitter.com/WilliamPietro" target="_blank">@WilliamPietro</a> e o <a href="http://twitter.com/VitorBitner" target="_blank">@VitorBitner</a>) em São Paulo para assistir o melhor evento de SQL Server que este país já viu, o <strong><a href="http://www.sqlsaturday.com/100/eventhome.aspx" target="_blank">SQL Saturday 100</a></strong>. Evento que contará com a presença de feras de SQL Server do Brasil e de outros países, permitindo além de ver novidades do SQL Server 2012, também a oportunidade de aprender e conhecer estas feras.</p>
<p><em>Agradecimento ás esposas e namoradas que com um pouco de LeroLeroInjetion* permitiram a nossa viagem para lá!</em></p>
<p>Abaixo a minha agenda:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/11/112511_1406_contandoasm1.png?w=655" alt="" /></p>
<p><em>*: Termo utilizado pelo Vitor, não assumo responsabilidades&#8230; XD</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3738/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3738&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2011/11/25/contando-os-minutos-para-o-sql-saturday-100/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/11/112511_1406_contandoasm1.png" medium="image" />
	</item>
		<item>
		<title>Boas práticas &#8211; Três dicas a respeito da função GETDATE()</title>
		<link>http://sqlfromhell.wordpress.com/2011/11/07/boas-praticas-tres-dicas-a-respeito-da-funcao-getdate/</link>
		<comments>http://sqlfromhell.wordpress.com/2011/11/07/boas-praticas-tres-dicas-a-respeito-da-funcao-getdate/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 23:57:16 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[Trabalhando com datas]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">https://sqlfromhell.wordpress.com/?p=3731</guid>
		<description><![CDATA[Sim, você não entendeu errado, estou dedicando este artigo ás boas práticas da utilização (e não utilização) da função GETDATE. Neste artigo, tratarei de três práticas que considero importantes quando requer a utilização desta função, mas se alguém quiser comentar sobre outras práticas ou soluções que considere melhores, fique a vontade. A primeira dica esta [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3731&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sim, você não entendeu errado, estou dedicando este artigo ás boas práticas da utilização (e não utilização) da função GETDATE.</p>
<p>Neste artigo, tratarei de três práticas que considero importantes quando requer a utilização desta função, mas se alguém quiser comentar sobre outras práticas ou soluções que considere melhores, fique a vontade.</p>
<p>A primeira dica esta relacionada à divergência da data do servidor/cliente da aplicação em comparação ao servidor do banco de dados, pois é comum aparecer problemas em regras de negócios que envolvem a utilização da função GETDATE() e outras funções com finalidades semelhantes pela aplicação (ex.: VB.NET/C# &#8211; System.DateTime.Now()) quando a data/hora dos servidores/clientes estão diferentes (horário de verão que o diga). Desta forma, procure criar políticas para manter as datas/horas dos servidores sincronizadas, e utilizar somente a data/hora de um dos servidores (normalmente o servidor de banco de dados) nas regras de negócio.</p>
<p>Outra dica é referente ao conflito de fuso horário (ou timezone), pois quando você possui servidores em dois ou mais lugares distantes no mundo, a função GETDATE() pode gerar um pouco de dor de cabeça. Assim, utilizar a função SYSDATETIMEOFFSET ao invés de GETDATE, e o tipo DATETIMEOFFSET ao invés de DATETIME, permitirá solucionar estes conflitos e também dará &#8216;transparência&#8217; em relação aos fusos horários nas consultas.</p>
<p>A função GETUTCDATE também pode ser útil para fusos horários distintos, mas não oferece a mesma transparência em relação ás datas entre os diversos fusos, por utilizar o horário UTC.</p>
<p>Para &#8216;conversões&#8217; entre os fusos horários, utilize a função SWITCHOFFSET.</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/11/110711_2356_1.png?w=655" alt="" /></p>
<p>A terceira dica é referente ao conflito com os valores obtidos pela função GETDATE() em um mesmo script. Sim, isso existe! Ou estava pensando que o valor da função GETDATE() é obtido só uma vez durante todos os comandos de um script, veja o exemplo:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/11/110711_2356_2.png?w=655" alt="" /></p>
<p>A fim de solucionar estas divergências, opte pela utilização de variáveis para identificar o valor da função GETDATE() durante os comandos de um script, exemplo:</p>
<p><img src="http://sqlfromhell.files.wordpress.com/2011/11/110711_2356_3.png?w=655" alt="" /></p>
<p>Espero que tenham gostado destas dicas.</p>
<p>Ainda tenho outras dicas a respeito da precisão das datas/horas, mas as deixo para uma próxima oportunidade.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3731/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3731&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2011/11/07/boas-praticas-tres-dicas-a-respeito-da-funcao-getdate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/11/110711_2356_1.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/11/110711_2356_2.png" medium="image" />

		<media:content url="http://sqlfromhell.files.wordpress.com/2011/11/110711_2356_3.png" medium="image" />
	</item>
		<item>
		<title>A competitividade na busca de uma melhor oportunidade de trabalho</title>
		<link>http://sqlfromhell.wordpress.com/2011/10/26/a-competitividade-na-busca-de-uma-melhor-oportunidade-de-trabalho/</link>
		<comments>http://sqlfromhell.wordpress.com/2011/10/26/a-competitividade-na-busca-de-uma-melhor-oportunidade-de-trabalho/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 00:56:02 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[Exames e Certificações]]></category>
		<category><![CDATA[Gestão]]></category>
		<category><![CDATA[Mercado]]></category>
		<category><![CDATA[Oportunidades]]></category>
		<category><![CDATA[Estratégia Competitiva]]></category>
		<category><![CDATA[Michael Porter]]></category>
		<category><![CDATA[Vantagem Competitiva]]></category>

		<guid isPermaLink="false">https://sqlfromhell.wordpress.com/?p=3720</guid>
		<description><![CDATA[Michael Porter é mundialmente conhecido pelos seus livros e artigos que abordam os temas de Estratégia e Vantagem Competitiva, sendo seu framework das cinco forças para definir a competitividade e a atratividade de determinados mercados, um elemento extremamente importante para o entendimento de como funciona a competitividade do mercado e como agir a fim de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3720&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Michael Porter é mundialmente conhecido pelos seus livros e artigos que abordam os temas de Estratégia e Vantagem Competitiva, sendo seu framework das cinco forças para definir a competitividade e a atratividade de determinados mercados, um elemento extremamente importante para o entendimento de como funciona a competitividade do mercado e como agir a fim de sobreviver neste mundo cada vez mais competitivo.</p>
<p>Para relacionar o framework das cinco forças com a gestão de carreira sob a ótica do profissional, é possível identificar como cada uma destas &#8220;forças&#8221; estão relacionadas à competitividade do mercado na busca de melhores oportunidades de trabalho.</p>
<p>A primeira força, denominada poder de barganha dos fornecedores, que na carreira de um profissional esta relacionada às universidades, centros de treinamento e certificação. Estas universidades e centros de treinamento permitem que o profissional possa adquirir uma formação adequada (matéria-prima) para atuar no mercado, e determinam as exigências e qualificações mínimas para a capacitação dos profissionais.</p>
<p>O poder de barganha das universidades e centros de treinamento e certificação envolve muitas vezes a dificuldade de um profissional desenvolver uma formação que se mostre como um diferencial no mercado, como no caso de graduações, MBAs, mestrados e doutorados em universidades de renome, ou certificações que exijam alto grau de capacitação e experiência.</p>
<p>A segunda força, denominada poder de barganha dos clientes, na gestão de carreiras é possível relacionar aos empregados, que definem requisitos e responsabilidades mínimas para o profissional ser aceito pela empresa, e os benefícios muitas vezes vinculados à escassez da formação e experiência deste profissional.</p>
<p>Dos requisitos, podemos identificar os requisitos essenciais que definem o mínimo que o profissional precisa ter para ocupar determinado cargo (ex.: DBA conhecer SQL, Programador .NET conhecer VB ou C# &#8230;) e requisitos complementares e específicos, que diferenciam o que o empregador precisa do profissional para conseguir ocupar o cargo pretendido numa dada empresa, como por exemplo as empresas de atuação internacional exigem profissionais que sabem dois ou mais idiomas, e as empresas que possuem certificações ISO ou CMMI exigem profissionais que tenham experiência em organizações com qualificações semelhantes .</p>
<p>A respeito dos benefícios, estes variam com a escassez e a necessidade do mercado por um profissional com um determinado tipo de formação e experiência, assim como os salários de profissionais de TI que estão hoje acima da média dos profissionais de outras áreas de atuação, devido a atual escassez (lei da oferta e da procura).</p>
<p>A terceira força esta relacionada às ameaças de substitutos, como no caso dos computadores &#8220;desktops&#8221; que são aos poucos substituídos por tecnologias móveis (notebooks, netbooks, tablets e celulares). No caso dos profissionais, há possibilidade de ser depreciado (ou até mesmo descartado) pelo mercado por não se capacitar e adquirir novas experiências.</p>
<p>Na área de TI é raro ver uma tecnologia ser completamente substituída, pois ao mesmo tempo que surge a necessidade de profissionais que possuem competências em novas tecnologias, também surge a necessidade de profissionais que possuem competências em tecnologias mais antigas, seja para manutenção ou para novas implementações, pois o legado de TI possui uma sobrevida relativamente alta (ex.: COBOL), além de oferecer muitas oportunidades à profissionais que pretendem entrar no mercado.</p>
<p>A quarta força esta relacionada às ameaças de novos entrantes, isso diz respeito na gestão de carreiras à facilidade de profissionais que estão entrando no mercado substituir aqueles já que estavam lá, como por exemplo, os profissionais com baixo nível de capacitação que são substituídos por outros que estão entrando no mercado que já possuem um nível de capacitação equivalente ou requerem salários mais baixos.</p>
<p>A quinta força esta relacionada à competitividade interna do próprio mercado, onde profissionais que possuem capacitações diversas concorrem por melhores empregos, bons empregadores e melhores currículos.</p>
<p>A quinta força pode ser vista sob outra contribuição de Porter, ao analisar como fomentar vantagens competitivas sob a ótica do &#8220;custo&#8221;, da &#8220;diferenciação&#8221; e da &#8220;especialização&#8221;.</p>
<p>Em relação ao &#8220;custo&#8221; na gestão de carreira, podemos identificar os novos entrantes do mercado como os estagiários e profissionais que conseguem boas oportunidades por exigirem salários relativamente baixos, ou aqueles atuam como consultores ou terceirizados de acordo com as demandas dos empregadores/clientes.</p>
<p>No que tange a &#8220;diferenciação&#8221;, temos os profissionais que possuem competências dadas como escassas no mercado, como profissionais com experiência e formação que os tornem melhor capacitados que outros.</p>
<p>Sobre a ótica da &#8220;especialização&#8221;, teremos os profissionais com alto grau de domínio em determinadas tecnologias (ex.: profissionais com certificações MCM, MCA, ITIL Master, OCM) ou que relacionem competências distintas (ex.: gestores de projetos de TI, profissionais de TI que atuam com dados espaciais, desenvolvedores de jogos, analistas de sistemas com formação em engenharia civil ou florestal) se tornando extremamente importantes para determinados ramos do mercado.</p>
<p><strong>Dado este experimento de vincular o conceito de gestão de carreira e ao framework de Porter com a finalidade de definir como se dá a competitividade dos profissionais na busca por melhores colocações no mercado, espero que além do entendimento a respeito do tema, que seja possível ao leitor se identificar no meio deste mundo competitivo e procure através de um bom planejamento de sua carreira uma colocação que permita sua autorrealização.</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3720/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3720/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3720/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3720/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3720/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3720/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3720/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3720/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3720/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3720/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3720/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3720/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3720/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3720/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3720&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2011/10/26/a-competitividade-na-busca-de-uma-melhor-oportunidade-de-trabalho/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>
	</item>
		<item>
		<title>Um belo exemplo de uma Query From Hell</title>
		<link>http://sqlfromhell.wordpress.com/2011/10/25/um-belo-exemplo-de-uma-query-from-hell/</link>
		<comments>http://sqlfromhell.wordpress.com/2011/10/25/um-belo-exemplo-de-uma-query-from-hell/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 22:18:14 +0000</pubDate>
		<dc:creator>Paulo R. Pereira</dc:creator>
				<category><![CDATA[Query 4 Fun]]></category>
		<category><![CDATA[Query From Hell]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">http://sqlfromhell.wordpress.com/?p=3715</guid>
		<description><![CDATA[E ai pessoas, fazendo um pingback de um link que o @zavaschi passou ontem no twitter (RT original do @dsfnet) que realmente mostra um belo exemplo de uma Query From Hell: http://thedailywtf.com/Articles/The-Query-of-Despair.aspx Se alguem quiser encaminhar outros exemplos para publicar no blog, fiquem a vontade!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3715&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>E ai pessoas, fazendo um pingback de um link que o <a href="http://twitter.com/zavaschi" target="_blank">@zavaschi</a> passou ontem no twitter (RT original do <a href="http://twitter.com/dsfnet">@dsfnet</a>) que realmente mostra um belo exemplo de uma Query From Hell:</p>
<p><a title="The Query of Despair" href="http://thedailywtf.com/Articles/The-Query-of-Despair.aspx" target="_blank">http://thedailywtf.com/Articles/The-Query-of-Despair.aspx</a></p>
<p>Se alguem quiser encaminhar outros exemplos para publicar no blog, fiquem a vontade!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sqlfromhell.wordpress.com/3715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sqlfromhell.wordpress.com/3715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sqlfromhell.wordpress.com/3715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sqlfromhell.wordpress.com/3715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sqlfromhell.wordpress.com/3715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sqlfromhell.wordpress.com/3715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sqlfromhell.wordpress.com/3715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sqlfromhell.wordpress.com/3715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sqlfromhell.wordpress.com/3715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sqlfromhell.wordpress.com/3715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sqlfromhell.wordpress.com/3715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sqlfromhell.wordpress.com/3715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sqlfromhell.wordpress.com/3715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sqlfromhell.wordpress.com/3715/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sqlfromhell.wordpress.com&amp;blog=7423972&amp;post=3715&amp;subd=sqlfromhell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sqlfromhell.wordpress.com/2011/10/25/um-belo-exemplo-de-uma-query-from-hell/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f03e5c495f2141f766e9a09eb9febb84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Paulo R. Pereira</media:title>
		</media:content>
	</item>
	</channel>
</rss>
