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

<channel>
	<title>Thiago Zavaschi R2 &#187; SQL Server 2008 R2</title>
	<atom:link href="http://zavaschi.com/index.php/category/sql-server-2008-r2/feed/" rel="self" type="application/rss+xml" />
	<link>http://zavaschi.com</link>
	<description>www.zavaschi.com</description>
	<lastBuildDate>Mon, 02 Jan 2012 16:51:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SQL Server virtualizado e ambientes h&#237;bridos: Virtualizado + n&#227;o-virtualizado (licenciamento por processador)</title>
		<link>http://zavaschi.com/index.php/2011/08/sql-server-virtualizado-e-ambientes-hbridos-virtualizado-no-virtualizado-licenciamento-por-processador/</link>
		<comments>http://zavaschi.com/index.php/2011/08/sql-server-virtualizado-e-ambientes-hbridos-virtualizado-no-virtualizado-licenciamento-por-processador/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 18:54:19 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Licenciamento]]></category>
		<category><![CDATA[Virtualização]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2011/08/sql-server-virtualizado-e-ambientes-hbridos-virtualizado-no-virtualizado-licenciamento-por-processador/</guid>
		<description><![CDATA[Olá pessoal!
Continuando nossa série sobre licenciamento de SQL Server, lembrando que o que estamos falando aqui se aplica para a versão do SQL Server 2008 R2 (e não necessariamente serão as mesmas para o SQL Denali) e que as regras efetivamente devem ser vistas no PUR – Product Use Rights.
Hoje falaremos de SQL Server em [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá pessoal!</p>
<p align="justify">Continuando nossa <a href="http://zavaschi.com/index.php/2011/05/sql-server-e-sql-azure-licenciamento-billing/" target="_blank">série</a> sobre licenciamento de SQL Server, lembrando que o que estamos falando aqui se aplica para a versão do SQL Server 2008 R2 (e não necessariamente serão as mesmas para o SQL Denali) e que as regras efetivamente devem ser vistas no <a href="http://www.microsoft.com/licensing/about-licensing/product-licensing.aspx" target="_blank">PUR – Product Use Rights</a>.</p>
<p align="justify">Hoje falaremos de SQL Server em ambientes virtualizados.</p>
<p align="justify"><a href="http://zavaschi.com/index.php/2011/06/licenciamento-de-sql-server-server-cal-ou-por-processador/" target="_blank">Já sabemos</a> que caso eu deseja instalar o SQL Server numa máquina física eu preciso licenciar todos os processadores, ou usar Server/CAL.</p>
<p align="justify">Mas e em ambientes virtualizados? A resposta é o famoso: depende!</p>
<p>  <span id="more-393"></span>
<p align="justify">Primeiramente temos que nos ater a uma tabelinha que diz em quandos OSEs (operational system environments) vamos poder rodar o SQL Server caso compremos licenças por processador para TODOS os processadores. </p>
<p align="justify">O que isso quer dizer? Quer dizer que caso licenciemos TODOS os processadores é possível, dependendo da edição, instalar em mais de um ambiente que rode naquela mesma máquina (ambientes virtualizados).</p>
<table style="border-collapse: collapse" border="0" cellspacing="0" cellpadding="0" width="306">
<colgroup>
<col style="width: 147pt; mso-width-source: userset; mso-width-alt: 7168" width="196" />
<col style="width: 83pt; mso-width-source: userset; mso-width-alt: 4022" width="110" /></colgroup>
<tbody>
<tr style="height: 15pt" height="20">
<td style="border-bottom: medium none; border-left: black 0.5pt solid; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; background: black; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: medium none; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none; mso-pattern: black none" height="20" width="196"><font face="Calibri"><font style="font-size: 11pt" color="#ffffff"><strong>Edição</strong></font></font></td>
<td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; background: black; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: black 0.5pt solid; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none; mso-pattern: black none" width="110"><font face="Calibri"><font style="font-size: 11pt" color="#ffffff"><strong>Número de OSEs</strong></font></font></td>
</tr>
<tr style="height: 15pt" height="20">
<td style="border-bottom: medium none; border-left: black 0.5pt solid; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: medium none; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none" height="20"><font face="Calibri"><font style="font-size: 11pt">SQL Server 2008 R2 Datacenter</font></font></td>
<td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: black 0.5pt solid; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none"><font face="Calibri"><font style="font-size: 11pt">Ilimitado</font></font></td>
</tr>
<tr style="height: 15pt" height="20">
<td style="border-bottom: medium none; border-left: black 0.5pt solid; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: medium none; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none" height="20"><font face="Calibri"><font style="font-size: 11pt">SQL Server 2008 R2 Enterprise</font></font></td>
<td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: black 0.5pt solid; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none"><font face="Calibri"><font style="font-size: 11pt">Até 4 por licença</font></font></td>
</tr>
<tr style="height: 15pt" height="20">
<td style="border-bottom: medium none; border-left: black 0.5pt solid; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: medium none; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none" height="20"><font face="Calibri"><font style="font-size: 11pt">SQL Server 2008 R2 Standard</font></font></td>
<td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: black 0.5pt solid; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none"><font face="Calibri"><font style="font-size: 11pt">1 por licença</font></font></td>
</tr>
<tr style="height: 15pt" height="20">
<td style="border-bottom: medium none; border-left: black 0.5pt solid; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: medium none; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none" height="20"><font face="Calibri"><font style="font-size: 11pt">SQL Server 2008 R2 Workgroup</font></font></td>
<td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: black 0.5pt solid; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none"><font face="Calibri"><font style="font-size: 11pt">1 por licença</font></font></td>
</tr>
<tr style="height: 15pt" height="20">
<td style="border-bottom: black 0.5pt solid; border-left: black 0.5pt solid; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: medium none; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none" height="20"><font face="Calibri"><font style="font-size: 11pt">SQL Server 2008 R2 Web</font></font></td>
<td style="border-bottom: black 0.5pt solid; border-left: medium none; padding-bottom: 0px; padding-left: 1px; padding-right: 1px; font-family: ; color: ; vertical-align: bottom; border-top: black 0.5pt solid; border-right: black 0.5pt solid; text-decoration: ; padding-top: 1px; text-underline-style: none; text-line-through: none"><font face="Calibri"><font style="font-size: 11pt">1 por licença</font></font></td>
</tr>
</tbody>
</table>
<p align="justify">Como podem ver é de acordo com a edição do seu SQL Server (<a href="http://technet.microsoft.com/pt-br/sqlserver/hh207172" target="_blank">saiba quais são as edições aqui</a>).</p>
<p align="justify">Isso signica que se eu tenho um servidor com 4 processadores físicos (não importa o número de cores) e licenciei todos os processadores com licença enterprise (4 licenças) eu vou poder subir até 16 máquinas virtuais e com o SQL Server instalado em cada uma delas.</p>
<p align="justify">Se eu comprar 4 licenças Datacenter, posso subir ilimitadas (desde que seu hardware suporte) máquinas virtuais!</p>
<p align="justify">É importante frisar que há uma limitação técnica do SQL Server Enterprise de suporte a até 8 processadores! Se o servidor possuir mais que 8 processadores físicos, a edição a licenciar deve ser a Datacenter.</p>
<p align="justify">Bom Zavaschi… mas quando virtualizo eu posso apresentar um número menor de cores para a minha máquina virtual (hyper-v por exemplo é possível apresentar até 4, isso vai aumentar na próxima versão) e nesse caso eu não vou usar todos os recursos da máquina, preciso licenciar todos os processadores? Mesmo que eu queira saomente uma máquina virtual (1 OSE)? </p>
<p align="justify">A resposta é não! Neste caso há uma pequena conta a se fazer para saber o número de licenças por processador que você irá necessitar <em>por OSE</em>.</p>
<p align="justify">Vamos lá. A imagem abaixo mostra o SQL Server 2008 R2 rodando em uma máquina com um processador físico (dual core). Neste cenário o número de núcleos importa.</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/08/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/08/image_thumb.png" width="336" height="280" /></a></p>
<p align="justify">A conta a se fazer é:</p>
<p align="justify"># de processadores virtuais dando suporte os OSE virtual    <br />/    <br /> # de núcleos (hyperthreading desativado) ou threads (se o hyperthreading estiver ativado) por processador físico    <br />=    <br /># de licenças de Processador necessárias (se de rnúmero fracionado, arredonde para cima)</p>
<p align="justify">Se estamos apresentando 2 processadores <strong>virtuais</strong> para a VM e ela possui dois cores, então a conta fica 2/2 que resulta em uma licença por processador.</p>
<p align="justify">Em um cenário maior:</p>
<p align="justify">Temos 4 processadores físicos octacore. Apresentamos 4 processadores virtuais para a máquina virtual. São necessárias quantas licenças de processador?</p>
<p align="justify">Fazendo a conta: 4 / 8 = 0,5. Logo, 1 licença (mesmo tendo 4 processadores)!</p>
<p align="justify">Novamente: isso é por OSE! Se tiver duas máquinas virtuais, cada uma com 4 processadores virtuais, seriam 2 licenças. A tabela abaixo resume o cálculo:</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/08/image1.png"><img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/08/image_thumb1.png" width="446" height="299" /></a></p>
<p align="justify">É isso pessoal. Apesar dos cenários e arquiteturas em alguns casos serem complexos, o processo de licenciamento só precisa ser acompanhado com a ótica correta. Aguardo o feedback de vocês!</p>
<p align="justify">Abraços,    <br />Thiago Zavaschi</p>
]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2011/08/sql-server-virtualizado-e-ambientes-hbridos-virtualizado-no-virtualizado-licenciamento-por-processador/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Semana Acad&#234;mica de Ci&#234;ncia da Computa&#231;&#227;o &#8211;PUC-PR &#8211; 2011</title>
		<link>http://zavaschi.com/index.php/2011/08/semana-acadmica-de-cincia-da-computao-puc-pr-2011/</link>
		<comments>http://zavaschi.com/index.php/2011/08/semana-acadmica-de-cincia-da-computao-puc-pr-2011/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 17:07:12 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Eventos]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2011/08/semana-acadmica-de-cincia-da-computao-puc-pr-2011/</guid>
		<description><![CDATA[ Olá pessoal!
Tive o prazer de ser convidado pelo Nikolas (@nikolasmoya) para dar uma palestra na semana acadêmica de Ciência da Computatação da Pontifícia Universidade Católica do Paraná.
O evento ocorreu ao longo da semana passada e a minha palestra foi na segunda-feira (25/07). Particularmente para mim foi muito bacana pois pude retornar a universidade na [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"> Olá pessoal!</p>
<p align="justify">Tive o prazer de ser convidado pelo Nikolas (<a href="http://twitter.com/nikolasmoya" target="_blank">@nikolasmoya</a>) para dar uma palestra na semana acadêmica de Ciência da Computatação da Pontifícia Universidade Católica do Paraná.</p>
<p align="justify">O evento ocorreu ao longo da semana passada e a minha palestra foi na segunda-feira (25/07). Particularmente para mim foi muito bacana pois pude retornar a universidade na qual me formei (em ciência da computação!) e onde fiz meu mestrado em informática também!</p>
<p align="justify">O tema foi sobre Business Intelligence. Hoje nas corporações é um tema muito relevante e recorrente, maso meu desafio foi como tratar do assunto quando estamos falando com estudantes (e de noite, quando já estão cansados)?</p>
<p align="justify">Procurei fazer algo um pouco mais descontraído e acho que o resultado foi bem bacana.</p>
<p align="justify">Segue a apresentação e os links que coloquei como referência nos slides:</p>
<p align="justify"><a href="https://skydrive.live.com/?cid=8de5a8efc1819eca&amp;sc=documents&amp;id=8DE5A8EFC1819ECA%21660#" target="_blank">Download da apresentação</a></p>
<p>− Centros de Treinamento TechNet/MSDN   <br /><a href="http://technet.microsoft.com/pt-br/treinamento">http://technet.microsoft.com/pt-br/treinamento</a> </p>
<p>− TechEd - <a href="http://www.techedbrasil.com.br">www.techedbrasil.com.br</a></p>
<p>− <a href="http://www.powerpivotfaq.com/">http://powerpivotfaq.com</a></p>
<p>− <a href="http://ssas-info.com/">http://ssas-info.com</a></p>
<p>− <a href="http://powerpivot-info.com/">http://powerpivot-info.com</a></p>
<p>− <a href="http://www.microsoft.com/bi">www.microsoft.com/bi</a></p>
<p>− <a href="http://www.powerpivot.com">www.powerpivot.com</a></p>
<p>Abraços e espero os próximos anos!</p>
<p>Lembrando que ao longo dessa semana temos a semana de SQL Server (<a title="http://bit.ly/kQY8Zl" href="http://bit.ly/kQY8Zl">http://bit.ly/kQY8Zl</a>) e hoje a noite palestro sobre BISM e a nova versão do PowerPivot (self-service BI)!</p>
<p>[]s   <br />Thiago Zavaschi</p>
]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2011/08/semana-acadmica-de-cincia-da-computao-puc-pr-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Melhores pr&#225;ticas &#8211; Compress&#227;o de Dados</title>
		<link>http://zavaschi.com/index.php/2011/07/melhores-prticas-compresso-de-dados/</link>
		<comments>http://zavaschi.com/index.php/2011/07/melhores-prticas-compresso-de-dados/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 16:49:00 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Data Compression]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2011/07/melhores-prticas-compresso-de-dados/</guid>
		<description><![CDATA[Olá pessoal,
Vocês conhecem as melhores práticas, estratégias e execução de capacity planning quando o assunto é compressão de dados?
A feature de compressão de dados (e de backup) está disponível desde o SQL Server 2008 mas ainda é pouco explorada nos ambientes que conheço.
Recomendo o seguinte whitepaper de maio de 2009 (não contempla o SQL Server [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá pessoal,</p>
<p align="justify">Vocês conhecem as melhores práticas, estratégias e execução de capacity planning quando o assunto é compressão de dados?</p>
<p align="justify">A feature de compressão de dados (e de backup) está disponível desde o SQL Server 2008 mas ainda é pouco explorada nos ambientes que conheço.</p>
<p align="justify">Recomendo o seguinte whitepaper de maio de 2009 (não contempla o SQL Server 2008 R2, que ganhou a capacidade de compactação em Unicode também):</p>
<p align="justify"><a title="http://msdn.microsoft.com/en-us/library/dd894051(SQL.100).aspx" href="http://msdn.microsoft.com/en-us/library/dd894051(SQL.100).aspx">http://msdn.microsoft.com/en-us/library/dd894051(SQL.100).aspx</a></p>
<p align="justify">Para saber mais sobre a compactação no SQL Server 2008 R2, recomendo:</p>
<p align="justify"><a title="http://www.mssqltips.com/tip.asp?tip=2019" href="http://www.mssqltips.com/tip.asp?tip=2019">http://www.mssqltips.com/tip.asp?tip=2019</a></p>
<p align="justify">Os artigos são em inglês. Em breve publico uma adaptação aqui no blog para o português.</p>
<p align="justify">Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2011/07/melhores-prticas-compresso-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como saber quem est&#225; conectado no meu servidor do Analysis Services?</title>
		<link>http://zavaschi.com/index.php/2011/06/como-saber-quem-est-conectado-no-meu-servidor-do-analysis-services/</link>
		<comments>http://zavaschi.com/index.php/2011/06/como-saber-quem-est-conectado-no-meu-servidor-do-analysis-services/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 18:23:04 +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[Virtual PASS BR]]></category>
		<category><![CDATA[DMV]]></category>
		<category><![CDATA[Resource Monitoring]]></category>
		<category><![CDATA[SSAS]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2011/06/como-saber-quem-est-conectado-no-meu-servidor-do-analysis-services/</guid>
		<description><![CDATA[Olá pessoal!
Recebi essa dúvida no meu e-mail e por ser pertinente estou fazendo esse post.
“Como saber quem está conectado no meu servidor do Analysis Services?”
A resposta é simples: existem DMVs no SSAS (!!!) que podem retornar informações sobre recursos, objetos e desempenho. As DMVs em geral são utilizadas no database engine, mas existem no servidor [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá pessoal!</p>
<p align="justify">Recebi essa dúvida no meu e-mail e por ser pertinente estou fazendo esse post.</p>
<p align="justify"><em>“Como saber quem está conectado no meu servidor do Analysis Services?”</em></p>
<p align="justify">A resposta é simples: <strong>existem DMVs no SSAS (!!!)</strong> que podem retornar informações sobre recursos, objetos e desempenho. As DMVs em geral são utilizadas no database engine, mas existem no servidor de análise também.</p>
<p align="justify">Mais diretamente, para saber quem está conectado no meu servidor SSAS basta executar:</p>
<p align="justify"><strong><font face="Courier New">SELECT * FROM $system.DISCOVER_CONNECTIONS</font></strong></p>
<p align="justify">A DMV similar a procedure <em>sp_who2 </em>para o Analysis Services é a seguinte:</p>
<p align="justify"><strong><font face="Courier New">SELECT * FROM $system.DISCOVER_Commands</font></strong></p>
<p align="justify">Para obter uma listagem de todas as DMVs que podem receber consultas, utilize:</p>
<p align="justify"><strong><font face="Courier New">SELECT * FROM $system.dbschema_tables        <br />WHERE Table_Schema = '$SYSTEM'</font></strong></p>
<p align="justify">Como referência posso citar o livro: <a href="http://www.amazon.com/Microsoft-Server-Analysis-Services-Unleashed/dp/0672330016/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1308680365&amp;sr=8-1" target="_blank">Microsoft SQL Server Analysis Services Unleashed</a>, capítulo 41: Resource Monitoring.</p>
<p align="justify">Abraços e até o próximo post!</p>
]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2011/06/como-saber-quem-est-conectado-no-meu-servidor-do-analysis-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Licenciamento de SQL Server &#8211; Server + CAL ou Por Processador</title>
		<link>http://zavaschi.com/index.php/2011/06/licenciamento-de-sql-server-server-cal-ou-por-processador/</link>
		<comments>http://zavaschi.com/index.php/2011/06/licenciamento-de-sql-server-server-cal-ou-por-processador/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 23:30:19 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Licenciamento]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2011/06/licenciamento-de-sql-server-server-cal-ou-por-processador/</guid>
		<description><![CDATA[Olá pessoal,
Vamos iniciar nossas discussões sobre licenciamento?
Antes de mais nada precisamos entender que todas as regras para o licenciamento Microsoft (não somente do SQL Server), bem como o que envolve os cenários estão em um documento chamado PUR (Product Use Rights) que pode ser baixando aqui: http://www.microsoft.com/licensing/about-licensing/product-licensing.aspx.
Outra coisa é que vou apenas tratar da parte [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá pessoal,</p>
<p align="justify">Vamos iniciar nossas discussões sobre licenciamento?</p>
<p align="justify">Antes de mais nada precisamos entender que todas as regras para o licenciamento Microsoft (não somente do SQL Server), bem como o que envolve os cenários estão em um documento chamado PUR (Product Use Rights) que pode ser baixando aqui: <a title="http://www.microsoft.com/licensing/about-licensing/product-licensing.aspx" href="http://www.microsoft.com/licensing/about-licensing/product-licensing.aspx">http://www.microsoft.com/licensing/about-licensing/product-licensing.aspx</a>.</p>
<p align="justify">Outra coisa é que vou apenas <strong>tratar da parte do SQL Server</strong>, não vou entrar na parte de Windows Server que possui sua forma de licenciamento (diferentes cenários do SQL Server, external connector, etc…) própria.</p>
<p align="justify">Mais uma coisa: este licenciamento é valido para o SQL Server 2008 R2. Só é possível comprar licenças da versão mais atual do produto, mas o downgrade (para 2008, 2005, por exemplo) é possível.</p>
<p align="justify">Vamos lá. Lembrando que estas explicações ainda não estão cobrindo os cenários com alta disponibilidade (cluster, mirroring, etc) e nem virtualização. Trataremos disso em posts futuros.</p>
<p>    <span id="more-375"></span>
<p align="justify"></p>
<hr />
<p align="justify"><strong>Server + CAL (Client Access License) </strong></p>
<p align="justify">Toda a linha de <strong>servers </strong>da Microsoft possui o licenciamento através do que chamamos de CAL (Client Access License), o que não é um software, e sim um documento que garante o acesso, e é necessário para cada usuário ou dispositivo que realiza acesso a este servidor.</p>
<p align="justify">Para esta forma de licenciamento deve ser adquirido uma licença para o servidor (server físico, independentemente do número de processadores) <em>mais </em>uma CAL por usuário/device.</p>
<p align="justify">Então vamos imaginar um cenário:</p>
<p align="justify"><em>- Tenho um servidor físico com 8 processadores e 50 usuários. O que preciso licenciar/pagar?</em></p>
<p align="justify">Você vai precisar de UMA licença de server MAIS 50 CALs de usuários.</p>
<p align="justify">O meio para se chegar ao servidor de banco de dados não importa para o licenciamento da parte SQL Server no esquema de CAL. Continua sendo uma por dispositivo ou por usuário.</p>
<p align="justify">É importante ressaltar que tecnologias que fazem multiplexação ou pooling de usuários (aplicação que mapeia um único usuário de banco de dados, por exemplo) não reduzem o número de CALs necessárias.</p>
<p align="justify"><em>- Ou seja, tenho um aplicativo que usa apenas um usuário para comunicação com o banco, então preciso de apenas uma CAL?</em></p>
<p align="justify">Não. Neste caso você precisaria de uma CAL de usuário por cada usuário da aplicação.</p>
<p align="justify">Partições ou blades separadas são consideradas servidores independentes no que tange a licenciamento.</p>
<p align="justify">Há também diversas edições de SQL Server, algumas delas, como a Web e a Datacenter suportam licenciamento apenas por processador. Cobrirei isso em um post futuro focando apenas nas edições.</p>
<p align="justify"><strong>Qual a diferença de CAL por dispositivo e CAL por usuário?</strong></p>
<p align="justify"><em>- O valor da licença por usuário e por dispositivo é a mesma, mas em que cenários eu devo adiquirir uma ou outra?</em></p>
<p align="justify">Imagine que você tenha o seguinte cenário:</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/06/image.png"><img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/06/image_thumb.png" width="310" height="156" /></a></p>
<p align="justify">O mesmo usuário acessando a base de dados de diferentes dispositivos.</p>
<p align="justify">Caso seja adquirido CAL por dispositivo, seria necessário 2 CALs. No caso da licença por usuário seria necessário apenas uma. Logo, licenciar por CAL de usuário, neste cenário, é mais interessante.</p>
<p align="justify">Em geral o cenário por CAL de usuário é o mais comum, mas há casos em que licenciar o dispositivo é melhor. Veja o cenário abaixo:</p>
<p align="justify">&#160;</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/06/image1.png"><img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/06/image_thumb1.png" width="340" height="198" /></a></p>
<p align="justify">Tenho diferentes usuários (no caso 4, mas pode ser que talvez nem se saiba quantos) que fazem acesso a minha base de dados, mas através de um único dispositivo. Um exemplo comum neste caso são aquele tótens de auto-atendimento (comuns em aeroportos).</p>
<p align="justify">Neste cenário seriam necessárias 4 CALs por usuário ou então apenas uma por dispositivo. Logo o recomendado neste cenário é a compra de CAL por dispositivo (pois sai mais barato).</p>
<p align="justify"><em>- Ok, mas eu tenho que escolher se compro somente CAL por dispositivo ou somente CAL por usuário?</em></p>
<p align="justify">Não! Você pode comprar “X” User CALs e Y “Device CALs” para o mesmo cenário. O importante é verificar qual o cenário que se enquadra para você.</p>
<p align="justify"><strong>Quando devo/é interessante licenciar através de Server/CAL ?</strong></p>
<ul>
<li>
<div align="justify">Quando é possível contar o número de usuários e dispositivos.</div>
</li>
</ul>
<ul>
<li>
<div align="justify">Quando o somatório do valor da licença + todas as CALs é inferior ao valor necessário pelo licenciamento por processador (ver abaixo), isto é, poucos usuários.</div>
</li>
<li>
<div align="justify">Quando você planeja escalar horizontalmente, ou seja, colocar mais servidores para atender aos mesmos usuários. Neste caso seria necessário comprar adicionalmente as licenças de servidor e não as CALs.</div>
</li>
</ul>
<p align="justify">Imagine o primeiro cenário com mais de um servidor:</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/06/image2.png"><img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/06/image_thumb2.png" width="317" height="231" /></a></p>
<p align="justify">A expansão neste caso seria “X” CALs de usuário + 3 licenças de servidor (independente da quantidade de processadores das máquinas).</p>
<p align="justify"><em></em></p>
<p align="justify"><em>Mas e nos cenários que eu não sei o número de usuários, na web por exemplo? Vou ter que comprar MUITAS CALs?</em></p>
<p align="justify">Neste caso não. Devemos fazer então o licenciamento por processador.</p>
<hr />
<p align="justify"><strong>Licenciamento por Processador</strong></p>
<p align="justify">No modelo de licenciamento que não é o Server + CAL o número de processadores importa.</p>
<p align="justify">Com o licenciamento por processador, o <em>número de usuários é ilimitado</em> sob o ponto de vista de licenciamento (esbarrando apenas na capacidade técnica do servidor).</p>
<p align="justify">Para este caso, <em>SEM</em> virtualização, o número de núcleos (com ou sem hyper threading) não importa. O termo processador se refere ao número de pastilhas físicas presentes nos servidores.</p>
<p align="justify">Imaginem o seguinte cenário:</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/06/image3.png"><img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/06/image_thumb3.png" width="240" height="225" /></a></p>
<p align="justify">Apenas um servidor com quatro processadores (16 núcleos), mas sem saber a quantidade de usuários. Cenários web e extranet se encaixam muito bem aqui.</p>
<p align="justify">Neste caso seriam necessárias 4 licenças do tipo “por processador”, não importa a quantidade de núcleos dos processadores para este cenário;</p>
<p align="justify"><em>- Coloquei o affinity do SQL Server para apenas 2 processadores, posso licenciar somente dois processadores (ou menos que o total de processadores da máquina)?</em></p>
<p align="justify">Não! Não é possível. Para um cenário sem virtualização (cobrirei em post futuro) TODOS os processadores físicos devem estar licenciados (seja standard, enterprise ou datacenter).</p>
<p align="justify">Não importa se o acesso é feito pela mesma pessoa usando dispositivos diferentes, ou diversos usuários na web. O que interessa é ter todos os processadores licenciados.</p>
<hr />
<p>Bom pessoal, este for o primeiro post da <a href="http://zavaschi.com/index.php/category/licenciamento/" target="_blank">série sobre licenciamento</a>. Espero que ajude vocês a entenderem melhor os cenários de licenciamento necessários ao adotarem o SQL Server como plataforma de dados.</p>
<p align="justify">Há ainda diversos cenários, mais complexos, como virtualização, alta disponibilidade (cold backup), diferentes edições do SQL Server (no que isso influencia), SQL Azure (como é cobrado na nuvem). Todos esses tópicos veremos na sequência!</p>
<p align="justify">Até a próxima!</p>
<p align="justify">Abraços,    <br />Thiago Zavaschi</p>
]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2011/06/licenciamento-de-sql-server-server-cal-ou-por-processador/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SQL Server e SQL Azure &#8211; Licenciamento + Billing</title>
		<link>http://zavaschi.com/index.php/2011/05/sql-server-e-sql-azure-licenciamento-billing/</link>
		<comments>http://zavaschi.com/index.php/2011/05/sql-server-e-sql-azure-licenciamento-billing/#comments</comments>
		<pubDate>Tue, 31 May 2011 18:18:56 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Licenciamento]]></category>
		<category><![CDATA[SQL Azure]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2011/05/sql-server-e-sql-azure-licenciamento-billing/</guid>
		<description><![CDATA[Então pessoal, como estão?
Sei que estou postando fortemente sobre Business Intelligence, mas hoje gostaria de iniciar algo diferente.
Se eu fosse elencar as dúvidas que recebo mais frequentemente dos clientes e parceiros, com certeza seria licenciamento em primeiro lugar.
A plataforma de dados da Microsoft é o SQL Server e o seu braço na nuvem é o [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Então pessoal, como estão?</p>
<p align="justify">Sei que estou postando fortemente sobre <em><a href="http://zavaschi.com/index.php/business-intelligence/" target="_blank">Business Intelligence</a></em>, mas hoje gostaria de iniciar algo diferente.</p>
<p align="justify">Se eu fosse elencar as dúvidas que recebo mais frequentemente dos clientes e parceiros, com certeza seria licenciamento em primeiro lugar.</p>
<p align="justify">A plataforma de dados da Microsoft é o SQL Server e o seu braço na nuvem é o SQL Azure. Por isso vou dividir esse conjunto de posts da seguinte forma (vou adicionar os links a esse post conforme os posts seguintes saírem), mas não necessariamente nesta mesma ordem.</p>
<ul>
<li>
<div align="justify"><a href="http://zavaschi.com/index.php/2011/06/licenciamento-de-sql-server-server-cal-ou-por-processador/" target="_blank">Server com CAL ou por processador?</a></div>
</li>
<li>
<div align="justify">SQL Server, Analysis Services, Integration Services, preciso de uma licença para cada um?</div>
</li>
<li>
<div align="justify">SQL Server com Cluster, Mirror e Log Shipping, o que preciso licenciar?</div>
</li>
<li>
<div align="justify">SQL Server virtualizado e ambientes híbridos: Virtualizado + não-virtualizado.</div>
</li>
<li>
<div align="justify">SQL Azure – Espaço, transferência? Como funciona e quanto custa?</div>
</li>
</ul>
<p align="justify">A ideia dos posts é não é entrar na precificação (com excessão do SQL Azure), pois há várias modalidades contratuais e esses aspectos de contratos e programas de relacionamento com a Microsoft eu não irei abordar.</p>
<p align="justify"><em>Gostaria de um feedback de vocês que leem o blog (nos comentários) sobre esta sequência de posts. Isso é muito importante! Aceito sugestões!!</em></p>
<p align="justify">Abraços,    <br />Thiago Zavaschi</p>
]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2011/05/sql-server-e-sql-azure-licenciamento-billing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PowerPivot &#8211; DAX &#8211; Entendendo o contexto de execu&#231;&#227;o</title>
		<link>http://zavaschi.com/index.php/2011/05/powerpivot-dax-entendendo-o-contexto-de-execuo/</link>
		<comments>http://zavaschi.com/index.php/2011/05/powerpivot-dax-entendendo-o-contexto-de-execuo/#comments</comments>
		<pubDate>Mon, 16 May 2011 21:36:38 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[DAX]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[PowerPivot for Excel]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2011/05/powerpivot-dax-entendendo-o-contexto-de-execuo/</guid>
		<description><![CDATA[Olá a todos!
Hoje continuo com o tema DAX.
Introdução ao Contexto de Execução
Antes de entrar nas especificidades de cada função, conforme anunciei no meu último post que o faria, é importante frisar que o resultado obtido é sempre baseado no contexto atual. O contexto pode vir da tabela que você está trabalhando (novas colunas ao modelo) [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá a todos!</p>
<p align="justify">Hoje continuo com o tema DAX.</p>
<p align="justify"><strong>Introdução ao Contexto de Execução</strong></p>
<p align="justify">Antes de entrar nas especificidades de cada função, conforme anunciei no meu último post que o faria, é importante frisar que o resultado obtido é sempre baseado no contexto atual. O contexto pode vir da tabela que você está trabalhando (novas colunas ao modelo) ou ao conjunto tratado pela measure. </p>
<p align="justify"><em>E o que pode afetar/criar esse contexto?</em></p>
<p align="justify">Basicamente o contexto vem dos filtros aplicados (filtros nas funções ou slicers). Isso afeta o resultado esperado, por exemplo ao utilizar um slicer (segmentador de dados) temos uma redução de contexto. </p>
<p align="justify">Quando estamos trabalhando com valores relativos, por exemplo, considere o seguinte conjunto de dados e a seguinte DAX:</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/05/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 2px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/05/image_thumb.png" width="210" height="156" /></a></p>
<p align="justify"><em>=SUM(Tabela[Categoria])</em></p>
<p align="justify">Temos um resultado semelhante a: </p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/05/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 2px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/05/image_thumb1.png" width="401" height="96" /></a></p>
<p align="justify">Neste momento estamos trabalhando com o conjunto total dos dados, mas ao marcar um slicer, por exemplo “Rock”, temos o filtro sobre o conjunto usado:</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/05/image2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/05/image_thumb2.png" width="210" height="156" /></a></p>
<p align="justify">&#160;<a href="http://zavaschi.com/wp-content/uploads/2011/05/image3.png"><img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 2px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/05/image_thumb3.png" width="409" height="83" /></a></p>
<p align="justify"><em>Ok, Thiago até aí ok, mas em que cenários que devo me atentar quanto a isso? Por exemplo, e se você possuir uma expressão DAX para calcular uma média, onde o denominador seja o somatório total das vendas ?</em></p>
<p align="justify">Algo como:</p>
<p align="justify">Vendas / Todas as vendas independente de categoria ?</p>
<p align="justify">Você poderia pensar em algo como <em>=SUM(Tabela[Categoria])/SUM(Tabela[Categoria])</em>, e manter a divisao por categorias, mas a conta não faria sentido, pois tanto o numerador quanto o denominador resultariam em um valor flutuante de acordo com o contexto.</p>
<p align="justify"><em>Como resolver então?</em></p>
<p align="justify">Existem três funções que podem ajudar que são: CALCULATE(), ALL() e ALLExcept().</p>
<p align="justify">O CALCULATE serve para manipular o contexto, e o ALL e ALLExcept servem para retornar regiões dos dados de forma invariável ao contexto dos slicers (ALL) e podendo ter excessões (ALLExcept).</p>
<p align="justify">Na prática ficaria algo como:</p>
<p align="justify">=SUM(Tabela[Valor])/CALCULATE(SUM(Tabela[Valor]),ALL(Tabela))</p>
<p align="justify">Assim, mesmo aplicando um slicer, o resultado da medida (measure) para aquela categoria é baseado no valor total(denominador) e não mais no contexto dos slicers, veja:</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/05/image4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 2px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/05/image_thumb5.png" width="419" height="84" /></a></p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/05/image5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 2px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/05/image_thumb6.png" width="415" height="71" /></a></p>
<p align="justify">Por hoje é só pessoal! :)</p>
<p align="justify"><em>Este artigo é parte de uma série de artigos sobre PowerPivot e DAX. Confira os outros artigos sobre PowerPivot no link: </em><a href="http://zavaschi.com/index.php/tag/powerpivot/"><em>http://zavaschi.com/index.php/tag/powerpivot/</em></a></p>
<p align="justify">Abraços!   <br />Thiago Zavaschi</p>
]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2011/05/powerpivot-dax-entendendo-o-contexto-de-execuo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PowerPivot &#8211; DAX &#8211; Time Intelligence Functions</title>
		<link>http://zavaschi.com/index.php/2011/05/powerpivot-dax-time-intelligence-functions/</link>
		<comments>http://zavaschi.com/index.php/2011/05/powerpivot-dax-time-intelligence-functions/#comments</comments>
		<pubDate>Mon, 09 May 2011 17:55:20 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[Business Intelligence; DAX]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[PowerPivot for Excel]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2011/05/powerpivot-dax-time-intelligence-functions/</guid>
		<description><![CDATA[Olá pessoal beleza? Estou tentando retomar o ritmo dos posts!
Se vocês analisarem a sequência de posts sobre Business Intelligence (http://zavaschi.com/index.php/business-intelligence/) vocês vão perceber que estou dando um foco grande em DAX. O motivo é claro: com a chegada do SQL Server 11 (Denali) também chega um novo modelo para as bases multidimensionais do Analysis Services [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Olá pessoal beleza? Estou tentando retomar o ritmo dos posts!</p>
<p align="justify">Se vocês analisarem a sequência de posts sobre Business Intelligence (<a title="http://zavaschi.com/index.php/business-intelligence/" href="http://zavaschi.com/index.php/business-intelligence/">http://zavaschi.com/index.php/business-intelligence/</a>) vocês vão perceber que estou dando um foco grande em DAX. O motivo é claro: com a chegada do SQL Server 11 (Denali) também chega um novo modelo para as bases multidimensionais do Analysis Services conhecido como BISM (BI Semantic Model).</p>
<p align="justify">Através do Visual Studio 2010 será possível criar modelos do BISM (da mesma forma que criamos os modelos do PowerPivot dentro do Excel) e fazer o deploy para o servidor do SSAS.</p>
<p align="justify">Uma das grandes diferenças é que a manipulação do modelo BISM será feita usando DAX (e não MDX), sim a mesma DAX que temos hoje no PowerPivot Excel, acrescida de uma série de novas funções e capacidades. </p>
<p align="justify">Temos 35 funções nesta categoria na versão atual, é possível que esse número aumente quando possuirmos os modelos BISM (e podemos subdividir em 3 sub categorias):</p>
<ol>
<li>
<div align="justify"><strong><font color="#ff0000">Funções que retornam uma data</font></strong></div>
</li>
<li>
<div align="justify"><strong><font color="#0000ff">Funções que retornam uma tabela de datas</font></strong></div>
</li>
<li>
<div align="justify"><strong>Funções que resolvem uma expressão sobre um período de tempo</strong></div>
</li>
</ol>
<p align="justify"><strong></strong></p>
<table border="0" cellspacing="0" cellpadding="0" width="560">
<tbody>
<tr>
<td valign="top" width="162">
<p><font color="#ff0000">FIRSTDATE </font></p>
</td>
<td valign="top" width="138">
<p><font color="#ff0000">LASTDATE </font></p>
</td>
<td valign="top" width="129">
<p><font color="#ff0000">FIRSTNONBLANK </font></p>
</td>
<td valign="top" width="129">
<p><font color="#ff0000">LASTNONBLANK </font></p>
</td>
</tr>
<tr>
<td valign="top" width="162">
<p><font color="#ff0000">STARTOFMONTH </font></p>
</td>
<td valign="top" width="138">
<p><font color="#ff0000">STARTOFQUARTER </font></p>
</td>
<td valign="top" width="129">
<p><font color="#ff0000">STARTOFYEAR </font></p>
</td>
<td valign="top" width="129">
<p><font color="#ff0000">ENDOFMONTH </font></p>
</td>
</tr>
<tr>
<td valign="top" width="162">
<p><font color="#ff0000">ENDOFQUARTER </font></p>
</td>
<td valign="top" width="138">
<p><font color="#ff0000">ENDOFYEAR </font></p>
</td>
<td valign="top" width="129">
<p><font color="#0000ff">PREVIOUSDAY </font></p>
</td>
<td valign="top" width="129">
<p><font color="#0000ff">PREVIOUSMONTH </font></p>
</td>
</tr>
<tr>
<td valign="top" width="162">
<p><font color="#0000ff">PREVIOUSQUARTER</font></p>
</td>
<td valign="top" width="138">
<p><font color="#0000ff">PREVIOUSYEAR </font></p>
</td>
<td valign="top" width="129">
<p><font color="#0000ff">NEXTDAY </font></p>
</td>
<td valign="top" width="129">
<p><font color="#0000ff">NEXTMONTH </font></p>
</td>
</tr>
<tr>
<td valign="top" width="162">
<p><font color="#0000ff">NEXTQUARTER </font></p>
</td>
<td valign="top" width="138">
<p><font color="#0000ff">NEXTYEAR</font></p>
</td>
<td valign="top" width="129">
<p><font color="#0000ff">DATESMTD </font></p>
</td>
<td valign="top" width="129">
<p><font color="#0000ff">DATESQTD </font></p>
</td>
</tr>
<tr>
<td valign="top" width="162">
<p><font color="#0000ff">SAMEPERIODLASTYEAR </font></p>
</td>
<td valign="top" width="138">
<p><font color="#0000ff">DATEADD </font></p>
</td>
<td valign="top" width="129">
<p><font color="#0000ff">DATESBETWEEN </font></p>
</td>
<td valign="top" width="129">
<p><font color="#0000ff">DATESINPERIOD</font></p>
</td>
</tr>
<tr>
<td valign="top" width="162">
<p><font color="#0000ff">PARALLELPERIOD </font></p>
</td>
<td valign="top" width="138">
<p><font color="#0000ff">DATESYTD</font></p>
</td>
<td valign="top" width="129">
<p>TOTALQTD </p>
</td>
<td valign="top" width="129">
<p>TOTALYTD </p>
</td>
</tr>
<tr>
<td valign="top" width="162">
<p>TOTALMTD</p>
</td>
<td valign="top" width="138">
<p>OPENINGBALANCE            <br />QUARTER </p>
</td>
<td valign="top" width="129">
<p>OPENINGBALANCE            <br />YEAR </p>
</td>
<td valign="top" width="129">
<p>OPENINGBALANCE            <br />MONTH</p>
</td>
</tr>
<tr>
<td valign="top" width="162">
<p>CLOSINGBALANCE            <br />MONTH </p>
</td>
<td valign="top" width="138">
<p>CLOSINGBALANCE            <br />QUARTER </p>
</td>
<td valign="top" width="129">
<p>CLOSINGBALANCE            <br />YEAR </p>
</td>
<td valign="top" width="129">&nbsp;</td>
</tr>
</tbody>
</table>
<p>Os próximos posts sobre DAX serão sobre cada um destes 3 grupos!</p>
<p><em>Este artigo é parte de uma série de artigos sobre PowerPivot e DAX. Confira os outros artigos sobre PowerPivot no link: </em><a href="http://zavaschi.com/index.php/tag/powerpivot/"><em>http://zavaschi.com/index.php/tag/powerpivot/</em></a></p>
<p>Abraços,    <br />Thiago Zavaschi</p>
]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2011/05/powerpivot-dax-time-intelligence-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Permiss&#227;o para ver a estrutura, mas sem os dados!</title>
		<link>http://zavaschi.com/index.php/2011/01/permisso-para-ver-a-estrutura-mas-sem-os-dados/</link>
		<comments>http://zavaschi.com/index.php/2011/01/permisso-para-ver-a-estrutura-mas-sem-os-dados/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 17:59:48 +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[Segurança]]></category>
		<category><![CDATA[DENY]]></category>
		<category><![CDATA[GRANT]]></category>
		<category><![CDATA[Permissão]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2011/01/permisso-para-ver-a-estrutura-mas-sem-os-dados/</guid>
		<description><![CDATA[Recentemente o Carlos Barini (http://twitter.com/cabarini) me perguntou se era possível liberar para um user ver a estrutura de uma tabela, mas não ter a permissão de leitura na tabela.
É possível sim, claro que a configuração do permissionamento pode ser adaptado para cada caso. No exemplo aqui vou concentrar nesse caso perguntado.
Vamos criar um login e [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Recentemente o Carlos Barini (<a href="http://twitter.com/cabarini">http://twitter.com/cabarini</a>) me perguntou se era possível liberar para um user ver a estrutura de uma tabela, mas não ter a permissão de leitura na tabela.</p>
<p align="justify">É possível sim, claro que a configuração do permissionamento pode ser adaptado para cada caso. No exemplo aqui vou concentrar nesse caso perguntado.</p>
<p align="justify">Vamos criar um login e um user na database “demo”.</p>
<p align="justify"><font face="Courier New">USE [master]     <br />GO      <br />CREATE LOGIN [usuario] WITH PASSWORD=N'123', DEFAULT_DATABASE=[demo], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF      <br />GO      <br />USE [demo]      <br />GO      <br />CREATE USER [usuario] FOR LOGIN [usuario]      <br />GO</font></p>
<p align="justify">Vamos usar a mesma tabela de empregados que usamos no <a href="http://zavaschi.com/index.php/2011/01/auditoria-no-sql-server-sql-audit" target="_blank">artigo anterior</a>. </p>
<p align="justify">O usuário “usuario” tem permissão de select na tabela. O que podemos fazer é simplesmente:</p>
<p align="justify">1) Remover a permissão de select no objeto.</p>
<p align="justify">2) GRANT na permissão de VIEW DEFINITION:</p>
<p align="justify"><font face="Courier New">DENY SELECT ON [dbo].[Empregado] TO [usuario]</font></p>
<p align="justify"><font face="Courier New">GRANT VIEW DEFINITION ON [dbo].[Empregado] TO [usuario]     <br /></font></p>
<p align="justify">E teremos ao executar o select:</p>
<p align="justify"><font color="#ff0000" face="Courier New">Msg 229, Level 14, State 5, Line 1     <br />The SELECT permission was denied on the object 'Empregado', database 'demo', schema 'dbo'.</font></p>
<p align="justify">Mas ao tentar ver a estrutura:</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/01/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 2px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/01/image_thumb1.png" width="330" height="262" /></a></p>
<p align="justify">Espero que te ajude Carlos!</p>
<p align="justify">Grande abraço,   <br />Thiago Zavaschi</p>
]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2011/01/permisso-para-ver-a-estrutura-mas-sem-os-dados/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Auditoria no SQL Server &#8211; SQL Audit</title>
		<link>http://zavaschi.com/index.php/2011/01/auditoria-no-sql-server-sql-audit/</link>
		<comments>http://zavaschi.com/index.php/2011/01/auditoria-no-sql-server-sql-audit/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 20:22:20 +0000</pubDate>
		<dc:creator>Thiago Zavaschi</dc:creator>
				<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[Audit]]></category>
		<category><![CDATA[SQL Server Audit]]></category>

		<guid isPermaLink="false">http://zavaschi.com/index.php/2011/01/auditoria-no-sql-server-sql-audit/</guid>
		<description><![CDATA[Olá a todos!
No último artigo vimos o que, na minha opinião, é o carro chefe do SQL Server 2008 (“new” feature), o Resource Governor. Mas não é só isso!
Hoje vamos ver sobre auditoria! :)
Há diferentes formas de se fazer auditoria no SQL Server: triggers, CDC, Audit, entre outras.
O que veremos hoje é o audit e [...]]]></description>
			<content:encoded><![CDATA[<p>Olá a todos!</p>
<p align="justify">No <a href="http://zavaschi.com/index.php/2011/01/sql-server-resource-governor/" target="_blank">último artigo</a> vimos o que, na minha opinião, é o carro chefe do SQL Server 2008 (“new” feature), o Resource Governor. Mas não é só isso!</p>
<p align="justify">Hoje vamos ver sobre auditoria! :)</p>
<p align="justify">Há diferentes formas de se fazer auditoria no SQL Server: triggers, CDC, Audit, entre outras.</p>
<p align="justify">O que veremos hoje é o audit e serve (não só) para responder dúvidas como:</p>
<p align="justify"><em>“Tenho uma aplicação de recursos humanos e que possui uma tabela com o salário dos funcionários, tem como eu saber os usuários que executaram um comando de select sobre essa tabela?” </em>(sim é possível, além de ser menos custoso do que rodar um profiler contra a base e ainda filtrando sobre a tabela desejada (parse de texto)).</p>
<p align="justify">Para efeito de simplicidade imagine que o seu cenário tenha a seguinte tabela:</p>
<p align="justify"><a href="http://zavaschi.com/wp-content/uploads/2011/01/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://zavaschi.com/wp-content/uploads/2011/01/image_thumb.png" width="174" height="99" /></a></p>
<p>O script para criação da tabela:</p>
<p><em><font face="Courier New">CREATE TABLE Empregado       <br />( idEmpregado INT IDENTITY PRIMARY KEY,        <br />nome VARCHAR(100) NOT NULL,        <br />valor MONEY NOT NULL)        <br />GO        <br /></font></em></p>
<p align="justify">O log de auditoria pode ir para três destinos distintos: arquivo, security log e application log (do servidor onde o SQL Server roda).</p>
<p align="justify">O primeiro passo é criar um Audit:</p>
<blockquote><p align="justify">Pelo Management Studio: (Security &gt; Audits &gt; New Audit) </p>
<p align="justify">Ou através de scripts.</p>
</blockquote>
<p align="justify">Para cada destino escolhido há configurações específicas. Segue o script para criar o Audit para arquivo:</p>
<p><em><font face="Courier New">USE [master]       <br />GO        <br />CREATE SERVER AUDIT [AuditoriaSalario]        <br />TO FILE         <br />(&#160;&#160;&#160; FILEPATH = N'C:\Temp'        <br />&#160;&#160;&#160; ,MAXSIZE = 0 MB        <br />&#160;&#160;&#160; ,MAX_ROLLOVER_FILES = 2147483647        <br />&#160;&#160;&#160; ,RESERVE_DISK_SPACE = OFF        <br />)        <br />WITH        <br />(&#160;&#160;&#160; QUEUE_DELAY = 1000        <br />&#160;&#160;&#160; ,ON_FAILURE = CONTINUE        <br />)</font></em></p>
<p align="justify"><font face="Courier New">Após isso você</font> precisa criar uma especificação da auditoria (Audit Specification) que pode ser Server Audit Specification (Security &gt; Server Audit Specifications &gt; New Server Audit Specification…) ou Database Audit Specification (DatabaseName &gt; Security &gt; Database Audit Specification), que mapeiam efetivamente os objetos (ou servidores) sendo monitorados e conecta a um Audit (que nada mais é que a configuração do local aonde estarão os dados da auditoria).</p>
<p align="justify">Existem MUITOS tipos de ações de auditoria (Audit Action Type). No nosso exemplo (para responder ao questionamento inicial) vamos utilizar Database Audit Specification (pois o objeto a ser monitorado é uma tabela de uma base de dados específica).</p>
<p align="justify">O comando abaixo cria a especificação (public que é o role sendo monitorado):</p>
<p><em><font face="Courier New">CREATE DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-Salario]       <br />FOR SERVER AUDIT [AuditoriaSalario]        <br />ADD (SELECT ON OBJECT::[dbo].[Empregado] BY [public])</font></em></p>
<p>Depois disso temos que ativar a auditoria:</p>
<p><em><font face="Courier New">USE [master]       <br />GO</font></em></p>
<p><em><font face="Courier New">ALTER SERVER AUDIT AuditoriaSalario       <br />WITH (STATE = ON);        <br />GO</font></em></p>
<p><em><font face="Courier New">USE [demo]       <br />GO</font></em></p>
<p><em><font face="Courier New">ALTER DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-Salario]       <br />WITH (STATE = ON)        <br />GO</font></em></p>
<p>Beleza.. Auditoria “de pé”! Vamos inserir alguns dados na tabela de Empregado (sintaxe SQL2008+):</p>
<p><em><font face="Courier New">INSERT INTO [demo].[dbo].[Empregado]       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ([nome],[valor])        <br />&#160;&#160;&#160;&#160; VALUES        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ('Thiago', 15000),        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ('Joao', 1000),        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ('Pedro', 7500)        <br />GO</font></em></p>
<p>E na sequência vamos fazer um select para descobrir o meu salário:</p>
<p><em><font face="Courier New">SELECT 'Valor do Salário: ' + CONVERT(VARCHAR,valor) FROM Empregado WHERE nome = 'Thiago' </font></em></p>
<p>Se tudo foi configurado corretamente, devemos ter no arquivo essa informação logada.</p>
<p>O arquivo não é plain text, para ler basta executar o seguinte comando:</p>
<p><font face="Courier New">SELECT * FROM sys.fn_get_audit_file (N'C:\Temp\*',default,default);</font></p>
<p>E lá estão os selects que executei. Para facilitar, uma visão resumida:</p>
<p><em><font face="Courier New">SELECT        <br />event_time 'horario',         <br />database_name + '.' + schema_name + '.' + object_name 'objeto',         <br />statement,         <br />server_principal_name 'login',         <br />session_server_principal_name 'user'        <br />FROM sys.fn_get_audit_file (N'C:\Temp\*',default,default)        <br />WHERE action_id = 'SL';</font></em></p>
<p>Que retorna (no meu caso):</p>
<p><em><font face="Courier New">Horario: 2011-01-19 20:04:37.0349242&#160;&#160;&#160; <br />Objeto: demo.dbo.Empregado&#160;&#160;&#160; <br />Statement: SELECT 'Valor do Salário: ' + CONVERT(VARCHAR,valor) FROM Empregado WHERE nome = 'Thiago'&#160;&#160;&#160;&#160;&#160;&#160; <br />Login: SOUTHAMERICA\v-thzava&#160;&#160;&#160; <br />User: SOUTHAMERICA\v-thzava</font></em></p>
<p align="justify">E relembrando que isso pode ser enviado ao security log ou app log (onde até mesmo um sysadmin do banco pode não ter acesso <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://zavaschi.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" />).</p>
<p align="justify">É isso pessoal, espero que tenham gostado!</p>
<p align="justify">Em caso de dúvidas entrem em contato!</p>
<p>Abraços,   <br />Thiago Zavaschi</p>
]]></content:encoded>
			<wfw:commentRss>http://zavaschi.com/index.php/2011/01/auditoria-no-sql-server-sql-audit/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

