Thiago Zavaschi R2 www.zavaschi.com

29Nov/090

Novidades do SQL Server 2008 R2 – Parte II – PowerPivot – Conceitos

Então pessoal, continuado a série de posts sobre as novidades do SQL Server 2008 R2 temos o PowerPivot (anteriormente conhecido como projeto “Gemini”)!

O post de hoje é dedicado a alguns conceitos importantes que devemos conhecer para facilitar o trabalho com este novo recurso. A fonte prioritária das informações é o Books Online do CTP de Novembro do SQL Server 2008 R2.

O principal conceito por trás do PowerPivot é o self-service BI, ou seja, “BI feito por você mesmo”, parece difícil? Vou provar que não!

Como disse, hoje veremos os conceitos relacionados (a grande maioria deles não irei arricar uma tradução, pois poderia soar incorreto), segue então a lista:

Power Pivot workbook and PowerPivot Data

Um PowerPivot workbook é um arquivo de workbook do Microsoft Excel 2010 (.xlsx) que contém os dados do PowerPivot. Os dados do PowerPivot é uma fonte de dados (datasource) do Analysis Services que é criado através do Microsoft SQL Server PowerPivot for Excel. O PowerPivot for Excel é um add-in que extende as capacidades do Excel permitindo assim trabalhar com grandes quantidades de dados e com dados multidimensionais. O plugin também traz uma nova janela ao Excel, onde as funcionalidades extras são inclusas.

Estes workbooks do Excel podem juntar dados de diferentes fontes (arquivos de textos, bases de dados do Microfot Access, Relatórios do Reporting Services, Web Services, entre outros).

A camada de apresentação (front-end) fornecida pelo PowerPivot é o próprio Excel, mas com algumas formas novas de mostrar e analizar os dados: PivotTables, PivotCharts, Slicers e etc. (você conhecerá mais sobre estes elementos nos próximos posts).

PowerPivot for Sharepoint

O PowerPivot para Sharepoint (versão 2010) é a integração do Microsoft Sharepoint Server 2010 com o mesmo. É uma feature do SQL Server 2008 R2, e é necessário caso você quira visualizar os dados no SharePoint. Lembrando que é possível fazer deploy dos seus dados PowerPivot para o Sharepoint e os mesmos permanecem no documento postado no Sharepoint. O PowerPivot para SharePoin 2010 compõe: serviços, infraestrutura, dashboards, web parts, templates de bibliotecas, entre outros.

VertiPaq

O SQL Server 2008 R2 apresenta a primeira versão do modo VertiPaq para Analysis Services. No release de novembro, o VertiPaq está disponível apenas no PowerPivot for Sharepoint, nas instâncias do Analysis Services que estão instaladas com o serviço do PowerPivot no servidor de Sharepoint.

Mas o que é o VertiPaq? O VertiPaq é um armazenador de dados em memória que permite o rápido processamento de quantidades muito grandes de dados. O alto desempenho também é acompanhado de compressão de dados.

PowerPivot System Service

O PowerPivot System Service é a infraestrutura do SharePoint para o Analysis Services em farm. As operações relacionadas incluem: ficar escutando solicitações dos dados do PowerPivot (listener), estabelecer as conexões para as solicitações dos dados do PowerPivot na farm, estabelecer conexões às instâncias do Analysis Services que “carregam” e “descarregam” os dados do PowerPivot nos servidores do SharePoint, coletar dados de uso, e monitorar a “saúde” e disponibilidade das instâncias do Analysis Services na farm.

O PowerPivot System Service é instalado através  do PowerPivot for SharePoint. É instalado juntamente com uma instância do Analysis Services. E está disponível através de um ou mais serviços que você define.

PowerPivot Service Application

Define uma instância configurável e independente do PowerPivot System Service. Roda no contexto de segurança do uma aplicação web no SharePoint. Seu objetivo é permitir configurações independentes do mesmo serviço físico. Isso permite você isolar dados de serviço da aplicação e as várias configurações para diferentes aplicações web no SharePoint que consomem os mesmos recursos.

PowerPivot Application Database

É uma base de dados interna que armazena dados de configuração, informações de conexões, estado do servidor, e agenda informação para operações de atualização de dados. Cada PowerPivot service application uma uma base de dados dedicada para armazenar seus dados.

PowerPivot Web Service and PowerPivot Managed Extension

O PowerPivot web service é uma fina camada intermediária de um gerenciador de conexões que roda com um frontend web. Coordena as trocas entre as aplicações clientes e as instâncias do PowerPivot for SharePoint na farm.

O PowerPivot managed extension é um assembly na biblioteca cliente do provider OLE DB (Analysis Services) que é instalado nas estações de trabalho através do PowerPivot for Excel, e nos servidores de aplicação quando você instala o PowerPivot for SharePoint. Em relação às conexões gerenciadas, ambos possuem as mesmas funções e características.

Self-service Business Inteligence

Serf-service BI é o fato de usar as ferramentas analíticas no Microsoft Excel 2010 e a capacidade de criação de um site e gerência de documentos no SharePoint que possibilite aos analistas de negócio criar e compartilhar as solu;cões de Business Inteligence.

--

Bom pessoal, essa foi uma tradução (e pequena adaptação) livre dos conceitos que temos relacionados ao PwerPivot disponível no Books Online até o presente momento.

Não podemos continuar nossa série sobre PowerPivot sem antes entendermos todos os conceitos por trás do mesmo.

No próximo post sobre PowerPivot trarei o passo-a-passo necessário para a intalação do PowerPivot for Excel! Aguardem!

Espero que tenham gostado. Grande abraço,
Thiago Zavaschi

24Nov/092

Repostagem – Ranking e Windowing

 

Essa repostagem eu não colocarei com data anterior, há muitos leitores que não conhecem esse recurso direito, mesmo estando presente desde o SQL Server 2005. Enjoy!

Utilizando Funções de Rank e Windowing

Hoje não vou falar de um recurso novo do SQL Server 2008, porém é bastante interessante e acredito que valha a pena um pequeno artigo sobre (principalmente em português já que não achei muita coisa em português).

As quatro funções T-SQL que vou me ater são: ROW_NUMBER(), RANK(), DENSE_RANK() e NTILE().
A base que utilizarei nos exemplos é a amplamente conhecida Northwind, que pode ser baixada gratuitamente do site da microsoft, mas para poupar o trabalho dos leitores e/ou possíveis mudanças no link, coloquei no meu SkyDrive: aqui.
Vamos começar dando uma pequena olhada nos dados.
Usamos a seguinte query SQL (limitada a 15 resultados e ordenados pelo preço unitário, do maior para o menor):

SELECT TOP 15 ProductID, ProductName, UnitPrice FROM Products ORDER BY UnitPrice DESC

Lembro que é uma boa prática utilizar os comandos SQL em caixa alta (todas as letras em maiúsculas).
Teremos o seguinte resultado:

ProductID   ProductName                              UnitPrice
----------- ---------------------------------------- ----------
38          Côte de Blaye                            263.50
29          Thüringer Rostbratwurst                  123.79
9           Mishi Kobe Niku                          97.00
20          Sir Rodney's Marmalade                   81.00
18          Carnarvon Tigers                         62.50
59          Raclette Courdavault                     55.00
51          Manjimup Dried Apples                    53.00
62          Tarte au sucre                           49.30
43          Ipoh Coffee                              46.00
28          Rössle Sauerkraut                        45.60
27          Schoggi Schokolade                       43.90
63          Vegie-spread                             43.90
8           Northwoods Cranberry Sauce               40.00
17          Alice Mutton                             39.00
12          Queso Manchego La Pastora                38.00

ROW_NUMBER():
O ROW_NUMBER é a função de ranking mais simples existente. Consiste de atribuir o valor de ranking igual a 1 para o primeiro registro (de acordo com o OVER, ver exemplo a seguir para facilitar), e para cada registro subsequente. Vejam o exemplo a seguir utilizando o ROW_NUMBER(). Percebam também que devido ao ORDER BY do OVER não é mais necessário usá-lo após o WHERE como na query anterior.

SELECT TOP 15 ProductID, ProductName, UnitPrice, ROW_NUMBER() OVER (ORDER BY UnitPrice DESC) AS ROW_COUNT FROM Products

Teremos o seguinte resultado:

ProductID   ProductName              UnitPrice   ROW_NUMBER
----------- ------------------------ --------    -----------
38          Côte de Blaye             263.50          1
29          Thüringer Rostbratwurst   123.79          2
9           Mishi Kobe Niku           97.00           3
20          Sir Rodney's Marmalade    81.00           4
18          Carnarvon Tigers          62.50           5
59          Raclette Courdavault      55.00           6
51          Manjimup Dried Apples     53.00           7
62          Tarte au sucre            49.30           8
43          Ipoh Coffee               46.00           9
28          Rössle Sauerkraut         45.60          10
27          Schoggi Schokolade        43.90          11
63          Vegie-spread              43.90          12
8           Northwoods Cranberry Sauce40.00          13
17          Alice Mutton              39.00          14
12          Queso Manchego La Pastora 38.00          15

Bastante simples, como eu disse. Porém é bastante útil, eu particularmente a utilizo para fazer paginação nos casos em que ela é feita no banco de dados mesmo. Para tal basta adicionar ao final (por exemplo): WHERE ROW_NUMBER >= 10 AND ROW_NUMBER <= 21.

RANK():
Agora vamos utilizar a função RANK para ranquearmos os produtos do produto mais caro para o mais barato.
Com a função RANK podemos fazer isso, o comportamento do valor de ranking é o seguinte:
Caso haja empate, ambos recebem o mesmo valor de ranking. Só que o registro seguinte ao empate não é o número imediatamente subsequente, mas sim o numero de rank do empate acrescido do numero de registros empatados.

SELECT TOP 15 ProductID, ProductName, UnitPrice, RANK() OVER (ORDER BY UnitPrice ASC) AS RANK FROM Products

Dado o fato de que não há repetição de preços no exemplo inicial, então estou trocando da ordenação do decrescente pata a crescente (ao invés de DESC estou utilizando ASC).

ProductID   ProductName                     UnitPrice    RANK
----------- -----------------------         --------    ---------
33          Geitost                         2.50            1
24          Guaraná Fantástica              4.50            2
13          Konbu                           6.00            3
52          Filo Mix                        7.00            4
54          Tourtière                       7.45            5
75          Rhönbräu Klosterbier            7.75            6
23          Tunnbröd                        9.00            7
19          Teatime Chocolate Biscuits      9.20            8
47          Zaanse koeken                   9.50            9
45          Rogede sild                     9.50            9
41          Jack's New England Clam Chowder 9.65           11
21          Sir Rodney's Scones             10.00          12
3           Aniseed Syrup                   10.00          12
74          Longlife Tofu                   10.00          12
46          Spegesild                       12.00          15

O RANK trabalhou de modo semelhante ao ROW_NUMBER, mas no caso em que houveram registros com igual preço unitário (UnitPrice, utilizado no OVER) ele tratou com a mesma 'pontuação'. Para os correligionários do futebol, é algo semelhante às posições dos times nas tabelas de campeonatos, e etc.

Mas e se eu desejar que (segundo o exemplo acima) após o "rank 9" que foi repetido fosse o número 10 e não o 11? Para tal temos o:

DENSE_RANK():
O comportamento do é o mesmo do RANK(), o que muda é que não há "pulos", ou seja, se uma tupla retornada contém o rank de número 37, podemos garantir que todos os número do intervalo [1, 36] já apareceram.
A query para o nosso exemplo a seguir é a seguinte:

SELECT TOP 15 ProductID, ProductName, UnitPrice, DENSE_RANK() OVER (ORDER BY UnitPrice ASC) AS DENSE_RANK FROM Products

E a sua execução sobre a base Northwind resulta em:

ProductID   ProductName                     UnitPrice   DENSE_RANK
----------- -------------------------------- ---------- ---------
33          Geitost                           2.50      1
24          Guaraná Fantástica                4.50      2
13          Konbu                             6.00      3
52          Filo Mix                          7.00      4
54          Tourtière                         7.45      5
75          Rhönbräu Klosterbier              7.75      6
23          Tunnbröd                          9.00      7
19          Teatime Chocolate Biscuits        9.20      8
47          Zaanse koeken                     9.50      9
45          Rogede sild                       9.50      9
41          Jack's New England Clam Chowder   9.65      10
21          Sir Rodney's Scones               10.00     11
3           Aniseed Syrup                     10.00     11
74          Longlife Tofu                     10.00     11
46          Spegesild                         12.00     12

Conforme havia dito, após uma repetição (registros com ProductID 47 e 45, por exemplo), no caso do número 9, temos na sequência o número 10, e não o 11 como no RANK(). O último valor do DENSE_RANK é 12, então também sabemos que todos os números de 1 a 11 já apareceram (com ou sem repetição).

NTILE():
Ao contrário das outras funções que apresentei o valor para este rankeamento não é baseado no valor, mas sim na quantidade de registros. Se temos 12 registros e utilizamos um NTILE(N) (onde o N é um número natural), o SQL tenta agrupar as tuplas de retorno naquele número passado como paramêtro, atribuindo valores iguais para os elementos do mesmo grupo. Um exemplo prático pode ser obtido com a seguinte query SQL:

SELECT ProductID, ProductName, UnitPrice, NTILE(3) OVER (ORDER BY ProductID ASC) AS NTILE FROM Products WHERE ProductID <= 15

A query acima pode fazer você indagar: "Ué Zavaschi, porque você não utilizou o TOP 15 como já havia feito para os demais exemplos?".

Uma rápida explicação:
A questão é que o TOP é algo como um "truncador" de retornos. Uma query que originalmente retornaria 100 linhas de registros, ao executar um TOP 15, dizemos que queremos apenas as 15 primeiras, no entanto o SQL internamente trabalhou com as 100 linhas.
Ao eu executar um NTILE() e aplicar um TOP 15, o NTILE foi aplicado sobre toda a coleção e após isto eu recuperaria os 15 primeiros registros. Devido a tal comportamento, não seria possível mostrar o agrupamento que o NTILE faz, já que muito possivelmente todos os primeiros 15 registros estivessem no mesmo grupo (recebendo 1 como valor).

Como retorno a query apresentada temos a seguinte saída:

ProductID   ProductName                       UnitPrice  NTILE (3)
----------- --------------------------------- ---------- ----------
1           Chai                              18.00      1
2           Chang                             19.00      1
3           Aniseed Syrup                     10.00      1
4           Chef Anton's Cajun Seasoning      22.00      1
5           Chef Anton's Gumbo Mix            21.35      1
6           Grandma's Boysenberry Spread      25.00      2
7           Uncle Bob's Organic Dried Pears   30.00      2
8           Northwoods Cranberry Sauce        40.00      2
9           Mishi Kobe Niku                   97.00      2
10          Ikura                             31.00      2
11          Queso Cabrales                    21.00      3
12          Queso Manchego La Pastora         38.00      3
13          Konbu                             6.00       3
14          Tofu                              23.25      3
15          Genen Shouyu                      15.50      3

Gostaria que reparassem também que apesar do OVER, o resultado do NTILE() é baseado principalmente no número de resultados, caso não seja possível uma divisão exata, o SQL Server tentará agrupar da melhor maneira possível, fazendo que alguns conjuntos possuam um número de elementos maior que outros.
Alterando um poquinho a query para recuperarmos um registro a mais, mas mantendo o mesmo número de divisões:

SELECT ProductID, ProductName, UnitPrice, NTILE(3) OVER (ORDER BY ProductID ASC) AS NTILE FROM Products WHERE ProductID <= 16

Nos leva ao seguinte resultado, onde o grupo dos "1" possui um elemento a mais (6 elementos) do que o grupo dos "2" e "3" (5 elementos cada):

ProductID   ProductName                       UnitPrice NTILE (3)
----------- --------------------------------- --------- ----------
1           Chai                              18.00     1
2           Chang                             19.00     1
3           Aniseed Syrup                     10.00     1
4           Chef Anton's Cajun Seasoning      22.00     1
5           Chef Anton's Gumbo Mix            21.35     1
6           Grandma's Boysenberry Spread      25.00     1
7           Uncle Bob's Organic Dried Pears   30.00     2
8           Northwoods Cranberry Sauce        40.00     2
9           Mishi Kobe Niku                   97.00     2
10          Ikura                             31.00     2
11          Queso Cabrales                    21.00     2
12          Queso Manchego La Pastora         38.00     3
13          Konbu                             6.00      3
14          Tofu                              23.25     3
15          Genen Shouyu                      15.50     3
16          Pavlova                           17.45     3

"Zavaschi, gostei destas funções de ranking, mas esta última de NTILE me deu uma idéia... E se eu quiser aplicar (na mesma query) um ranking mas para grupos específicos dentre os resultados dessa query, é possível?"
Para tal utilizaremos o PARTITION BY.

PARTITION BY:
As funções de ranking pontem ser combinadas com funções de windowing (vou manter o termo em inglês, por questão de preferência). A função de windowing (janelamento ...) dividirá os registros retornados baseado no PARTITYON BY aliado à cláusula OVER utilizada na função de ranking. Com isso você obterá um ranking separado para cada partição. Vale lembrar que o PARTITION BY também pode ser usado com outras funções agragadoras, como MIN, MAX, etc.
Um exemplo disto pode ser visto a seguir (adaptando os exemplos anteriores para o seguinte exemplo):

SELECT ProductName, SupplierID, ROW_NUMBER() OVER (PARTITION BY SupplierID Order By SupplierID) AS PARTITIONBY FROM Products WHERE ProductID <= 15

Na query exemplo temos a aplicação da função de ranking ROW_NUMBER() sobre as partições geradas pelos registros onde cada Supplier é igual. Para facilitar a visualização estou ordenando também pelo SupplierID, mas não é necessário que o campo seja o mesmo.
A query exemplo nos retorna:

ProductName                              SupplierID  PARTITIONBY
---------------------------------------- ----------- ----------
Chai                                     1           1
Chang                                    1           2
Aniseed Syrup                            1           3
Chef Anton's Cajun Seasoning             2           1
Chef Anton's Gumbo Mix                   2           2
Grandma's Boysenberry Spread             3           1
Uncle Bob's Organic Dried Pears          3           2
Northwoods Cranberry Sauce               3           3
Mishi Kobe Niku                          4           1
Ikura                                    4           2
Queso Cabrales                           5           1
Queso Manchego La Pastora                5           2
Konbu                                    6           1
Tofu                                     6           2
Genen Shouyu                             6           3

No exemplo podemos ver que para janela (correspondida para os grupos onde os suppliers são iguais) temos a aplicação individual da nossa função de ranking.

---

Bom se você, leitor, chegou até aqui, parabéns! Além de mostrar que tem paciência em aguentar o que eu escrevi (hehe), ainda adquiriu um conhecimento bastante interessante sobre ranking no SQL Server.

Gostaria de reiterar que os exemplos são para fins didáticos e que quaisquer dúvidas e sugestões podem entrar em contato. :)

Abraços,
Thiago Zavaschi

22Nov/090

Nova Engine, Novo Layout, Blogueiro Velho :)

É isso pessoal, agora estou usando a engine do WordPress e estou bastante contente com o que estou vendo. O Spaces é muito precário para análise de acessos e gerência do blog como um todo.

Assinem o novo feed do blog!

http://feeds.feedburner.com/Zavaschi !

Em tempo:

No próximo post: SQL Server 2008 R2 - PowerPivot for Excel 2010!

Abraços a todos!
Thiago Zavaschi

Tagged as: No Comments
14Nov/092

Novidades do SQL Server 2008 R2 – Parte I – Application and Multiserver Management

Pessoal, essa nova série de artigos técnicos será dedicada ao SQL Server 2008 R2. A minha intenção é apresentar uma novidade do R2 em cada um dos artigos.

Antes de começar a falar cobre o Utility Explorer, vamos as novidades presentes no SQL Server 2008 R2, lembrando que estamos no segundo CTP (saíram CTP’s de Agosto e de Novembro, este último há aproximadamente uma semana).

No CTP que acabou de sair temos as seguintes novas features (em inglês):

  • Support for Windows Server 2008 R2, including Hyper-V with Live Migration
  • Enhanced data compression with support for Unicode UCS-2
  • PowerPivot for Microsoft® Excel and Microsoft SharePoint Server (o plugin ainda não está disponível, quando estiver avisarei!)
  • Report Builder 3.0 with Report Part Gallery and new visualizations (sparklines, databars)
  • Master Data Services (MDS)

E no CTP de Agosto temos inclusas as seguintes features:

  • A Control Point Explorer in SQL Server Management Studio for central multi-instance and application utilization management.
  • Built-in wizards to help you quickly set up and enroll instances and Data-Tier Application components into central management.
  • Dashboard viewpoints for quick insight into application and instance utilization.
  • StreamInsight core technology engine for Complex Event Processing.

Tenho que confessar, estou “babando” sobre essa nova versão do SQL Server. São tantos recursos novos que eu acho que poderiam até chamar de “SQL Server 2010”. :)

Mas vamos ao que interessa!

O SQL Server 2008 R2 possui uma nova dashboard para análise da instância e do servidor. Tal processo é feito, conforme veremos em detalhes, através de um processo que roda de tempos em tempos (pelo SQL Server Agent) alimentando uma warehouse específica. A partir dessa warehouse teremos os dados consolidados no dashboard que comentei. A seguir temos a imagem da arquitetura empregada pelo Utility Explorer (extraída do Books Online do CTP de Novembro). Os dados são coletados a cada 15 minutos. Não procurei para saber se é configurável, mas acredito que deva ser.

utility_BOL[1]

Para começar o processo de configuração e também para posteriormente acessar a dashboard, acesse através do menu View –> Utility Explorer.

utility[1]

Você agora deve criar um UCP – Utility Control Point em uma instância do SQL Server. Conforme a figura abaixo diz, será criada uma database no formato de data warehouse para armazenar os dados coletados referentes à(s) instância(s) do SQL Server, conhecida como utility management data warehouse (UMDW).

São 5 passos necessários para a configuração do UCP:

  1. Especificar a instância onde o UCP será criado.
  2. Especificar a conta que será resposável por executar o coletor das informações.
  3. Revisar os pré-requisitos necessários para a criação do UCP.
  4. Rever tudo o que foi marcado por você (se algo estiver errado, volte no wizard).
  5. E por fim, criar o UCP efetivamente.

utility2[1]

Seguindo no wizard temos a seleção da instância aonde será instalado/criado o UCP. Nomeie o UCP com um nome relativo ao servidor, ou a sua regra de negócio específica (Produção, Homologação e assim por diante).

utility3[1]

O passo seguinte é para especificar a conta responsável por coletar os dados.
Pode-se utilizar uma conta do windows ou a própria conta que é utilizada pelo SQL Server Agent.
Conforme veremos a seguir, é obrigatório que o Agent esteja rodando na instância, por isso que temos essa opção (que por um momento pode parecer estranha).

utility4[1]

No próximo passo temos a validação dos pré-requisitos necessários para a criação do UCP. São eles:

  • Você deve ter privilégios administrativos na instância do SQL Server.
  • A instância tem que possuir a versão 10.50.* ou superior. Perceba então que um UCP só pode ser configurado no SQL Server 2008 R2, uma vez que o SQL Server 2008 possui versão 10.0.*.
  • A edição do SQL Server tem que suportar a criação do UCP. No atual release (novembro) as edições do R2 para poder utilizar o recurso necessitam ser Data Center, Developer, ou Enterprise Evaluation. É provável que esse recurso não esteja disponível nas versões standard a serem lançadas, mas isso é oq ue eu acho, não temos referências quanto a isso no BOL.
  • A instância não pode ter outro UCP configurado.
  • Não pode ter uma database chamada sysutility_mdw. Pois a mesma será criada pelo processo (é a base responsável por armazenar a warehouse). Na minha opinião, isso não deveria ser um pré-requisito. O wizard deveria pedir por um nome da warehouse, principalmente para manter os padrões de nomenclatura já empregados pela empresa/organização.
  • Os conjuntos de coleções na instância selecionada devem ser parados.
  • O SQL Server Agent deve estar rodando e configurado para iniciar junto a inicialização do Windows (Automatic).
  • A conta do Agent não pode ser uma conta do tipo built-in.
  • A conta do Agent deve ser uma conta do windows válida no domínio onde se encontra a instância.

utility5[1]

Revise os dados de entrada.

utility6[1]

o próximo passo é a instalção e configuração efetiva do UCP, aguarde todos os itens terminarem e pronto!

utility7[1]

Já podemos observar a dashboard com as informações disponíveis. O que é possível analisar através dessa dash, deixarei por conta de um próximo post.

As imagens a seguir mostram o UCP recém configurado (reparem no “No Data Available”), e no mesmo UCP alguns dias depois (reparem na parte que analisa os dados históricos), respectivamente.

utility8[1]

dash_utility[1]

---

Bacana né?

Por ser muito recente e o SQL Server 2008 R2 ainda estar em versão CTP (Community Technical Preview) não tenho informações de cases ou do comportamento da análise. Por isso resta confiar no que é dito no books online apenas (em inglês).

  • We recommend that the UCP is hosted by a case-sensitive instance of SQL Server.
  • Consider the following recommendations for capacity planning on the UCP computer:
    • In a typical scenario, disk space used by the sysutility_mdw database on the UCP is approximately 2 GB per managed instance of SQL Server per year. This estimate can vary depending on the number of database and system objects collected by the managed instance. The sysutility_mdw disk space growth rate is highest during the first two days.
    • In a typical scenario, disk space used by msdb on the UCP is approximately 20 MB per managed instance of SQL Server. Note that this estimate can vary depending on the resource utilization policies and the number of database and system objects collected by the managed instance. In general, disk space usage increases as the number of policy violations increases and the duration of the moving time window for volatile resources increases.
    • Note that removing a managed instance from the UCP will not reduce the disk space used by UCP databases until expiration of data retention periods for the managed instance.

In this release, all managed instances of SQL Server must satisfy the following requirements:

  • We recommend that if the UCP is hosted by a case-insensitive instance of SQL Server, then managed instances of SQL Server should also be case-insensitive.
  • FILESTREAM data are not supported for SQL Server Utility monitoring.

“ – Trecho extraído do BOL do CTP de novembro do SQL Server 2008 R2.

--

Bom pessoal, era isso que eu queria mostrar no artigo de hoje. Na minha visão o uso deste recurso tem tudo para dar certo e ter uma aceitação em larga escala para análise de diversas instâncias/aplicações. Eu particularmente gostei bastante!

Abraços a todos!
Thiago Zavaschi

13Nov/090

[off-topic?] E depois do apagão..

Vi lá no SQL From Hell (sqlfromhel.com) essa charge do meu amigo Vitor, muito boa!!



Abraços,
Thiago Zavaschi

Filed under: Off-topic No Comments
10Nov/090

SQL Server 2008 R2 November CTP

Sai o segundo CTP do SQL Server 2008 R2!!!!

Não terminei o download ainda, mas a promessa é que nesse já tenhamos o PowerPivot for Excel 2010 (antigo projeto Gemini)!!

Saiu ontem para assinantes TechNet Plus e amanhã saíra para o público geral!

Quando sair o link público posto aqui pra todos!

É isso! Baixem, instalem e se mantenham atualizados no que diz respeito ao SQL Server!

---

Edit:

Conforme prometido, segue o link para download do CTP de Novembro do SQL Server 2008 R2!

http://www.microsoft.com/sqlserver/2008/en/us/R2Downloads.aspx

Grande abraço,
Thiago Zavaschi

9Nov/090

Best Practices for Data Warehousing with SQL Server 2008 e Agradecimentos!

Pessoal, primeiramente eu gostaria de agradecer a TODOS que assistiram e/ou deram apoio ao SQL Server Day de alguma forma!

Eu realmente fiquei muito feliz ao ver toda aquela galera (presencial e conectada), fiquei feliz em ajudar nas moderações.. em ajudar cedendo e estourando meu limite de banda do 3G pro Laerte poder apresentar..

Enfim, o evento valeu MUITO, aprendi MUITO, e conheci pessoas fantásticas como o Laerte, o prof. Arnaldo e o Mateus lá de Marília (ô cidadezinha booooa! :P).

Depois faço um post contando tudo e pondo as fotos, pois essa semana está uma correria! Por enquanto leiam o post bem humorado do Laerte (http://laertejuniordba.spaces.live.com/blog/cns!C16042A4306A1328!891.entry)

Ahhh espero que tenham gostado da minha palestra de CTE! Eu usei muitos exemplos que mostrei aqui no blog, mas adicionei coisa nova lá tmb!

Até o fim da semana os scripts e ppts estarão no www.sqlserverday.com.br (eu vi que o pessoal andou postando já, mas estou com preguiça/pressa ehehehee).

--

Mas a dica de hoje é um link pra um artigo (“velho” já), mas achei bastante interessante. Estou me aperfeiçoando em BI e gostei bastante da leitura, o nome do artigo é “Best Practices for Data Warehousing with SQL Server 2008” e bem como o nome é em inglês. Contém diversas explicações e imagens. Leitura obrigatória para qualquer desbravador da área de BI.

http://msdn.microsoft.com/en-us/library/cc719165.aspx

Abraços!
Thiago Zavaschi

20Oct/090

Project Gemini agora tem um nome! PowerPivot!

O Projeto Gemini que estará disponível no próximo CTP do SQL Server 2008 R2 agora possui um nome pelo qual será conhecido: PowerPivot!

A uns posts atrás (sobre o TechEd Brasil 2009, mais precisamente) eu comentei sobre um Excel com mais de 100 milhões de linhas, pois bem, agora temos um nome final! Dalhe self-service BI! Até que enfim!

Podem acessar o site oficial da tecnologia e aprender mais sobre o PowerPivot: www.powerpivot.com.

E sim, sem querer ser chato, mas já sendo, não se esqueçam de se inscrever no SQL Server Day! Estou esperando vocês lá!

Abraços,
Thiago Zavaschi

19Oct/090

Links para a inscrição no SQL Server Day

Pessoal,

Saíram os links para a inscrição no maior evento online de SQL Server online do Brasil!

São ao todo três inscrições e não haverá sobreposição, ou seja, você poderá assistir todos!

SQL Server Day uma tempestade cerebral de SQL Server!

Data: 07/11/2009

09:30 ~ 14:00
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032430235&Culture=pt-BR

14:00 ~ 19:00
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032430237&Culture=pt-BR

19:00 ~ 22:00
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032430239&Culture=pt-BR

Este é um evento realizado pela COMUNIDADE TÉCNICA com o apoio da MICROSOFT.

Nos vemos lá!

Abraços,
Thiago Zavaschi

16Oct/090

SQL Azure Database CTP2 Disponível!

Acessem o blog oficial do time para maiores detalhes: SQL Azure Database blog !

E não esqueçam do SQL Server Day! (www.sqlserverday.com) a ser realizado no dia 07/11!

Abraços,
Thiago Zavaschi