<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Thiago Zavaschi R2</title>
	
	<link>http://zavaschi.com</link>
	<description>www.zavaschi.com</description>
	<lastBuildDate>Mon, 13 May 2013 18:06:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Zavaschi" /><feedburner:info uri="zavaschi" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Data Explorer Release de Maio</title>
		<link>http://feedproxy.google.com/~r/Zavaschi/~3/Ne2bsm5UWtQ/</link>
		<comments>http://zavaschi.com/index.php/2013/05/data-explorer-release-de-maio/#comments</comments>
		<pubDate>Mon, 13 May 2013 18:06:24 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Data Explorer]]></category>
		<category><![CDATA[May Release]]></category>
		<category><![CDATA[Nova Versão]]></category>

		<guid isPermaLink="false">http://zavaschi.com/?p=435</guid>
		<description><![CDATA[Olá a todos!
Sexta-feira passada foi lançada publicamente mais uma build (May Release) do Data Explorer.
O Data Explorer é um add-in para o Excel para você realizar transformações nos dados de uma forma facilitada (self-service) e passível também de integração com o PowerPivot para análise.
Essa versão de maio contém diversas novidades que podem ser acompanhadas no [...]]]></description>
			<content:encoded><![CDATA[<p>Olá a todos!</p>
<p>Sexta-feira passada foi lançada publicamente mais uma build (May Release) do Data Explorer.</p>
<p>O Data Explorer é um add-in para o Excel para você realizar transformações nos dados de uma forma facilitada (self-service) e passível também de integração com o PowerPivot para análise.</p>
<p>Essa versão de maio contém diversas novidades que podem ser acompanhadas no blog do time de produto do Data Explorer:</p>
<p><a href="http://blogs.msdn.com/b/dataexplorer/archive/2013/05/13/data-explorer-may-update-is-available-now.aspx">http://blogs.msdn.com/b/dataexplorer/archive/2013/05/13/data-explorer-may-update-is-available-now.aspx</a><br />
Essa ferramenta tem muito potencial, principalmente nos cenários em que a utilização do Integration Services (SSIS) poderia aumentar muito a complexidade da solução.</p>
<p>Fica a dica ;)<br />
Thiago Zavaschi</p>
<img src="http://feeds.feedburner.com/~r/Zavaschi/~4/Ne2bsm5UWtQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2013/05/data-explorer-release-de-maio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://zavaschi.com/index.php/2013/05/data-explorer-release-de-maio/</feedburner:origLink></item>
		<item>
		<title>Analysis Services Internals – Formula e Storage Engines (e como funciona o cache?)</title>
		<link>http://feedproxy.google.com/~r/Zavaschi/~3/LndckZsCNzc/</link>
		<comments>http://zavaschi.com/index.php/2013/05/analysis-services-internals-formula-e-storage-engines-e-como-funciona-o-cache/#comments</comments>
		<pubDate>Fri, 10 May 2013 16:47:56 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[Formula Engine]]></category>
		<category><![CDATA[Internals]]></category>
		<category><![CDATA[Storage Engine]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2013/05/analysis-services-internals-formula-e-storage-engines-e-como-funciona-o-cache/</guid>
		<description><![CDATA[Olá pessoal!
O tópico de hoje é para servir de base a todos que desejam conhecer um pouco mais de como o servidor do Analysis Services (SSAS) trabalha por trás dos panos.
Existem diversos mecanismos internos que são responsáveis / interagem no processamento de uma query que é enviada ao servidor de análise (o processo detalhado de [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá pessoal!</p>
<p align="justify">O tópico de hoje é para servir de base a todos que desejam conhecer um pouco mais de como o servidor do Analysis Services (SSAS) trabalha por trás dos panos.</p>
<p align="justify">Existem diversos mecanismos internos que são responsáveis / interagem no processamento de uma query que é enviada ao servidor de análise (o processo detalhado de execução de uma query vou abordar em um tópico futuro específico): XMLA Listener, Formula Engine, Storage Engine e assim por diante.</p>
<p align="justify">Esse post abordará sobre o que é e para que servem a Formula e a Storage Engine.</p>
<div align="justify">   <span id="more-433"></span> </div>
<p align="justify"><strong>Formula Engine</strong></p>
<p align="justify">Toda computação e calculo que uma query precisa realizar é feita pela Formula Engine (FE). Ela faz o processamento de todos os dados e também determina quais dados serão necessários para responder a query que foi enviada.</p>
<p align="justify">A FE é single threaded. Isso significa que se for identificado que a sua query está com gargalo na FE, então a solução seria utilizar máquinas/servidores com clock de processamento mais elevado.</p>
<p align="justify">Os dados que a FE precisa para responder a uma query são requisitados para a Storage Engine.</p>
<p align="justify"><strong>Storage Engine</strong></p>
<p align="justify">A Storage Engine (SE) é a responsável pela devolução dos dados para as requisições feitas pela Formula Engine. As requisições de dados feitas são chamadas de Subcube Requests (e podem ser observadas através de um trace ou xEvents (no 2012)).</p>
<p align="justify">A SE é multi threaded e faz a requisição de dados (subcube requests) em paralelo. É responsável também por verificar se os dados necessários não estão disponíveis em agregações já criadas.</p>
<p align="justify">No caso da identificação de que o gargalo no tempo de execução da query é na SE, é possível minimizar com uso mais eficiente de agregações (para mais técnicas de otimização, consultar o <a href="http://sqlcat.com/sqlcat/b/whitepapers/archive/2011/10/10/analysis-services-2008-r2-performance-guide.aspx" target="_blank">Performance Guide do SSAS</a>).</p>
<p align="justify"><strong>E o cache?</strong></p>
<p align="justify"><em>Toda vez que eu disparo uma query contra meu servidor de análise é necessário passar por todas essas etapas? </em></p>
<p align="justify"><em>Não!</em></p>
<p align="justify">Existem diversos níveis de cache internos ao SSAS (fora o cache que pode existir na camada NTFS).</p>
<p align="justify">A ordem (simplificada) é a seguinte:</p>
<ol>
<li>
<div align="justify">Existe um cache para a Formula Engine: A query pode ser respondida usando ele? Se sim, retorna.</div>
</li>
<li>
<div align="justify">Existe um cache para a Storage Engine: A FE fez uma requisição que está em cache? Se sim, retorna ela. (Se houverem outros subcube requests – muito comum – o processo é o mesmo).</div>
</li>
<li>
<div align="justify">Verifica agora se há uma agregação que responde ao subcube request: Se sim, retorna da agregação.</div>
</li>
<li>
<div align="justify">Caso contrário lê dos dados do measure group (opção mais custosa, principalmente se utilizado ROLAP, onde a leitura é contra um servidor externo).</div>
</li>
</ol>
<p align="justify">&#160;</p>
<p align="justify">Por hoje era isso. Estes conceitos serão bastante importantes para entender meu próximo post: “Posso utilizar o Query Log – <a href="http://zavaschi.com/index.php/2012/07/sql-server-analysis-services-query-log-2000-x-2005/" target="_blank">já visto aqui no blog</a> – para fazer auditoria ou contabilização de acesso de usuários?”</p>
<p align="justify">Obrigado e até a próxima!</p>
<img src="http://feeds.feedburner.com/~r/Zavaschi/~4/LndckZsCNzc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2013/05/analysis-services-internals-formula-e-storage-engines-e-como-funciona-o-cache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://zavaschi.com/index.php/2013/05/analysis-services-internals-formula-e-storage-engines-e-como-funciona-o-cache/</feedburner:origLink></item>
		<item>
		<title>Sharepoint e Reporting Services – O que é suportado?</title>
		<link>http://feedproxy.google.com/~r/Zavaschi/~3/gKDq0RtVWbM/</link>
		<comments>http://zavaschi.com/index.php/2013/04/sharepoint-e-reporting-services-o-que-suportado/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 15:17:03 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[Suportabilidade]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2013/04/sharepoint-e-reporting-services-o-que-suportado/</guid>
		<description><![CDATA[Olá pessoal, depois de um longo e tenebroso inverno (leia-se: muito trabalho aqui no time de engenharia) estou de volta e pretendo postar sobre os casos com que lido e continuar algumas séries de posts antigas aqui do blog.
O ponto que quero abordar hoje é sobre a suportabilidade da integração do SharePoint com o Reporting [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><font size="2">Olá pessoal, depois de um longo e tenebroso inverno (leia-se: muito trabalho aqui no time de engenharia) estou de volta e pretendo postar sobre os casos com que lido e continuar algumas séries de posts antigas aqui do blog.</font></p>
<p align="justify"><font size="2">O ponto que quero abordar hoje é sobre a suportabilidade da integração do SharePoint com o Reporting Services.</font></p>
<p align="justify"><font size="2">É de senso comum de quem trabalha com as tecnologias de Business Intelligence da Microsoft saber que o Reporting Services pode ser configurado para trabalhar de modo autônomo (modo nativo) ou em modo integrado ao SharePoint. No entanto nem sempre fica claro quais são as restrições de versões para essa compatibilidade. </font></p>
<p align="justify"><font size="2">Por exemplo: <em>Posso usar o Reporting Services do SQL Server 2008 R2 com o SharePoint 2010? E com o SharePoint 2013? E se for o SQL Server 2008? E a versão dos Add-ins?</em></font></p>
<p align="justify"><font size="2">Este post serve para elucidar estes casos. Este post é baseado no seguinte pedaço do books online (em inglês): </font><a title="http://msdn.microsoft.com/en-us/library/dc6a3372-db26-43f0-b7aa-f725acc635c2" href="http://msdn.microsoft.com/en-us/library/dc6a3372-db26-43f0-b7aa-f725acc635c2"><font size="2">http://msdn.microsoft.com/en-us/library/dc6a3372-db26-43f0-b7aa-f725acc635c2</font></a></p>
<p>  <span id="more-432"></span>
<ul>
<li>
<div align="justify"><font size="2">Para o SharePoint 2013, você somente pode utilizar a versão do add-in do SSRS do SQL Server 2012 SP1.</font></div>
</li>
<li>
<p align="justify"><font size="2">Para o SharePoint 2010, você pode usar o add-in do SQL Server 2012 ou do SQL Server 2008 R2 para o SharePoint 2010. Porém se utilizar a versão do add-in para o SQL Server 2012 SP1, o servidor de relatórios terá que ser o SSRS 2012 SP1 também.</font></p>
</li>
<li>
<p align="justify"><font size="2">Para o SharePoint 2007, sempre utiliza o add-in do SQL Server 2008 Reporting Services add-in para SharePoint 2007.</font></p>
</li>
<li>
<p align="justify"><font size="2">Servidores de relatórios do SQL Server 2008 R2 (SSRS 2008 R2) são suportados tanto pelo SharePoint 2007 quanto pelo SharePoint 2010.</font></p>
</li>
<li>
<p align="justify"><font size="2">Reporting Services do SQL Server 2008 SP1 CU #8 e superiores são suportados com SharePoint 2007 e SharePoint 2010.</font></p>
</li>
<li>
<p align="justify"><font size="2">Report servers do SQL Server 2008 são suportados pelo SharePoint 2007.</font></p>
</li>
</ul>
<p align="justify"><font size="2">Para facilitar o entendimento: Report Server x Add-in x SharePoint, temos a tabela abaixo (<em>também extraída do site mencionado anteriormente</em>) de combinações suportadas.</font></p>
<table cellspacing="0" cellpadding="0" width="493" border="1">
<tbody>
<tr>
<td valign="top" width="37"><font size="2"></font></td>
<td valign="top" width="164"><strong><font size="2">Report Server</font></strong></td>
<td valign="top" width="163"><strong><font size="2">Add-in</font></strong></td>
<td valign="top" width="127"><strong><font size="2">SharePoint</font></strong></td>
</tr>
<tr>
<td valign="top" width="37"><font size="2">1</font></td>
<td valign="top" width="164"><font size="2">SQL Server 2012 SP1</font></td>
<td valign="top" width="163"><font size="2">SQL Server 2012 SP1</font></td>
<td valign="top" width="127"><font size="2">SharePoint 2013</font></td>
</tr>
<tr>
<td valign="top" width="37"><font size="2">2</font></td>
<td valign="top" width="164"><font size="2">SQL Server 2012 SP1</font></td>
<td valign="top" width="163"><font size="2">SQL Server 2012 SP1</font></td>
<td valign="top" width="127"><font size="2">SharePoint 2010</font></td>
</tr>
<tr>
<td valign="top" width="37"><font size="2">3</font></td>
<td valign="top" width="164"><font size="2">SQL Server 2012</font></td>
<td valign="top" width="163"><font size="2">SQL Server 2012</font></td>
<td valign="top" width="127"><font size="2">SharePoint 2010</font></td>
</tr>
<tr>
<td valign="top" width="37"><font size="2">4</font></td>
<td valign="top" width="164"><font size="2">SQL Server 2008 R2</font></td>
<td valign="top" width="163"><font size="2">SQL Server 2012</font></td>
<td valign="top" width="127"><font size="2">SharePoint 2010</font></td>
</tr>
<tr>
<td valign="top" width="37"><font size="2">5</font></td>
<td valign="top" width="164"><font size="2">SQL Server 2008</font></td>
<td valign="top" width="163"><font size="2">SQL Server 2012</font></td>
<td valign="top" width="127"><font size="2">SharePoint 2010</font></td>
</tr>
<tr>
<td valign="top" width="37"><font size="2">6</font></td>
<td valign="top" width="164"><font size="2">SQL Server 2008 R2</font></td>
<td valign="top" width="163"><font size="2">SQL Server 2008 R2</font></td>
<td valign="top" width="127"><font size="2">SharePoint 2010</font></td>
</tr>
<tr>
<td valign="top" width="37"><font size="2">7</font></td>
<td valign="top" width="164"><font size="2">SQL Server 2008 R2</font></td>
<td valign="top" width="163"><font size="2">SQL Server 2008 SP2</font></td>
<td valign="top" width="127"><font size="2">SharePoint 2007</font></td>
</tr>
<tr>
<td valign="top" width="37"><font size="2">8</font></td>
<td valign="top" width="164"><font size="2">SQL Server 2008 SP2</font></td>
<td valign="top" width="163"><font size="2">SQL Server 2008 SP2</font></td>
<td valign="top" width="127"><font size="2">SharePoint 2007</font></td>
</tr>
<tr>
<td valign="top" width="37"><font size="2">9</font></td>
<td valign="top" width="164"><font size="2">SQL Server 2008 SP2</font></td>
<td valign="top" width="163"><font size="2">SQL Server 2008 R2</font></td>
<td valign="top" width="127"><font size="2">SharePoint 2010</font></td>
</tr>
<tr>
<td valign="top" width="37"><font size="2">10</font></td>
<td valign="top" width="164"><font size="2">SQL Server 2008 SP 2</font></td>
<td valign="top" width="163"><font size="2">SQL Server 2008</font></td>
<td valign="top" width="127"><font size="2">SharePoint 2007</font></td>
</tr>
</tbody>
</table>
<p align="justify">E onde encontrar as versões mencionadas dos addi-ns?</p>
<p align="justify">Aqui (em inglês): <a title="http://msdn.microsoft.com/en-us/library/069ac476-6336-44a9-a0e7-db1c4888948f" href="http://msdn.microsoft.com/en-us/library/069ac476-6336-44a9-a0e7-db1c4888948f">http://msdn.microsoft.com/en-us/library/069ac476-6336-44a9-a0e7-db1c4888948f</a></p>
<p align="justify"><font size="2">Por hoje a ideia era reforçar estes ambientes quanto a suportabilidade. Cuidado apenas para não confundir suportabilidade com os recursos que cada versão oferece (mapas, Power View, entre outros).     <br />Em caso de dúvidas utilizem o espaço para comentários do post.</font></p>
<p align="justify">Thiago Zavaschi</p>
<img src="http://feeds.feedburner.com/~r/Zavaschi/~4/gKDq0RtVWbM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2013/04/sharepoint-e-reporting-services-o-que-suportado/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://zavaschi.com/index.php/2013/04/sharepoint-e-reporting-services-o-que-suportado/</feedburner:origLink></item>
		<item>
		<title>SSIS Package Configuration (XML File) – Trocando a Connection String entre Servidores</title>
		<link>http://feedproxy.google.com/~r/Zavaschi/~3/SbI1lIZdFow/</link>
		<comments>http://zavaschi.com/index.php/2012/07/ssis-package-configuration-xml-file-trocando-a-connection-string-entre-servidores/#comments</comments>
		<pubDate>Fri, 27 Jul 2012 17:18:06 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Integration Services]]></category>
		<category><![CDATA[Package Configuration]]></category>
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2012/07/ssis-package-configuration-xml-file-trocando-a-connection-string-entre-servidores/</guid>
		<description><![CDATA[Olá!
Uma dúvida comum que sempre surge quando vou atender um caso de SQL Server Integration Services (SSIS) é:
“Ok Thiago desenvolvi 100 (leia-se muitos) pacotes no SSIS, porém toda a vez que vou fazer o deploy destes pacotes em homologação e produção eu tenho que ficar mudando as connection strings. Como proceder?”
O SSIS tem um mecanismo [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá!</p>
<p align="justify">Uma dúvida comum que sempre surge quando vou atender um caso de SQL Server Integration Services (SSIS) é:</p>
<p align="justify">“<em>Ok Thiago desenvolvi 100 (leia-se muitos) pacotes no SSIS, porém toda a vez que vou fazer o deploy destes pacotes em homologação e produção eu tenho que ficar mudando as connection strings. Como proceder?”</em></p>
<p align="justify">O SSIS tem um mecanismo para ajudar neste sentido chamado SSIS Package Configuration, onde é possível salvar a suas configurações em um arquivo XML, variável de ambiente ou até mesmo em uma tabela do SQL Server que contenha os valores.</p>
<p align="justify">No artigo de hoje vou abordar apenas a configuração através de arquivo XML.</p>
<p align="justify"><em>Mas então, como fazer?</em></p>
<p align="justify">Desenvolva seu pacote normalmente. Utilizando os Data Sources de desenvolvimento e associando os respectivos Connection Managers a eles da forma que for necessária ao seu fluxo.</p>
<p align="justify">Agora o que precisamos fazer é criar um arquivo de configuração XML que conterá os dados que os data sources utilizarão ao invés do que você configurou previamente.</p>
<p align="justify">Esta configuração você fará para o primeiro pacote e depois reutilizará o mesmo arquivo de configuração para os demais pacotes.</p>
<p>  <span id="more-431"></span>
<p align="justify">Abra o pacote, vá no menu “SSIS” e depois em “Package Configurations…”</p>
<p align="justify">Marque Enable Package Configurations e depois clique em “Add”.</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2012/07/image.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 0px 0px 2px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2012/07/image_thumb.png" width="543" height="422" /></a></p>
<p align="justify">Clique em “Browse…” para selecionar o local onde ficará o arquivo de configuração. Por exemplo: C:\config.dtsConfig.</p>
<p align="justify">A extensão do arquvo é .dtsConfig e é nada mais do que um arquivo XML.</p>
<p align="justify">Clique Next e na sequência marque a propriedade que deseja que a opção utilizada seja o que está no arquivo de configuração. Para o nosso caso o objetivo é facilitar a configuração da connection string, então vamos marcar ela.</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2012/07/image1.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 0px 0px 2px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2012/07/image_thumb1.png" width="542" height="472" /></a></p>
<p align="justify">Clique para prosseguir, dê um nome e clique em “Finish”.</p>
<p align="justify">No meu exemplo eu tenho dois pacotes e desejo que a fonte de ambos seja a mesma.</p>
<p align="justify">Devemos fazer um processo similar.</p>
<p align="justify">Abra o segundo pacote, depois, “SSIS” &gt;&gt; “Package Configurations” &gt;&gt; “Enable package configurations” &gt;&gt; “Add”.</p>
<p align="justify">Selecione o .dtsConfig já criado para este pacote. Ele irá perguntar se deseja que seja reusado o arquivo já existente ou se o desejado é sobrescrever. Marque para reusar (“Reuse Existing”).</p>
<p align="justify">Depois clique para prosseguir, dê um nome e encerre a janela. Pronto!</p>
<p align="justify">Agora temos dois pacotes que utilizam o mesmo arquivo de configuração para as connection strings. Mesmo que a execução seja feita através do BIDS, a utilização será sobre o arquivo de configuração.</p>
<p align="justify">Ok, e como eu verifico se ele está mesmo utilizando? Simples, execute seu pacote e veja na aba “Progress”.</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2012/07/image2.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 0px 0px 2px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2012/07/image_thumb2.png" width="551" height="293" /></a></p>
<p align="justify">Você verá a seguinte linha:</p>
<p align="justify"><em>“Information: The package is attempting to configure from XML file “arquivo.dtsConfig”.”</em></p>
<p align="justify">Pronto, agora você pode levar os pacotes para homologação/produção e fazer a troca em apenas um ponto.</p>
<p align="justify">Há outras formas de fazer isso sem utilizar o arquivo XML, porém essa é a mais utilizada. As outras deixarei para um possível post futuro.</p>
<p align="justify">Obrigado!   <br />Thiago Zavaschi</p>
<img src="http://feeds.feedburner.com/~r/Zavaschi/~4/SbI1lIZdFow" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2012/07/ssis-package-configuration-xml-file-trocando-a-connection-string-entre-servidores/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://zavaschi.com/index.php/2012/07/ssis-package-configuration-xml-file-trocando-a-connection-string-entre-servidores/</feedburner:origLink></item>
		<item>
		<title>SQL Server Analysis Services – Query Log 2000 x 2005+</title>
		<link>http://feedproxy.google.com/~r/Zavaschi/~3/XK2UHnbUR0E/</link>
		<comments>http://zavaschi.com/index.php/2012/07/sql-server-analysis-services-query-log-2000-x-2005/#comments</comments>
		<pubDate>Thu, 05 Jul 2012 22:27:07 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SSAS]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Query Log]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2012/07/sql-server-analysis-services-query-log-2000-x-2005/</guid>
		<description><![CDATA[Olá pessoal,
Estando no time de suporte premier da Microsoft recebo muitos chamados de clientes que desejam migrar seu Analysis Services do 2000 para versões mais recentes como o 2008 R2 e 2012.
Uma dúvida comum é sobre as diferenças entre a versão 2000 e as demais.
Hoje falaremos das principais diferenças do query log do SSAS 2000 [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá pessoal,</p>
<p align="justify">Estando no time de suporte premier da Microsoft recebo muitos chamados de clientes que desejam migrar seu Analysis Services do 2000 para versões mais recentes como o 2008 R2 e 2012.</p>
<p align="justify">Uma dúvida comum é sobre as diferenças entre a versão 2000 e as demais.</p>
<p align="justify">Hoje falaremos das principais diferenças do query log do SSAS 2000 para os SSAS posteriores.</p>
<p align="justify">O SSAS possui capacidade de logar informações sobre as queries que são disparadas contra o servidor (não estou falando do Profiler (traces) e nem do Flight Recorder (que também é um trace)) conhecido como query log.</p>
<p align="justify">O SSAS não armazena evetivamente a query executada, porém armazena informações sobre quais atributos e measures foram utilizadas, que mais tarde pode ser utilizada pelo wizard de otimização baseado em uso.</p>
<p align="justify">O SSAS 2005 (e os posteriores) não loga as queries na tabela de log de queries por padrão. Para fazer o log você deve explicitamente ativar esse recurso nas propriedades do SSAS.</p>
<p align="justify">A partir do SSAS 2005 <strong>não</strong> é possível utilizar o Access como repositório para o log de queries. Obrigatoriamente você terá de usar uma database do SQL Server para isso.</p>
<p align="justify">O SQL Server não precisa residir no mesmo computados que o SSAS.</p>
<p align="justify">O Analysis Services não utiliza mais o registro do windows para armazenar suas propriedades. Todas as propriedades do servidor SSAS que controlam o comportamento do query log são acessíveis através do Management Studio ou através da modificação do arquivo de configuração do SSAS.</p>
<p align="justify">O formato (campos e tipos de dados) da tabela de log mudou. Se você utiliza para algum outro fim, você precisará ajustar seus scripts personalizados.</p>
<p align="justify">Para maiores informações sobre como configurar o query log do SSAS segue o link (em inglês):</p>
<p align="justify"><a title="http://technet.microsoft.com/en-us/library/cc917676.aspx" href="http://technet.microsoft.com/en-us/library/cc917676.aspx">http://technet.microsoft.com/en-us/library/cc917676.aspx</a></p>
<p align="justify">Obrigado!</p>
<img src="http://feeds.feedburner.com/~r/Zavaschi/~4/XK2UHnbUR0E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2012/07/sql-server-analysis-services-query-log-2000-x-2005/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://zavaschi.com/index.php/2012/07/sql-server-analysis-services-query-log-2000-x-2005/</feedburner:origLink></item>
		<item>
		<title>Gestão de Memória no Reporting Services</title>
		<link>http://feedproxy.google.com/~r/Zavaschi/~3/U4ex6yrTCy4/</link>
		<comments>http://zavaschi.com/index.php/2012/04/gesto-de-memria-no-reporting-services/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 23:14:13 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Memória]]></category>
		<category><![CDATA[SSRS]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2012/04/gesto-de-memria-no-reporting-services/</guid>
		<description><![CDATA[Olá pessoal :)
Uma dúvida muito comum que recebo é: posso por o meu servidor de relatórios (Reporting Services) no mesmo servidor de base de dados (database engine). A resposta é: claro que pode…. tecnicamente, mas dependendo da demanda, não é uma boa estratégia quando o objetivo é performance.
O foco aqui será a questão da gestão [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá pessoal :)</p>
<p align="justify">Uma dúvida muito comum que recebo é: posso por o meu servidor de relatórios (Reporting Services) no mesmo servidor de base de dados (database engine). A resposta é: claro que pode…. tecnicamente, mas dependendo da demanda, não é uma boa estratégia quando o objetivo é performance.</p>
<p align="justify">O foco aqui será a questão da gestão da memória RAM, mas o fato de usar o mesmo servidor também tem impacto na parte de processamento (vamos deixar isso para um post futuro abordando arquitetura :) ).</p>
<p align="justify">É fato que a engine relacional do SQL Server utiliza toda a memória disponível para ele, seja com cache de dados, planos e etc. A questão é que o Reporting Services também tenta fazer isso. E a velha máxima persiste: dois corpos não podem ocupar o mesmo local no espaço ao mesmo tempo.</p>
<p align="justify">Ok.. ok… traduzindo: a mesma porção de memória não pode ser ocupada por dois processos ao mesmo tempo.</p>
<p>  <span id="more-423"></span>
<p align="justify">Ambos são grandes consumidores de memória, mas se mesmo assim você quer colocar no mesmo servidor, ou então quer garantir que o funcionamento do SSRS ocorra sem pressionar a memória de outros processos ou do SO, a solução é configurar os thresholds de uso de memória.</p>
<p align="justify">Para a engine relacional, você consegue configurar os limites mínimos e máximos do consumo de memória (MinServerMemory e MaxServerMemory). No SSRS existem 4 parâmetros para isso e é importante além de conhece-los, saber qual o impacto no servidor.</p>
<p align="justify">Estes 4 parâmetros são configurados no arquivo de configuração chamado: <font face="Courier New">RSReportServer.config</font>.</p>
<p align="justify">A figura abaixo (extraída do BOL) mostra os limites e os parâmetros.</p>
<p align="justify"><img style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 0px 0px 2px; border-left: 0px; padding-right: 0px" border="0" alt="Configuration settings for memory state" src="http://i.msdn.microsoft.com/dynimg/IC156890.gif" width="354" height="152" /></p>
<p align="justify"><strong>WorkingSetMaximum</strong>: Define o máximo de memória (em KBs) que o Reporting Services pode usar.</p>
<p align="justify"><strong>WorkingSetMinimum</strong>: Define o mínimo de memória (em KBs)&#160; que o Reporting Services pode usar.</p>
<p align="justify"><strong>MemoryThreshold</strong>: Define o limite superior (percentual) da sessão de média pressão de memória.</p>
<p align="justify"><strong>MemorySafetyMargin</strong>: Define o limite superior (percentual) da sessão de baixa pressão de memória.</p>
<p align="justify">Um exemplo do arquivo de configuração (extraído do BOL) pode ser:</p>
<p><font face="Courier New">&lt;MemorySafetyMargin&gt;80&lt;/MemorySafetyMargin&gt;     <br />&lt;MemoryThreshold&gt;90&lt;/MemoryThreshold&gt;      <br />&lt;WorkingSetMaximum&gt;4000000&lt;/WorkingSetMaximum&gt;      <br />&lt;WorkingSetMinimum&gt;2400000&lt;/WorkingSetMinimum&gt;</font></p>
<p align="justify">O importante de saber ANTES de se configurar/alterar estes parâmetros é entender como o SSRS funciona quando está em uma destas três zonas de pressão: baixa (low), média (medium) ou alta (high).</p>
<p align="justify"><strong>Baixa (Low)</strong>: Todas as requisições são processadas, inclusive novas requisições também são aceitas. Requisições que necessitam de processamento em background continuam com uma menor prioridade.</p>
<p align="justify"><strong>Média (Medium)</strong>: As requisições que estão executando continuam com seu processamento, enquanto que novas conexões são aceitas caso a caso. Alocações de memória de todos os application domains são reduzidas com grandes reduções dos processamentos em background. É dado prioridade maior aos requests gerados via web services e pela URL.</p>
<p align="justify"><strong>Alta (High)</strong>: Não aceita novas requisições, e requisições por memória começam a ser negadas. O servidor inicia o processo de swap do estado para disco e as requisições atuais demoram mais.</p>
<p align="justify">Se por ventura atingir o teto máximo, o SQL Server Reporting services vai emitir erro HTTP 503. Em casos extremos o SSRS pode ter que reciclar o application domain.</p>
<p align="justify">Maiores informações sobre estas configurações podem ser encontradas aqui:    <br /><a href="http://msdn.microsoft.com/en-us/library/ms159206.aspx">http://msdn.microsoft.com/en-us/library/ms159206.aspx</a> </p>
<hr />
<p align="justify">E era isso por hoje!</p>
<p align="justify">[]s!   <br />Thiago Zavaschi</p>
<img src="http://feeds.feedburner.com/~r/Zavaschi/~4/U4ex6yrTCy4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2012/04/gesto-de-memria-no-reporting-services/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://zavaschi.com/index.php/2012/04/gesto-de-memria-no-reporting-services/</feedburner:origLink></item>
		<item>
		<title>SQL Server Reporting Services – Trace Log e HTTP Log</title>
		<link>http://feedproxy.google.com/~r/Zavaschi/~3/DUGP1PnQdg0/</link>
		<comments>http://zavaschi.com/index.php/2012/04/sql-server-reporting-services-trace-log-e-http-log/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 19:49:19 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SQL Server Denali]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[HTTP Log]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[Trace]]></category>
		<category><![CDATA[Trace Log]]></category>

		<guid isPermaLink="false">http://zavaschi.com/?p=421</guid>
		<description><![CDATA[Olá!
Assim como a engine do SQL Server e muitos outros produtos (Microsoft ou não), estes possuem um log de trace sobre o que acontece com o aplicativo/serviço, não acontece diferente no Reporting Services.
Os arquivos de trace log do Reporting Services variam de acordo com a versão do SQL Server. Até o SQL Server 2005 (onde [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá!</p>
<p align="justify">Assim como a engine do SQL Server e muitos outros produtos (Microsoft ou não), estes possuem um log de trace sobre o que acontece com o aplicativo/serviço, não acontece diferente no Reporting Services.</p>
<p align="justify">Os arquivos de trace log do Reporting Services variam de acordo com a versão do SQL Server. Até o SQL Server 2005 (onde ainda tinhamos dependência do IIS para o SSRS) haviam 4 tipos de arquivos de log que por padrão são limitados a 32MB por arquivo e são automaticamente deletados após 14 dias. Estes arquivos são texto plano, então qualquer editor de texto consegue abrir. </p>
<div align="justify">
<p><span id="more-421"></span></p>
</div>
<p align="justify">São eles:</p>
<p align="justify"><strong>ReportServerService_<em>&lt;timestamp&gt;</em>.log</strong>: Registra detalhes das operações (worker threads), como certas configurações do serviço, status das atividades de pesquisa relacionadas as assinaturas e notificações de entrega.</p>
<p align="justify"><strong>ReportServerService_main_<em>&lt;timestamp&gt;</em>.log</strong>: Registra os dados do serviço windows do Report Server e dos serviços Web (alocação de recursos do servidor, inicialização de configurações definidas nos arquivos de configuração). </p>
<p align="justify"><strong>ReportServerWebApp_<em>&lt;timestamp&gt;</em>.log:</strong> – Trace log do Report Manager.</p>
<p align="justify"><strong>ReportServer_<em>&lt;timestamp&gt;</em>.log:</strong> Trace log para o web service do Report Server.</p>
<p align="justify">Como o SSRS 2005 é uma versão antiga (temos 2008, 2008 R2 e 2012 após), não vou focar nela.</p>
<p align="justify">Maiores informações sobre os Trace Logs do SSRS 2005 e quais são os arquivos de configuração associados podem ser encontrados aqui: <a title="http://msdn.microsoft.com/en-us/library/ms156500(v=sql.90).aspx" href="http://msdn.microsoft.com/en-us/library/ms156500(v=sql.90).aspx">http://msdn.microsoft.com/en-us/library/ms156500(v=sql.90).aspx</a></p>
<p align="justify"><strong>O que muda a partir do SSRS 2008?</strong></p>
<p align="justify">A partir do Reporting Services do SQL Server 2008, onde já não temos mais a dependência do IIS, os arquivos de trace log foram <strong>unificados</strong>. <em>As especificações aqui comentadas são válidas para o SSRS 2008, 2008 R2 e 2012.</em></p>
<p align="justify">Os arquivos para o SSRS 2008+ ficam em (assumindo o local padrão):</p>
<p align="justify"><em>[Program Files]\Microsoft SQL Server\MSRS&lt;versao&gt;.&lt;nome da instância&gt;\Reporting Services\LogFiles\</em></p>
<p align="justify">Existem alguns parâmetros de configuração para o Trace Log (vamos abordar sobre os arquivos de configuração em um post futuro). O arquivo de configuração para alterar propriedades do trace é o <em>ReportingServicesService.exe.config. </em>Por padrão este arquivo se localiza no diretório:</p>
<p align="justify"><em>[Program Files]\Microsoft SQL Server\MSRS&lt;versao&gt;.&lt;nome da instância&gt;\Reporting Services\Report Server\bin\</em></p>
<p align="justify">As duas partes que devemos considerar são: <em>DefaultTraceSwitch</em> e o <em>RSTrace</em>. Um exemplo destas partes pode ser observado abaixo:</p>
<p align="justify"><em></em><font size="2" face="Courier New">&lt;system.diagnostics&gt;<br />
    <br />&#160; &lt;switches&gt; </p>
<p>&#160;&#160;&#160; &lt;add name=&quot;DefaultTraceSwitch&quot; value=&quot;3&quot; /&gt; </p>
<p></font><font size="2" face="Courier New">&lt;/switches&gt;<br />
    <br />&lt;/system.diagnostics&gt; </p>
<p>&lt;RStrace&gt; </p>
<p>&#160; &lt;add name=&quot;FileName&quot; value=&quot;ReportServerService_&quot; /&gt; </p>
<p>&#160; &lt;add name=&quot;FileSizeLimitMb&quot; value=&quot;32&quot; /&gt; </p>
<p>&#160; &lt;add name=&quot;KeepFilesForDays&quot; value=&quot;14&quot; /&gt; </p>
<p>&#160; &lt;add name=&quot;Prefix&quot; value=&quot;tid, time&quot; /&gt; </p>
<p>&#160; &lt;add name=&quot;TraceListeners&quot; value=&quot;file&quot; /&gt; </p>
<p>&#160; &lt;add name=&quot;TraceFileMode&quot; value=&quot;unique&quot; /&gt; </p>
<p>&#160; &lt;add name=&quot;Components&quot; value=&quot;all&quot; /&gt; </p>
<p>&lt;/RStrace&gt;</font></p>
<p align="justify">A propriedade <strong>DefaultTraceSwitch</strong> define o grau de informação que o arquivo de trace irá conter. O valor padrão é 3 e as possíveis definições se encontram a seguir:</p>
<ul>
<li>
<div align="justify">0: Desabilita o trace.</div>
</li>
<li>
<div align="justify">1: Exceptions e restarts.</div>
</li>
<li>
<div align="justify">2: Exceptions, restarts, warnings.</div>
</li>
<li>
<div align="justify">3: Exceptions, restarts, warnings, status messages.</div>
</li>
<li>
<div align="justify">4: Verbose mode (maior grau de detalhamento).</div>
</li>
</ul>
<p align="justify">As especificações para o RSTrace se encontram a seguir:</p>
<p align="justify"><strong>FileName</strong>: Indica a primeira parte do nome do arquivo de log.</p>
<p align="justify"><strong>FileSizeLimitMb</strong>: Tamanho em MB do arquivo de trace. Os valores podem ir de 0 até o máximo de um inteiro. Se especificar 0 ou um valor negativo, o SSRS entenderá como sendo 1.</p>
<p align="justify"><strong>KeepFilesForDays</strong>: Número de dias que os arquivos de trace serão mantidos. Os valores podem ir de 0 até o máximo de um inteiro. Se especificar 0 ou um valor negativo, o SSRS entenderá como sendo 1.</p>
<p align="justify"><strong>Prefix</strong>: É o valor gerado para distinguir um arquivo de log de outro e é concatenado no final do nome do arquivo (após o <em>FileName</em>). <strong>Não mexa nesta configuração</strong>. Por padrão é concatenado o timestamp.</p>
<p align="justify"><strong>TraceListeners</strong>: Especifica o destino do conteúdo do trace. Você pode especificar mais de um local (separando por vírgula). Os valores válidos são: DebugWindow, File (que é o padrão), StdOut.</p>
<p align="justify"><strong>TraceFileMode</strong>: Especifica que o arquivo de trace terá dados de um período de 24 horas. Você só deve ter um arquivo de log por componente por dia. O valor padrão é unique. <strong>Não mexa nesta configuração</strong>.</p>
<p align="justify"><strong>Components</strong>: Especifica os componentes para os quais as informações são geradas e o level de detalhe (mesmos da propriedade DefaultTraceSwitch). Um erro comum é achar que “<em>all</em>” se refere a todos os componentes, mas na realidade “<em>all”</em> se refere a tudo fora o que já é coberto pelos componentes específicos. As categorias dos componentes são as definidas a seguir:</p>
<ul>
<li>
<div align="justify">All: trace da atividade geral do report server que não estão inclusas nas demais categorias (mais específicas). <strong>Não desabilite este trace</strong>.</div>
</li>
<li>
<div align="justify">RunningJobs: trace dos relatórios sendo executados atualmente.</div>
</li>
<li>
<div align="justify">SemanticQueryEngine: Trace do processamento das queries semânticas de relatórios baseados em modelos.</div>
</li>
<li>
<div align="justify">SemanticModelGenerator: usado para fazer trace da geração de modelos.</div>
</li>
<li>
<div align="justify">http: usado para habilitar o arquivo de log HTTP do Report Server (por padrão não é habilitado. Para maiores informações: <a href="http://msdn.microsoft.com/en-us/library/bb630443.aspx">Report Server HTTP Log</a>.</div>
</li>
</ul>
<p align="justify">Para usar mais de um componente, basta concatenar com virgula. se desejar um grau de detalhamento maior ou menor (ou até mesmo desabilitar para algum componente) do que o configurado em <em>DefaultTraceSwitch</em>, basta utilizar a sintaxe &lt;componente&gt;:&lt;level de trace&gt;. Por exemplo:</p>
<p align="justify"><font size="2" face="Courier New">&lt;add name=&quot;Components&quot; value=&quot;all,http:4,SemanticQueryEngine:0&quot; /&gt;</font> </p>
<p align="justify"><strong>Sem o IIS como vejo os logs de HTTP?</strong></p>
<p align="justify">Um ponto importante é a questão do log para a parte de HTTP.</p>
<p align="justify">Legal, <strong>por padrão o log de http não é ativo</strong>, para ativá-lo devemos configurar na parte de Components na sessão RSTrace conforme vimos.</p>
<p align="justify">Os logs de HTTP depois de habilitados aparecerão junto aos Trace Logs que vimos. Estes logs contém campos padrão W3C, então da pra usar as ferramentas e queries atuais (usadas contra o IIS) para fazer parser destes arquivos.</p>
<p align="justify">Ao habilitar o HTTP Trace Log existem outras configurações para adicionarmos ao arquivo de configuração (dentro do &lt;RSTrace&gt;. Uma delas define o prefixo do nome do arquivo e o outro quais switches queremos monitorar. Segue um exemplo:</p>
<p align="left"><font size="2" face="Courier New">&lt;add name=”HttpTraceFileName” value=”ReportServerService_HTTP_” /&gt;</font></p>
<p align="left"><font size="2" face="Courier New">&lt;add name=”HttpTraceSwitches” value=”date,time,clientip,username,serverip,serverport,host,method,<br />
    <br />uristem,uriquery,protocolstatus,bytesreceived,timetaken, </p>
<p>protocolversion,useragent,cookiereceived,cookiesent,referrer” /&gt;</font></p>
<p align="justify">Maiores informações sobre Trace Log no SSRS podem ser encontradas aqui: <a href="http://msdn.microsoft.com/en-us/library/ms156500(v=sql.110).aspx">http://msdn.microsoft.com/en-us/library/ms156500(v=sql.110).aspx</a>.</p>
<p align="justify">Maiores informações sobre o HTTP Log no SSRS a partir do SQL 2008 podem ser encontradas aqui: <a title="http://msdn.microsoft.com/en-us/library/bb630443.aspx" href="http://msdn.microsoft.com/en-us/library/bb630443.aspx">http://msdn.microsoft.com/en-us/library/bb630443.aspx</a>.</p>
<div align="justify">
<hr /></div>
<p align="justify">Bom pessoal, o que queria mostrar hoje para vocês era isso.</p>
<p align="justify">[]s,<br />
  <br />Thiago Zavaschi</p>
<img src="http://feeds.feedburner.com/~r/Zavaschi/~4/DUGP1PnQdg0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2012/04/sql-server-reporting-services-trace-log-e-http-log/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://zavaschi.com/index.php/2012/04/sql-server-reporting-services-trace-log-e-http-log/</feedburner:origLink></item>
		<item>
		<title>Licenciamento no SQL Server 2012</title>
		<link>http://feedproxy.google.com/~r/Zavaschi/~3/tMM19u_5r84/</link>
		<comments>http://zavaschi.com/index.php/2012/04/licenciamento-no-sql-server-2012/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 15:00:00 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Licenciamento]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2012/04/licenciamento-no-sql-server-2012/</guid>
		<description><![CDATA[Depois da série sobre licenciamento no SQL Server 2008 R2, muitos me perguntaram o que mudou no 2012. 
Houveram diversas mudanças com objetivo de facilitar o licenciamento, tanto em cenários virtualizados ou físicos.
A Lívia Sarto que trabalha no time de produto de SQL Server na Microsoft Brasil fez três posts explicando as principais mudanças. Vale [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Depois da série sobre licenciamento no SQL Server 2008 R2, muitos me perguntaram o que mudou no 2012. </p>
<p align="justify">Houveram diversas mudanças com objetivo de facilitar o licenciamento, tanto em cenários virtualizados ou físicos.</p>
<p align="justify">A Lívia Sarto que trabalha no time de produto de SQL Server na Microsoft Brasil fez três posts explicando as principais mudanças. Vale a pena a leitura, ainda que sejamos técnicos é algo interessante de se saber ao menos o básico!</p>
<p align="justify"><a title="Link Permanente para Licenciando o SQL Server 2012 – Part I" href="http://liviasarto.wordpress.com/2012/02/20/licenciando-o-sql-server-2012-part-i/" target="_blank">Licenciando o SQL Server 2012 – Part I</a></p>
<p align="justify"><a title="Link Permanente para Licenciando o SQL Server 2012 – Part II" href="http://liviasarto.wordpress.com/2012/02/21/licenciando-o-sql-server-2012-part-ii/" target="_blank">Licenciando o SQL Server 2012 – Part II</a></p>
<p align="justify"><a title="Link Permanente para Licenciando o SQL Server 2012 – Part III" href="http://liviasarto.wordpress.com/2012/02/22/licenciando-o-sql-server-2012-part-iii/" target="_blank">Licenciando o SQL Server 2012 – Part III</a></p>
<p align="justify">Em breve teremos novos posts lá sobre licenciamento, então fiquem ligados. :)</p>
<p align="justify">Grande abraço!   <br />Thiago Zavaschi</p>
<img src="http://feeds.feedburner.com/~r/Zavaschi/~4/tMM19u_5r84" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2012/04/licenciamento-no-sql-server-2012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://zavaschi.com/index.php/2012/04/licenciamento-no-sql-server-2012/</feedburner:origLink></item>
		<item>
		<title>Hierarquias no Analysis Services</title>
		<link>http://feedproxy.google.com/~r/Zavaschi/~3/wcrj9BspSV4/</link>
		<comments>http://zavaschi.com/index.php/2012/04/hierarquias-no-analysis-services/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 16:06:09 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SSAS]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[Hierarquias]]></category>
		<category><![CDATA[Parâmetros]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2012/04/hierarquias-no-analysis-services/</guid>
		<description><![CDATA[Olá!
Hoje irei comentar um pouco sobre hierarquias no Analysis Services, seus benefícios e alguns dos parâmetros importantes quando definimos/criamos uma.
Os elementos que compõem uma dimensão são chamados de atributos. Estas dimensões são responsáveis por dar contexto às medidas (measures) numéricas contidas no cubo (total de vendas, quantidade de vendas ano sobre ano, entre outras de [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá!</p>
<p align="justify">Hoje irei comentar um pouco sobre hierarquias no Analysis Services, seus benefícios e alguns dos parâmetros importantes quando definimos/criamos uma.</p>
<p align="justify">Os elementos que compõem uma dimensão são chamados de atributos. Estas dimensões são responsáveis por dar contexto às medidas (<em>measures</em>) numéricas contidas no cubo (total de vendas, quantidade de vendas ano sobre ano, entre outras de acordo com o seu negócio) e muitas vezes podem conter dezenas de atributos.</p>
<p align="justify">Com uma grande quantidade de atributos pode ser complicado a um usuário de uma ferramenta de análise (Excel por exemplo) navegar por estes atributos. Para facilitar esta navegação, podem ser criadas hierarquias dentro destas dimensões. Além de facilitar a navegação (drill down e drill up), o SSAS consegue se utilizar destas hierarquias (desde que os atributos tenham um relacionamento natural) para criar índices e agregações pré-calculadas e assim agilizar o tempo de resposta das queries dos usuários.</p>
<p>  <span id="more-418"></span>
<p align="justify">Por padrão todos os atributos são organizados em uma hierarquia de dois levels: o level “All” e o level folha. Esta hierarquia padrão pode ser desabilitada setando a opção <strong><em>IsAggregatable</em></strong> para falso (<em>False</em>).</p>
<p align="justify">Os tipos de hierarquias existentes são:</p>
<p align="justify"><strong>Hierarquias balanceadas (<em>Balanced</em></strong><em> </em><strong><em>Hierarchies</em>):</strong> neste tipo todos os ramos de uma hierarquia descendem de um mesmo level, e o “pai lógico” de cada membro é o level imediatamente superior.</p>
<p align="justify"><strong>Hierarquias não balanceadas (<em>Unbalanced Hierarchies</em>):</strong> os ramos descendem de levels diferentes.</p>
<p align="justify"><strong>Hierarquias pai-filho (<em>Parent-Child Hierarchies</em>):</strong> Hierarquias pai-filho são também hierarquias não balanceadas, pois a profundidade da hierarquia pode variar de acordo com o membro. E que também possuem um relacionamento de auto referência (self-referencing relashionship). O caso clássico desta hierarquia são em organogramas de empresas.</p>
<p align="justify"><strong>Hierarquias irregulares (<em>Ragged Hierarchies</em>):</strong> quando pelo menos o pai de um membro não esta no level imediatamente acima (e que não seja membro raiz, pois nesse caso não teria pai). Este tipo de hierarquia para o usuário final se parece com as do tipo pai-filho, porém os membros são de atributos diferentes.</p>
<p align="justify">Existem algumas propriedades muito importantes quando configuramos as dimensões (estas propriedades são setadas para os atributos da dimensão):</p>
<p align="justify">A primeira deles já comentamos que é se queremos ou não a utilização da hierarquia padrão: <em><strong>IsAggregatable</strong></em>.</p>
<p align="justify">Os próximos são:</p>
<p align="justify"><em><strong>AttributeHierarchyOrdered</strong></em> define se a hierarquia será ou não ordenada. Se estiver como falso (e se você apenas a utiliza para ordenar outra hierarquia de atributos) pode reduzir o tempo de processamento.</p>
<p align="justify"><strong><em>AttributeHierarchyOptimizedState</em></strong> pode ser configurado para NotOptimized para evitar qeu o SSAS crie indices nesta hierarquia de atributos. Diminui o tempo de processamento, mas irá aumentar o tempo de execução das queries que a utilizam (efeito gangorra).</p>
<p align="justify"><em><strong>AttributeHierarchyEnabled</strong></em> se esta propriedade estiver como falso a hierarquia de atributos será desabilitada e o SSAS criará como membro. É útil quando o atributo provê informações, mas você não quer usá-lo como level de agregação.</p>
<p align="justify"><em><strong>AttributeHierarchyVisible</strong></em> se essa propriedade estiver como falsa, o atributo só será visível em hierarquias definidas pelo usuário (user-defined hierarchies). Mesmo como falso ainda pode ser referenciado em expressões MDX.</p>
<hr />
<p align="justify">Não preciso dizer que <em>com grandes poderes vêm grandes responsabilidades</em> né? Use estas configurações sabiamente e testem para ver os reais impactos e benefícios!</p>
<p align="justify">Bom pessoal, era isso por hoje!</p>
<p align="justify">[]s,   <br />Thiago Zavaschi</p>
<img src="http://feeds.feedburner.com/~r/Zavaschi/~4/wcrj9BspSV4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2012/04/hierarquias-no-analysis-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://zavaschi.com/index.php/2012/04/hierarquias-no-analysis-services/</feedburner:origLink></item>
		<item>
		<title>Análise de Performance no Reporting Services (SSRS)</title>
		<link>http://feedproxy.google.com/~r/Zavaschi/~3/pamT7iLuXqY/</link>
		<comments>http://zavaschi.com/index.php/2012/04/anlise-de-performance-no-reporting-services-ssrs/#comments</comments>
		<pubDate>Fri, 13 Apr 2012 01:40:23 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SSRS]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2012/04/anlise-de-performance-no-reporting-services-ssrs/</guid>
		<description><![CDATA[Olá pessoal,
O servidor de relatórios contido na suíte do SQL Server é muito usado e há uma série de características sobre ele que não usamos ou que desconhecemos que existe.
Hoje vou comentar sobre um dos pontos iniciais a se olhar quando são identificados problemas relacionados a performance no SSRS e indicar um direcionamento para a [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><font size="2">Olá pessoal,</font></p>
<p align="justify"><font size="2">O servidor de relatórios contido na suíte do SQL Server é muito usado e há uma série de características sobre ele que não usamos ou que desconhecemos que existe.</font></p>
<p align="justify"><font size="2">Hoje vou comentar sobre um dos pontos iniciais a se olhar quando são identificados problemas relacionados a performance no SSRS e indicar um direcionamento para a análise.</font></p>
<p align="justify"><font size="2">O primeiro ponto que podemos olhar é o <em>Execution Log </em>que nos provê dados relacionados às execuções de relatórios no servidor.</font></p>
<p>  <span id="more-416"></span>
<p align="justify"><font size="2">Há uma view que mapeia algumas tabelas (que podem ser usadas também, como a ExecutionLogStorage/ExecutionLog) chamada <em><strong>ExecutionLog2</strong></em> e é encontrada na base de dados principal do Reporting Services (o nome padrão é <em>ReportServer</em>).</font></p>
<p align="justify"><font size="2">Esta view nos traz dados importantes e também já utiliza o hint NOLOCK para minimizar o impacto da sua execução. Entre eles podemos citar:</font></p>
<p align="justify"><font size="2"><strong>ReportPath</strong>: O caminho do relatório.</font></p>
<p align="justify"><font size="2"><strong>TimeStart</strong>: Horário de início do processamento. Um jeito interessante de fazer select na view ExecutionLog2 é ordenar por esta coluna.</font></p>
<p align="justify"><font size="2"><strong>TimeEnd</strong>: Horário de término do processamento. Relatórios que apresentam problemas de não completarem e que a diferença entre TimeEnd e TimeStart seja constante, podem indicar um problema de timeout das execuções.</font></p>
<p align="justify"><font size="2"><strong>TimeDataRetrieval</strong>: É o tempo que demora para o relatório obter os dados da fonte de dados (seja ela SSAS, SQL Server, Oracle, e assim por diante). Se é encontrado problema de performance neste ponto o indicado é verificar a otimização da query usada para o consumo dos dados e/ou verificar a fonte de dados se está corretamente implementada (índices, estatísticas, etc).</font></p>
<p align="justify"><font size="2"><strong>TimeProcessing</strong>: O tempo das operações que os relatórios utilizam como ordenação, agregação e filtro é contabilizado aqui (subrelatórios também são contabilizados nesta coluna). Para melhorar deve-se investigar se o relatório está fazendo as operações devidas. Uma boa prática é já passar ao relatório os dados na granularidade que irá precisar ao invés dos dados crus. Uma vez que, em geral, a agregação na fonte poderá ter um melhor desempenho.</font></p>
<p align="justify"><font size="2"><strong>TimeRendering</strong>: é o tempo que leva para tranformar do formato intermedíario para o formato renderizado. Os formatos mais custosos são Excel (é o mais), PDF, Word e TIFF.</font></p>
<p align="justify"><font size="2">A definição da View é a seguinte:</font></p>
<p align="justify"><font face="Courier New">CREATE VIEW [dbo].[ExecutionLog2]      <br />AS       <br />SELECT       <br />&#160;&#160;&#160; InstanceName,       <br />&#160;&#160;&#160; COALESCE(C.Path, 'Unknown') AS ReportPath,       <br />&#160;&#160;&#160; UserName,       <br />&#160;&#160;&#160; ExecutionId,       <br />&#160;&#160;&#160; CASE(RequestType)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 0 THEN 'Interactive'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 1 THEN 'Subscription'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ELSE 'Unknown'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; END AS RequestType,       <br />&#160;&#160;&#160; -- SubscriptionId,       <br />&#160;&#160;&#160; Format,       <br />&#160;&#160;&#160; Parameters,       <br />&#160;&#160;&#160; CASE(ReportAction)&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 1 THEN 'Render'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 2 THEN 'BookmarkNavigation'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 3 THEN 'DocumentMapNavigation'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 4 THEN 'DrillThrough'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 5 THEN 'FindString'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 6 THEN 'GetDocumentMap'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 7 THEN 'Toggle'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 8 THEN 'Sort'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ELSE 'Unknown'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; END AS ReportAction,       <br />&#160;&#160;&#160; TimeStart,       <br />&#160;&#160;&#160; TimeEnd,       <br />&#160;&#160;&#160; TimeDataRetrieval,       <br />&#160;&#160;&#160; TimeProcessing,       <br />&#160;&#160;&#160; TimeRendering,       <br />&#160;&#160;&#160; CASE(Source)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 1 THEN 'Live'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 2 THEN 'Cache'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 3 THEN 'Snapshot'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 4 THEN 'History'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 5 THEN 'AdHoc'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 6 THEN 'Session'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WHEN 7 THEN 'Rdce'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ELSE 'Unknown'       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; END AS Source,       <br />&#160;&#160;&#160; Status,       <br />&#160;&#160;&#160; ByteCount,       <br />&#160;&#160;&#160; [RowCount],       <br />&#160;&#160;&#160; AdditionalInfo       <br />FROM ExecutionLogStorage EL WITH(NOLOCK)       <br />LEFT OUTER JOIN Catalog C WITH(NOLOCK) ON (EL.ReportID = C.ItemID)</font></p>
<p align="justify"><font size="2">Bom pessoal, era isso que eu queria mostrar hoje. Espero que seja um ponto de partida para avaliar o que pode estar causando gargalos na geração dos seus relatórios.</font></p>
<p align="justify"><strong>Edit:</strong></p>
<p align="justify">Bom para complementar segue um exemplo extraído aqui da saída da execução da view:</p>
<p align="justify"><font size="2" face="Courier New">SELECT * FROM ExecutionLog2</font></p>
<p><strong>InstanceName</strong>: <em>SQL2008R2-SSRS\MSSQLSERVER</em>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <strong>ReportPath</strong>:<em> /AdventureWorks 2008R2/AdventureWorks2008R2_Base      <br /></em><strong>UserName</strong>: <em>DENALI\Administrator</em>&#160;&#160; <br /><strong>ExecutionId</strong>: <em>oxwvm3vl3n0mnyqlextnkujf</em>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><strong>RequestType</strong>: <em>Interactive</em>     <br /><strong>Format</strong>: <em>RPL</em>     <br /><strong>Parameters</strong>: <em>ShowAll=False      <br /></em><strong>ReportAction</strong>: <em>Render</em>     <br /><strong>TimeStart</strong>: <em>2012-04-13 11:25:38.997</em>     <br /><strong>TimeEnd</strong>: <em>2012-04-13 11:25:40.560</em>     <br /><strong>TimeDataRetrieval</strong>: <em>0      <br /></em><strong>TimeProcessing</strong>: <em>348      <br /></em><strong>TimeRendering</strong>: <em>878      <br /></em><strong>Source</strong>: <em>Live</em>&#160;&#160; <br /><strong>Status</strong>: <em>rsSucess</em>     <br /><strong>ByteCount</strong>: <em>1913</em>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><strong>RowCount</strong>: <em>0&#160;&#160; </em>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><strong>AdditionalInfo</strong>: <em>&lt;AdditionalInfo&gt;&lt;ProcessingEngine&gt;2&lt;/ProcessingEngine&gt;&lt;ScalabilityTime&gt;      <br />&lt;Pagination&gt;0&lt;/Pagination&gt;&lt;Processing&gt;0&lt;/Processing&gt;&lt;/ScalabilityTime&gt;       <br />&lt;EstimatedMemoryUsageKB&gt;&lt;Pagination&gt;0&lt;/Pagination&gt;&lt;Processing&gt;0&lt;/Processing&gt;       <br />&lt;/EstimatedMemoryUsageKB&gt;&lt;/AdditionalInfo&gt;</em></p>
<p>E segue também a sugestão do <strong>Ildo</strong> (feita nos comentários) sobre utilização da view, valeu!</p>
<p><font size="2" face="Courier New">SELECT      <br />[UserName]       <br />,[ReportPath]       <br />,COUNT([ReportPath]) as Executions       <br />,( SELECT MAX(TimeStart) FROM [ReportServer].[dbo].[ExecutionLog2] as clog WHERE clog.UserName = olog.UserName AND clog.ReportPath = olog.ReportPath ) LastExecution       <br />FROM [ReportServer].[dbo].[ExecutionLog2] as olog       <br />WHERE [UserName] NOT IN ( ‘ildo’, ‘TKD-DB\sd’ )       <br />GROUP BY [UserName], [ReportPath]       <br />ORDER BY [UserName], [ReportPath]</font></p>
<p align="justify"><font size="2">[]s!</font></p>
<img src="http://feeds.feedburner.com/~r/Zavaschi/~4/pamT7iLuXqY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2012/04/anlise-de-performance-no-reporting-services-ssrs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://zavaschi.com/index.php/2012/04/anlise-de-performance-no-reporting-services-ssrs/</feedburner:origLink></item>
	</channel>
</rss>
