#22 – Para que serve


Oi, bom dia, tudo bem?

Seja bem-vindo a mais um post da sessão Para que Serve, sendo este o de número 22, mais um dia de muito trabalho começando, repleto de atividades, compromissos, reuniões, enfim tudo aquilo que normalmente estamos acostumados a nos deparar em nossos convívio diário.

E eu (parece música), estou aqui, como faço normalmente, acordando bem cedinho, para poder aproveitar da melhor maneira possível meu precioso tempo livre, colocando em prática algo que adoro fazer, publicar um post novo em meu blog mantendo a tradição de querer renovar e compartilhar as experiências e aprendizados adquiridos em minhas atividades profissionais e acadêmicas.

No post de hoje, não estarei compartilhando um conteúdo que pode ser considerado novo, ao contrário, quero destacar uma das mais antigas propriedades existentes em bancos de dados criados no Microsoft SQL Server desde suas versões mais antigas, mais especificamente falando da versão 2000 (é muito importante entender o passado, aprender com ele, para podemos melhorar e ofertar um futuro melhor) em diante.

Estou se referindo a propriedade denominada Page_Verify, a qual tem um papel de extrema importância no comportamento de um banco de dados de usuários, algo que pode impactar na forma de armazenamento, leitura e escrita das páginas de dados que formam a estrutura física e lógica de nossas tabelas e por consequência de nossos bancos de dados.

No decorrer deste post serão destacadas as respectivas opções existentes para esta propriedade, como também, será realizado uma análise comparativa no que diz respeito ao tempo de processamento de dados tendo como parâmetro um simples bloco de código inserindo 100.000 (Cem mil linhas de registros lógicos) com dados aleatórios.

Destaco antecipadamente que esta análise comparativa em nenhum momento leva em consideração características de Hardware, versão de Sistema Operacional ou uso de uma aplicação específica. Na verdade o objetivo desta simples análise é elucidar o uso desta propriedade, suas opções e respectivos algoritmos de processamento podem influenciar diretamente nos processos de escrita e leitura de dados.

Sendo assim, chegou a hora de conhecer um pouco mais sobre o post de número 22 da sessão Para que serve. Mas uma vez, bem vindo ao #22 – Para que serve – Propriedades de Bancos de Dados – Page_Verify e suas opções.

Espero que você esta animado para conhecer um pouco mais sobre esta propriedade, caso já conheça, continue lendo este post, sempre podemos aprender algo novo….


Introdução

Criar uma nova tabela para alocar dados em qualquer banco de dados existente no Microsoft SQL Server, pode ser considerada uma tarefa ou procedimento de fácil compreensão, muito simples de ser realizada tanto por linha de comando como também por interface gráfica, mas por trás “dos panos” diversos procedimentos internos são realizados pelo Sistema Gerenciador de Banco de Dados e seus diversos recursos e componentes internos.

Imagine então a tarefa de criação de um novo banco de dados, não parece também ser algo muito, mas muito simples! Teoricamente sim, mas se começarmos a analisar, entender e de preferência estudar cada uma das diversas propriedades que formam e orientam o Mecanismo de Bancos de Dados na execução da instrução de criação de um novo banco, teremos a total certeza que isso não tão simples como pensamos.

Pensando justamente neste cenário, decidi então identificar uma propriedade que por muitas vezes me passou totalmente despercebida e nos últimos dias acabou sendo motivo de estudos, como já destacado anteriormente estou me referindo a propriedade Page_Verify, sendo esta um das mais antigas propriedades existentes em bancos de dados desde a versão 2000 ou nível de compatibilidade 80, inicialmente apresentava como conjunto de opções os valores: None e Torn_Page_Detection e a partir da versão 2005 do Microsoft SQL Server ganhou uma nova opção conhecida como CheckSum e por consequência um novo algoritmo.

Vamos então conhecer um pouco mais sobre esta propriedade.

Propriedade de Banco de Dados Page_Verify

Propriedade existente em bancos de dados criados no Microsoft SQL Server que possui basicamente a função de permitir ao Sistema Gerenciador de Banco de Dados identificar e informar as chamadas Páginas de Dados Incompletas (Incomplete Pages) ou Páginas de Dados Suspeitas (Suspect Pages), através de dados internos catalogados e coletados na tabela suspect_pages existente dentro do banco de dados de sistemas MSDB.

Outra característica muito importante apresentada pela Page_Verify, relaciona-se ao método de verificação que garante ao Microsoft SQL Server que as páginas de dados que compõem um determinada tabela podem ser consideradas integras e completas, esta capacidade esta totalmente relacionada ao uso de um algoritmo pertencente a esta propriedade de acordo com o tipo de verificação de página que deve ser aplicada.

Esta tão importante característica, deve ser levada em consideração, mesmo tendo diversas funcionalidades que nos permitem identificar se a estrutura física e lógica de um banco de dados pode ser considerado integra. Em inúmeros cenários um banco de dados pode aparentemente estar apresentando falhas na estrutura interna que define uma respectiva página de dados sem necessariamente existir ou que tenha ocorrida uma falha física nas unidades de disco que armazenam tal página de dados.

A identificação se uma página de dados pode ou não ser considerada incompleta, suspeita ou quebrada é feita através da identificação de bits armazenados diretamente no cabeçalho de dados existente na respectiva página, é justamente por isso que a propriedade Page_Verify utiliza alguns algoritmos de acordo com a opção escolhida nas configurações e propriedades de um banco de dados, como recurso para garantir em tempo real o menor número de ocorrências ou possíveis falhas que venham a ocasionar uma perda de dados.

Vamos agora conhecer as formas de verificação de páginas de dados e seus respectivos algoritmos.

Formas de Verificação: None, Torn_Page_Detection e CheckSum

Até a versão 2005 SP2 do Microsoft SQL Server tínhamos somente as formas de verificação de páginas de dados None e Torn_Page_Detection, mas este cenário muito e uma nova opção denominada CheckSum foi adicionada, sendo esta então valor padrão para propriedade Page_Verify para bancos de dados com nível de compatibilidade 90 ou superior.

None: Ao escolher esta opção, o Microsoft SQL Server recebe a orientação para que não seja realizado os procedimentos de verificação e correção das páginas lidas durante os atividades de armazenamento de dados.

Logicamente esta é uma opção que não deverá ser utilizada em ambientes que não podemos correr o menor risco possível de aceitar falhas ou perdas de dados, mesmo confiando nas tecnologias de Hardware, estratégias de armazenamento, contingência e retenção de dados, a partir do momento que esta opção for escolhida você estará assumindo o risco.

Torn_Page_Detection: Opção padrão existente na versão 2000 do Microsoft SQL Server. Ao escolher esta opção, estaremos definindo o uso do algoritmo que armazenará em tempo real no cabeçalho de cada página de dados bits que identificam a operação de gravação.

No momento em que esta mesma página é lida de um disco durante a operação de leitura, os bits do cabeçalho da página são comparados àqueles no corpo da página. Caso alguma discrepância venha a ser detectada, esta específica página de dados será em tempo real considerada quebrada (incompleta ou suspeita) e o problema é relatado para um usuário.

Vale destacar que este algoritmo no momento em que uma página de dados esta sendo verificada, realiza o procedimento de duplicação de pequenas porções de bits de dados contidos em seu cabeçalho, algo que não podemos necessariamente relatar como um consumo maior de espaço em disco, na verdade é esta tarefa de duplicação de dados bits de dados utilizada para garantir a consistência da página. Por outro lado, dependendo do tipo de falha que poderá ocorrer alguns erros acabam não sendo detectados, se justamente o bit quebrado é um daqueles que não foram duplicados no cabeçalho da página, o dano não é detectado.

CheckSum: Opção padrão desde o SQL Server 2005 SP3, a partir do momento que esta opção é selecionado, o Microsoft SQL Server estará fazendo uso do algoritmo responsável durante  operação de gravação, realizar uma soma de verificação (CheckSum) que calcula a partir da estrutura completa de uma página de dados um valor a ser armazenado diretamente em seu cabeçalho.

No momento em que a respectiva página de dados é lida a partir de um disco, CheckSum é calculado novamente e comparado com o valor no cabeçalho da página. A idéia é semelhante ao TORN_PAGE_DETECTION, podemos destacar que ambos algoritmos calculam um valor de verificação para uma página e armazenam o resultado no cabeçalho da página, mas CheckSum usa a página inteira para cálculo, ao contrário do TORN_PAGE_DETECTION que utiliza apenas um pequeno número de bits existente na página de dados.

Se compararmos a opção TORN_PAGE_DETECTION com a opção CheckSum, podemos afirmar que o CheckSum apresenta uma forma de análise e verificação de possíveis falhas e erros nas atividades de Input/Output de dados, mais confiável e inteligente, estabelecendo uma cobertura mais precisa que garante uma assertividade maior na identificação de possíveis páginas de dados incompletas, suspeitas ou quebradas.

Agora que conhecemos a propriedade Page_Verify e suas opções, vamos então conhecer de forma prática e entender o comportamento de cada uma delas, realizando assim a análise destacada no início deste post.

Chegou a hora de colocar a mão nos teclados, como de costume teremos um ambiente de testes a ser criado, o que será utilizado como cenário de estudos.

Criando o Ambiente

Em meu ambiente de estudos estou utilizando o Microsoft SQL Server 2017 Enterprise Edition – Cumulative Update 9 e Sistema Operacional Windows 10, fique a vontade para utilizar o melhor cenário possível dentro das suas necessidades.

Como já destacado anteriormente esta análise ou possível cenário de estudo não consiste em afirmar qual é a mais rápida ou melhor forma de verificação de páginas de dados, mas sim demonstrar o quanto uma determinada opção poderá impactar ou influenciar nos custos de processamento de dados nas atividades de leitura e escrita, nesta prática mais especificamente nas atividades de gravação de dados.

Para realizar nossa simples prática, começaremos pela execução do Bloco de Código 1, responsável por criar a seguinte estrutura:

  • Database: TesteDatabasePageVerify;
  • Tables: TabelaPageVerify; e PageVerifyTempoDecorrido.

— Bloco de Código 1 —
— Criando o Banco de Dados TesteDatabasePageVerify —
Create Database TesteDatabasePageVerify
Go

— Acessando o Banco de Dados TesteDatabasePageVerify —
Use TesteDatabasePageVerify
Go

— Criando a Tabela TabelaPageVerify —
Create Table TabelaPageVerify
(Codigo Int Identity(1,1) Not Null Primary Key,
Texto VarChar(10) Not Null,
Quantidade SmallInt Not Null,
ValoresNumericos Numeric(18, 2) Not Null,
DataAtual Date Not Null)
Go

— Criando a Tabela PageVerifyTempoDecorrido —
Create Table PageVerifyTempoDecorrido
(NumeroDaAnalise SmallInt Identity(1,1) Not Null,
TipoDaAnaliseRealizada Varchar(22) Not Null,
HoraInicio Time Not Null,
HoraFim Time Not Null,
HoraDiferenca As (DateDiff(Second, HoraInicio, HoraFim)))
Go

A tabela TabelaPageVerify será utilizada como repositório dos dados que estaremos aleatoriamente gerando como fonte de análise, já a tabela PageVerifyTempoDecorrido terá um papel importante que consiste basicamente em armazenar os dados relacionada a análise realizada, dentre elas o Tipo da Análise, Horário de Início e Fim e a diferença em segundo entre os respectivos horários.

Avançando mais um pouco, vamos agora realizar propriamente a análise para cada uma das opções de verificação de páginas existentes, serão realizadas um total de 10 análises para cada opção e ao fim os dados armazenados na Tabela PageVerifyTempoDecorrido será apresentados como uma fonte de resultando da nossa análise.

Para realizar esta análise utilizaremos o Bloco de Código 2 apresentado abaixo:

— Bloco de Código 2 —
— Desativando a Contagem de Linhas —
Set NoCount On
Go

— Declarando as variáveis de controle —
Declare @Counter TinyInt = 0,
@Text Char(130),
@Position TinyInt,
@RowCount Int = 100000,
@HoraInicio Time = GetDate(),
@HoraFim Time

Set @Text = ‘0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ\_abcdefghijklmnopqrstuvwxyzŽŸ¡ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ.;^’ –There are 130 characters in this text–

While @Counter <10 — Definindo a quantidade máxima de testes —
Begin

— Alterando a Propriedade Page_Verify para None —
Alter Database TesteDatabasePageVerify
Set Page_Verify None

— Inserindo a massa de dados na tabela TabelaPageVerify —
While (@RowCount >=1)
Begin

Set @Position=Rand()*130

Insert Into TabelaPageVerify (Texto, Quantidade, ValoresNumericos, DataAtual)
Values(Concat(SubString(@Text,@Position+2,2),SubString(@Text,@Position-4,4),SubString(@Text,@Position+2,4)),
Rand()*1000,
Rand()*100+5,
DATEADD(d, 1000*Rand() ,GetDate()))

Set @RowCount = @RowCount – 1
End

Set @HoraFim=GetDate()

Insert Into PageVerifyTempoDecorrido (TipoDaAnaliseRealizada , HoraInicio, HoraFim)
Values (‘None’, @HoraInicio, @HoraFim)

— Alterando a Propriedade Page_Verify para Torn_Page_Detection —
Alter Database TesteDatabasePageVerify
Set Page_Verify Torn_Page_Detection

— Inserindo a massa de dados na tabela TabelaPageVerify —
Set @RowCount = 100000
Set @HoraInicio = GetDate()

While (@RowCount >=1)
Begin

Set @Position=Rand()*130

Insert Into TabelaPageVerify (Texto, Quantidade, ValoresNumericos, DataAtual)
Values(Concat(SubString(@Text,@Position+2,2),SubString(@Text,@Position-4,4),SubString(@Text,@Position+2,4)),
Rand()*1000,
Rand()*100+5,
DATEADD(d, 1000*Rand() ,GetDate()))

Set @RowCount = @RowCount – 1
End

Set @HoraFim=GetDate()

Insert Into PageVerifyTempoDecorrido (TipoDaAnaliseRealizada , HoraInicio, HoraFim)
Values (‘Torn_Page_Detection’, @HoraInicio, @HoraFim)

— Alterando a Propriedade Page_Verify para CheckSum —
Alter Database TesteDatabasePageVerify
Set Page_Verify CheckSum

— Inserindo a massa de dados na tabela TabelaPageVerify —
Set @RowCount = 100000
Set @HoraInicio = GetDate()

While (@RowCount >=1)
Begin

Set @Position=Rand()*130

Insert Into TabelaPageVerify (Texto, Quantidade, ValoresNumericos, DataAtual)
Values(Concat(SubString(@Text,@Position+2,2),SubString(@Text,@Position-4,4),SubString(@Text,@Position+2,4)),
Rand()*1000,
Rand()*100+5,
DATEADD(d, 1000*Rand() ,GetDate()))

Set @RowCount = @RowCount – 1
End

Set @HoraFim=GetDate()

Insert Into PageVerifyTempoDecorrido (TipoDaAnaliseRealizada , HoraInicio, HoraFim)
Values (‘CheckSum’, @HoraInicio, @HoraFim)

Set @Counter = @Counter + 1
End
Go

Ótimo, após o processamento de nossa análise, gerou a hora de obter o resumo de tempo decorrido de processamento para cada opção, basta executar o Bloco de Código 3 divido em duas partes: Resumo Detalhado e Resumo Sumarizado, conforme declaro abaixo:

— Bloco de Código 3 —
— Parte 1 – Consultando o resumo detalhado —
Select NumeroDaAnalise,
TipoDaAnaliseRealizada,
HoraInicio,
HoraFim,
HoraDiferenca As ‘Segundos’
From PageVerifyTempoDecorrido
Go

A Tabela 1 apresentada a seguir, ilustra o detalhamento de dados coletados durante o processamento do Bloco de Código 2 realizado anteriormente:

Número da Análise Tipo da Análise Hora Início Hora Fim Segundos
1 None 10:45:59.1966667 10:46:51.0566667 52
2 Torn_Page_Detection 10:46:51.0566667 10:47:31.9633333 40
3 CheckSum 10:47:31.9800000 10:48:09.3566667 38
4 None 10:47:31.9800000 10:48:09.3566667 38
5 Torn_Page_Detection 10:48:09.3700000 10:48:38.6800000 29
6 CheckSum 10:48:38.6966667 10:49:13.6800000 35
7 None 10:48:38.6966667 10:49:13.6933333 35
8 Torn_Page_Detection 10:49:13.7133333 10:49:47.5100000 34
9 CheckSum 10:49:47.5100000 10:50:17.3433333 30
10 None 10:49:47.5100000 10:50:17.3600000 30
11 Torn_Page_Detection 10:50:17.3766667 10:50:49.7066667 32
12 CheckSum 10:50:49.7233333 10:51:23.3566667 34
13 None 10:50:49.7233333 10:51:23.3733333 34
14 Torn_Page_Detection 10:51:23.3733333 10:51:54.4200000 31
15 CheckSum 10:51:54.4200000 10:52:29.0466667 35
16 None 10:51:54.4200000 10:52:29.0500000 35
17 Torn_Page_Detection 10:52:29.0666667 10:53:00.8300000 31
18 CheckSum 10:53:00.8466667 10:53:32.1433333 32
19 None 10:53:00.8466667 10:53:32.1600000 32
20 Torn_Page_Detection 10:53:32.1766667 10:54:06.6466667 34
21 CheckSum 10:54:06.6633333 10:54:36.9400000 30
22 None 10:54:06.6633333 10:54:36.9400000 30
23 Torn_Page_Detection 10:54:36.9566667 10:55:09.7533333 33
24 CheckSum 10:55:09.7700000 10:55:41.8866667 32
25 None 10:55:09.7700000 10:55:41.8866667 32
26 Torn_Page_Detection 10:55:41.9033333 10:56:15.0166667 34
27 CheckSum 10:56:15.0166667 10:56:45.6966667 30
28 None 10:56:15.0166667 10:56:45.7133333 30
29 Torn_Page_Detection 10:56:45.7133333 10:57:21.7900000 36
30 CheckSum 10:57:21.7933333 10:57:54.8433333 33

Tabela 1 – Detalhamento de dados coletados após o processamento do Bloco de Código 2.

— Parte 2 – Consultando o resumo sumarizado —
Select TipoDaAnaliseRealizada,
Avg(HoraDiferenca) As ‘Média em segundos’
From PageVerifyTempoDecorrido
Group By TipoDaAnaliseRealizada
Order By ‘Média em segundos’ Desc
Go

A Tabela 2 apresentada a seguir, ilustra o dados coletados durante o processamento do Bloco de Código 2 realizado anteriormente de forma sumarizada com o cálculo da média de segundos gastos para o processamento de cada opção de verificação de páginas:

Tipo da Análise Média em segundos
None 34
Torn_Page_Detection 33
CheckSum 32

Tabela 2 – Dados sumarizados após o processamento do Bloco de Código 2.

Falta só um pouco, o último passo que iremos realizar, consiste na apresentação do Sumário de processamento em segundos demandado por cada algoritmo de verificação de páginas, através da execução do Bloco de Código 4, sendo que o mesmo apresentará os seguintes resultados:

  • Média de processamento em segundos;
  • Menor tempo de processamento em segundos;
  • Maior tempo de processamento em segundos; e
  • Somatória total do tempo de processamento.

— Bloco de Código 4 —
— Pivot —
Select ‘Média de processamento…..’ As ‘Sumário por segundos’, [None],[Torn_Page_Detection],[CheckSum]
From (Select TipoDaAnaliseRealizada,
HoraDiferenca
From PageVerifyTempoDecorrido
) As A
Pivot (Avg(HoraDiferenca) For TipoDaAnaliseRealizada In ([None],[Torn_Page_Detection],[CheckSum])) As Pvt
Union All
Select ‘Menor tempo de processamento…..’, [None],[Torn_Page_Detection],[CheckSum]
From (Select TipoDaAnaliseRealizada,
HoraDiferenca
From PageVerifyTempoDecorrido
) As A
Pivot (Min(HoraDiferenca) For TipoDaAnaliseRealizada In ([None],[Torn_Page_Detection],[CheckSum])) As Pvt
Union All
Select ‘Maior tempo de processamento…..’, [None],[Torn_Page_Detection],[CheckSum]
From (Select TipoDaAnaliseRealizada,
HoraDiferenca
From PageVerifyTempoDecorrido
) As A
Pivot (Max(HoraDiferenca) For TipoDaAnaliseRealizada In ([None],[Torn_Page_Detection],[CheckSum])) As Pvt
Union All
Select ‘Somatória do tempo de processamento…..’, [None],[Torn_Page_Detection],[CheckSum]
From (Select TipoDaAnaliseRealizada,
HoraDiferenca
From PageVerifyTempoDecorrido
) As A
Pivot (Sum(HoraDiferenca) For TipoDaAnaliseRealizada In ([None],[Torn_Page_Detection],[CheckSum])) As Pvt
Go

A Tabela 3 apresentada a seguir, ilustra o dados coletados durante o processamento do Bloco de Código 4, sumarizados e estruturados através do uso de Pivot:

Sumário por segundos None Torn_Page_Detection CheckSum
Média de processamento….. 34 33 32
Menor tempo de processamento….. 30 29 30
Maior tempo de processamento….. 52 40 38
Somatória do tempo de processamento….. 348 334 329

Tabela 3 – Dados sumarizados e apresentados em formato de Pivot após o processamento do Bloco de Código 4.

Agora sim, chegamos ao final. Ufa deu um pouco de trabalho este post, como de costume, mesmo assim sempre vale a pena poder compartilhar um pouco do conhecimento e experiências adquiridas ao longo dos anos de trabalho como DBA e Professor.

Espero que você tenha gostado, eu posso dizer que sim, mas sua opinião é muito importante.


Referências

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-database-transact-sql?view=sql-server-2017

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql?view=sql-server-2017

https://docs.microsoft.com/en-us/sql/relational-databases/policy-based-management/set-the-page-verify-database-option-to-checksum?view=sql-server-2017

https://docs.microsoft.com/en-us/sql/relational-databases/databases/database-properties-options-page?view=sql-server-2017

https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/manage-the-suspect-pages-table-sql-server?view=sql-server-2017

Links

Caso você ainda não tenha acessado os posts anteriores desta sessão, fique tranquilo é fácil e rápido, basta selecionar um dos links apresentados a seguir:

https://pedrogalvaojunior.wordpress.com/2018/05/28/21-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2018/04/12/20-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2018/01/02/19-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2017/12/15/18-para-que-serve/

Conclusão

Pensar na melhor forma para se armazenar um dado em uma respectiva tabela, vai muito além de escolher o tipo de dados mais indicado, temos também que procurar conhecer cada vez mais as propriedades de definem a estrutura e comportamento de um banco de dados, visando sempre garantir a melhor forma de armazenar, coletar e garantir que nossos servidores, aplicações e usuários possam fazer uso desta tão importante matéria prima utilizada pelas organizações, os dados que estão guardados em nossos bancos dados.

Neste post, você pode conhecer uma mais sobre a propriedade de banco de dados Page_Verify e suas opções: None, Torn_Page_Detection e CheckSum. Propriedade que desempenha um papel de extrema importância no que diz respeita a garantir que nossos dados estão armazenados de forma integra e confiável.

Realizamos uma simples análise para elucidar como estas opções podem influenciar no comportamento do Database Engine e também no Storage Engine, conhecemos também como cada opção desempenha o papel de verificar a estrutura física e lógica das páginas de dados que formam nossas tabelas, fazendo uso de algoritmos que gravam diretamente bits nos cabeçalhos destas mesma páginas, como fonte de identificação para tentar garantir que sua estrutura esta integra e confiável.

Mais uma vez destaco que este o estudo realizado no cenário apresentando neste post, não tem a finalidade de mostrar qual opção é mais rápida, mas sim demonstrar como em alguns momento a opção Torn_Page_Detection em comparação com a CheckSum pode ser mais vantajosa ou não, sabendo que a opção None não é recomendada para fiz corporativos.

Este é o fantástico Microsoft SQL Server, que desde suas primeiras versões nos apresenta inúmeras possibilidade de se aprender, possibilitando usar o passado como fonte de inspiração para construção de um futuro melhor, por isso que a cada dia eu me apaixono ainda mais por este produto…

Vai SQL Server, Vai SQL Server….

Agradecimentos

Mais uma vez obrigado por sua ilustre visita, sinto-me honrado com sua presença, espero que este conteúdo possa lhe ajudar e ser útil em suas atividades profissionais e acadêmicas.

Um forte abraço, até o próximo post da sessão Para que serve a ser publicado no mês novembro.

Um grande abraço e ótima semana.

Valeu.

Anúncios

#20 – Para que serve


Olá pessoal, bom dia(ou talvez boa madrugada).

Não se espante com o horário, mas neste exato momento são 02:06(duas horas e seis minutos da manhã) quinta – feira dia 12/04, ou seja, um novo dia esta começando.

É a vida de um DBA e MVP não é fácil, sei que nesta quinta terei um dia repleto de afazeres, por este e outros motivos estou aqui no meu blog para compartilhar com vocês um dos novos recursos adicionados ao Microsoft SQL Server nos últimos meses.

Logicamente a cada nova versão que a Microsoft disponibilizado do SQL Server, uma nova avalanche de conceitos, funcionalidades, comandos e diversidade de possibilidades são adicionadas ao produto, mas no post de hoje, não vou apresentar propriamente uma nova funcionalidade deste fascinante Sistema Gerenciador de Banco de Dados, ao contrário, vou destacar uma nova ferramenta adicionado ao Microsoft SQL Management Studio a partir da versão 17.5 lançada no mês de fevereiro de 2018, conhecida como Descoberta e Classificação de Dados ou Data Discovery and Classification disponível para uso a partir da versão 2008.

Talvez você já deve ter ouvido falar de algo relacionado com proteção de informações organizacionais, ou quem sabe a sigla GDPR (General Data Protection Regulation)? Falando de formas gerais, trata-se de uma regulamentação geral de proteção de dados, criada inicialmente a partir de 2016, como uma possível normatização de padrões para proteção de dados organizacionais, respeitando regulamentações mundiais.

Caso ainda não tenha conhecimento ou obtida alguma informação sobre este assunto, recomendo acessar: https://www.gdpr.associates/what-is-gdpr/

Continuando, não vou me aprofundar no conceito, normas e padrões estabelecidos pelo GDPR, mas sim quero compartilhar com vocês esta recurso existente no Management Studio, que pode justamente ser muito útil para possibilitar uma melhor organização dos seus dados, como também, estabelecer uma nova maneira de categorizar os mesmo.

Sendo assim, chegou a hora de conhecer um pouco mais sobre o post de número 20 da sessão Para que serve. Então seja bem vindo ao #20 – Para que serve – Descoberta e Classificação de Dados.


Introdução

Adicionado a partir da versão 17.5 do Management Studio, o recurso Data Discovery and Classification se estabelece com uma nova ferramenta existente internamente no produto, com objetivo de nos permitir discovering (descobrir), classifying (classificar), labeling (rotular) e reporting (relatar) os dados confidenciais em seus bancos de dados.

No qual esta capacidade de descoberta e  classificação dos chamados dados confidenciais, sejam eles relacionados as áreas de negócios, financeiros, de serviços de saúde, marketing ou produção, podem desempenhar um papel fundamental na dimensão da proteção de informações organizacionais. A adoção desta nova funcionalidade implementada no Microsoft SQL Management Studio possível de ser utilizada a partir da versão 2008 e disponível até as atuais versão, nos possibilidade adotar:

  • Padrões de privacidade de dados e aos requisitos de conformidade regulamentar, como o GDPR; e
  • Controlar o acesso, fortalecendo a segurança de bancos de dados/colunas que contêm dados altamente confidenciais.

Data Discovery and Classification apresenta um conjunto de funcionalidades internas, que representam uma coleção de parametrizações para identificação e categorização de dados, que estabelecem uma camada de proteção de informações aplicadas de forma direta e transparente em nossos bancos de dados armazenados diretamente no Microsoft SQL Server, possibilitando e objetivando a proteção dos dados, não apenas do banco de dados, como também para os seguintes elementos:

  • Discovery & recommendations (Descobertas e Recomendações) – Através do mecanismo de classificação, é realizada uma verificação no banco de dados, permitindo identificar as possíveis colunas que contenham dados elegíveis a serem considerados confidenciais.
  • Labeling (Rótulos e Identificações) – Basicamente reconhecida como uma etiqueta ou rótulo de classificação de confidencialidade que estabelecem marcas de persistência em colunas, característica que nos ajuda e diferenciar estes dados de um outro dado “considerado comum”; e
  • Visibility (Visibilidade) – Estado de classificação do banco de dados que permite ser exibido em um relatório detalhado que pode ser impresso/exportado para ser usado para fins de auditoria e conformidade, bem como para outras necessidades.

Acredito que até aqui esteja tudo tranquilo, espero que você possa estar entendendo os conceitos, para que possamos evoluir a partir de agora na prática, que também será bastante simples de ser utilizada.

Como descobrir, classificar e rotular colunas confidenciais

Vamos então conhecer de forma prática como podemos estabelecer esta forma de classificação e rotulação dos nossos dados, no qual utilizaremos o Microsoft SQL Server Management Studio, tendo como base um banco de dados muito propicio para o ano de 2018.

Pois bem, em nossa prática vamos utilizar um banco de dados denominado Fifa2018 que possui todos os dados existentes no game Fifa 2018 produzido pela EASports, jogado mundialmente nos principais consoles de videogame. Caso você queria fazer o download deste banco de dados disponível para o SQL Server 2016 ou 2017, utilize este link Fifa2018.bak (por questões de compatibilidade com a plataforma wordpress, o arquivo de backup foi renomeado, tendo em seu nome o acréscimo da extensão .doc, sendo assim, basta após realizar o download remover a respectiva extensão).

Mas antes de realizarmos a classificação de forma prática, vale ressaltar que existem dois elementos muito importantes a serem entendidos, denominados:

  1. Labels (Rótulos) – os atributos de classificação principais, são usados para definir o nível de confidencialidade dos dados armazenados na coluna; e
  2. Information Types (Tipos de informações) – Nos fornecem uma granularidade adicional para o tipo dos dados armazenados na coluna, elemento que nos permite identificar de uma maneira mais especifica cada dado contido em sua respectiva coluna.

Passo 1

Dando continuidade, seguimos em frente, agora realizando de maneira prática os processos de descoberta, classificação e rótulo dos nossos dados, posteriormente vamos gerar um relatório que nos permitirá entender de forma gráfica as categorizações atribuídas para nossos respectivos dados, para tal recomendo que você acesso seu Management Studio e conecte em sua instância, procedimento o qual eu já realizei, conforme a Figura 1 abaixo apresenta:

Figura 1 – Instância local do Microsoft SQL Server 2017 conectada.

Passo 2

Nosso próximo passo será selecionar banco de dados Fifa2018, clicando com o botão da direita, posteriormente na opção Task e por último na opção Classify Data conforme ilustra a Figura 2 a seguir:

Figura 2 – Acessando a ferramenta Classify Data existente no Management Studio.

Passo 3

Ótimo, a partir deste momento, o Management Studio acaba de abrir a ferramenta Classify Data, que nos permite realizar os procedimentos de descoberta, classificação e identificação do dados existentes nas tabelas que compõem do banco de dados Fifa2018, conforme apresenta a Figura 3 abaixo:

Figura 3 – Data Classification disponível para classificação dos dados.

Analisando a Figura 3 apresentada acima, podemos observar que em sua barra de status é exibida uma mensagem informando que existem 5 colunas neste base dados que possivelmente podem ser reconhecidas como colunas de dados confidencias.

Você pode estar se perguntando como esta ferramenta realiza este tipo de análise, a resposta é bem simples, neste caso, a análise foi realizada tendo com base as simulações que eu executei justamente para poder escrever este post, por padrão ao ser inicializada pela primeira em um determinado banco de dados a Classify Data não possui informações suficientes para descobrir estas possíveis colunas.

Passo 4

Legal, o próximo passo será muito simples e tranquilo, para poder realizar a classificação dos dados, vamos clicar no botão Add Classification, existente barra de ferramentas.

Ao clicar no botão Add Classification, será apresentada uma nova ribbon chamada Data Classification ao lado direita da sua tela, a qual permitirá que você realiza das respectivas categorizações dos seus dados, de acordo com a tabela, coluna, tipo da informação e rótulo de importância ou sensibilidade do dado (Sensitivity Label), conforme apresenta a Figura 4:

Figura 4 – Barra de Ferramenta – Botão Add Classification e Ribbon – Data Classification.

De posse desta ribbon, você poderá criar suas respectivas classificações de dados, para tentar de ajudar e padronizar nossa prática, a Figura 5 a seguir ilustra o conjunto de classificação dos dados que eu realizei que podem servir como base para que você estabeleça em seu ambiente as respectivas classificações:

Figura 5 – Data Classification realizada.

Importante: Analisando a Figura 5, podemos notar a utilização de cinco colunas diferentes em nossa prática, todas existentes na tabela PlayerAllData, além disso, a coluna Sensitivity Label apresenta rótulos de sensibilidade diferentes para cada coluna, o que nos permite justamente identificar a existência de diversos rótulos, sendo este, um elemento importante para vai nos permitir ou não mostrar este dado em determinados procedimentos aos quais nosso banco de dados venha a ser envolvido.

Passo 5

Muito bem, você conseguiu, agora vamos avançar mais um pouco, já estamos quase no final, nosso próximo e extremamente importante passo consiste em salvar este conjunto de classificação de dados realizado anteriormente, para isso, nada mais claro e óbvio que clicar no botão Save “salvar” existente na barra de ferramentas da Classify Data, sendo assim, mãos no mouse e clique no botão Save.

Após realizar o procedimento de salvar, temos a partir de agora um conjunto de classificação e rotulamento de dados definido em nosso ambiente, o que nos permite realizar análise do nível se importância, confidencialidade e sensibilidade dos dados aqui definidos de acordo com nossas regras de negócio.

Passo 6

Nosso último passo esta relacionado com a capacidade de análise que esta nova ferramenta Classify Data nos permite fazer, tendo a disponibilidade de gerar um relatório contendo as informações referentes ao conjunto de classificação de dados que nós definimos no Passo 4, com isso, possibilitando estabelecer uma possível análise para posterior tomada de decisão no que se relacionada as colunas selecionadas como possíveis dados confidenciais ou dados organizacionais.

Para realizar este passo, vamos clicar no botão View Report (Exibir Relatório), procedimento que realizará o processamento e apresentação do relatório criado pelo Classify Data contendo o conjunto de informações relacionadas a nossa classificação de dados, conforme apresenta a Figura 6 abaixo:

Figura 6 – Data Classification Report – Relatório de Classificação de Dados.

Pronto, ai esta nosso relatório, simples, rápido e prático, nosso conjunto de classificação de dados apresentado, nos permitindo entender de forma gráfica os procedimentos de descoberta, classificação e rotulagem de dados.

Com isso chegamos ao final do post de número 20 da sessão Para que serve. Gostou?

Fale a verdade este post foi fácil, tranquilo? Não é mesmo!


Referências

https://docs.microsoft.com/pt-br/sql/relational-databases/security/sql-data-discovery-and-classification

https://docs.microsoft.com/en-us/sql/relational-databases/security/sql-data-discovery-and-classification

https://docs.microsoft.com/en-us/sql/relational-databases/security/dynamic-data-masking

https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine

Links

Caso você ainda não tenha acessado os posts anteriores desta sessão, fique tranquilo é fácil e rápido, basta selecionar um dos links apresentados a seguir:

https://pedrogalvaojunior.wordpress.com/2018/01/02/19-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2017/12/15/18-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2017/11/24/17-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2017/10/01/16-para-que-serve/

Conclusão

Estamos vivendo um mundo cada vez mais tecnológico, conectado, rápido, evolutivo e muito agressivo no que se diz respeito ao valor de uma informação para nós usuário e principalmente para empresas.

Atender justamente a este conjunto de exigência diárias, satisfazendo também os órgãos mundiais em suas definições, normas e obrigações acabam exigindo de qualquer empresa um constante acompanhamento e cumprimento de deveres. Desta forma, a Microsoft esta se adequando uma nova realidade e preocupação que cresce a cada dia, como proteger de forma mundial os dados e futuras informações geradas a todo os momentos por cada um dos indivíduos e organizações existentes em nosso planeta, sabendo da importância de se respeitar as leis, normas e padrões organizacionais e governamentais.

Neste post, você conheceu pouco sobre como o Microsoft SQL Server esta preparado para atender estas leis, através da nova ferramenta adicionada internamente no Management Studio, chamada de Data Discovery and Classification, na qual nos permite através do recurso Classify Data estabelecer a classificação dos nossos dados armazenados em cada coluna existente em um banco de dados, e não somente isso, definir o nível de importância deste dado, como também, a sensibilidade do mesmo para ser apresentado ou envolvido em algum tipo de procedimento de acesso ou manipulação, visando garantir e fortalecer que esta dado deve ser tratado de forma diferenciada em comparação com um possível “dado comum”.

Sem dúvida uma grande ferramenta adicionada ao Microsoft SQL Server, que mostra o quanto a Microsoft e seus respectivos times de produto estão envolvidos preocupados em atender e respeitar todas as possíveis leis, normas e regras.

Agradecimentos

Mais uma vez obrigado por sua ilustre visita, sinto-me honrado com sua presença, espero que este conteúdo possa lhe ajudar e ser útil em suas atividades profissionais e acadêmicas.

Um forte abraço, até o próximo post da sessão Para que serve…..

Boa noite e uma ótima quinta – feira.

Até mais.

 

 

 

Dica do Mês – SQL Setup ToolSuite Introduction


Olá pessoal, muito boa tarde.

Tudo bem? Mais um dia de fortes chuvas aqui em São Roque e região, ainda bem que a internet até o presente  momento esta funcionando de forma razoável(é bom não elogiar muito)….

Estou retornado neste início de 2018 conforme prometido no último post da sessão Dica do Mês em 2017 com mais um post exclusivo desta sessão, daa mesma forma que o anterior apresentando algo diferente relacionado ao Microsoft SQL Server.

Neste post, quero compartilhar um conteúdo fresquinho que acabou de sair do forno, na verdade que acaba de ser liberado pelo time de engenheiros do Microsoft SQL Server dedicados exclusivamente ao suporte e desenvolvimento de soluções para o produto, conhecidos mundial como CSS SQL Server EngineersOfficial team Web Log for Microsoft Customer Service and Support (CSS) SQL Support. Caso você ainda não os conheça, não perca tempo acesse: https://blogs.msdn.microsoft.com/psssql/.

Continuando com o post, este fantástico time de profissionais mantidos pelo Microsoft esta a cada dia implementando novas soluções que nos permitem administrar, gerenciar e soluções problemas que o Microsoft SQL Server poderá apresentar em qualquer uma das atuais versões disponibilizadas nos últimos anos. Pensando justamente neste tipo de cenário o CSS SQL Server Engineers acabam de compartilhar uma nova suíte chamada de SQL Setup ToolSuite Introduction.

Ficou curioso em saber um pouco mais sobre esta nova suíte? Então vamos em frente, vou tentar matar a sua curiosidade. Sendo assim, seja bem vindo ao post – Dica do Mês – SQL Setup ToolSuite Introduction.

Você vai conhecer um pouco sobre esta suíte e suas ferramentas…


SQL Setup ToolSuite Introduction (1) – FixMissingMSI

Se você encontrou problemas de MSI/MSP armazenados em cache durante a instalação do SQL Server, você pode ter acessado o artigo: Como restaurar os arquivos de cache do Windows Installer ausentes e resolver problemas que ocorrem durante uma atualização do SQL Server. 

Pensando justamente neste cenário que o time do CSS desenvolveu esta ferramenta, sendo esta uma solução para contornar este tão frequente comportamento apresentado pelo setup de instalação do Microsoft SQL Server. A Figura 1 ilustra a tela da FixMissingMSI, clique na própria figura para realizar o download:Figura 1 – SQL Suíte ToolSetup Introduction – FixMissingMSI.

SQL Setup ToolSuite Introduction (2) – Product Browser

Através desta simples e prática ferramenta, temas a capacidade de obter informações sobre todos os produtos relacionados ao Microsoft SQL Server instalados em sua máquina, dentre elas local de instalação, patch, versão entre outras.

A Figura 2 abaixo ilustra a tela do Product Browser, clique na própria figura para realizar o download:

Figura 2 – SQL Suíte ToolSetup Introduction – Product Browser.

SQL Setup ToolSuite Introduction (3) – SQL Registry Viewer

Você pode querer saber quais chaves do registro serão adicionadas ao sistema para uma instalação do SQL Server. Se você usar alguma ferramenta de snapshot do registro para comparar a mudança de registros de janela antes e depois da instalação do SQL você vai encontrar há 40.000 ~ 60000 modificações acontecendo.

No entanto, se você estudar as modificações com cuidado você vai descobrir que a maioria deles não tem muito sentido, por exemplo, muitas modificações vão para HKLM\DRIVERS\DriverDatabase\DeviceIds\ entrada. As modificações mais interessantes são:

<>Installer related registry keys under
HKEY_CLASSES_ROOT\Installer and
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18

<>COM+ related,Like
Computer\HKEY_CLASSES_ROOT\CLSID
Computer\HKEY_CLASSES_ROOT\Interface
Computer\HKEY_CLASSES_ROOT\TypeLib

<> SQL specific
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server

<>Service
WOW6432Node

Agora com o SQL Registry Viewer, você poderá obter facilmente todo este conjunto de dados armazenados no registro do Windows, relacionados ao Microsoft SQL Server e seus componentes. A Figura 3 a seguir apresenta a tela desta excepcional ferramenta:

Figura 3 –  SQL Suíte ToolSetup Introduction – SQL Registry Viewer.

E ai gostou destas novas ferramentas que fazem parte da SQL Setup ToolSuite Introduction? Posso lhe dizer que gostei muito, já realizei o download e testei em minhas máquinas físicas e virtuais, mas vou confessar de todas elas a que eu mais gostei foi a SQL Registry Viewer. E você?

Quer deixar a sua opinião? Compartilhar a sua preferência?

Então vote na enquete abaixo escolhendo a ferramenta que mais você gostou e acredita que poderá lhe ajudar mais:

Sensacional, show, chegamos ao final de mais um post da sessão Dica do Mês, espero que você tenha gostado, com certeza estas novas ferramentas desenvolvidas pelo CSS SQL Server Engineers poderão lhe ajudar muito em suas atividades diárias.


Referências

https://blogs.msdn.microsoft.com/psssql/2018/01/24/sql-setup-toolsuite-introduction-1-fixmissingmsi/

https://blogs.msdn.microsoft.com/psssql/2018/01/24/sql-setup-toolsuite-introduction-2-product-browser/

https://blogs.msdn.microsoft.com/psssql/2018/01/24/sql-setup-toolsuite-introduction-3-sql-registry-viewer/

Posts Anteriores

https://pedrogalvaojunior.wordpress.com/2017/11/01/dicadomessql2017novascolunasinternas/

https://pedrogalvaojunior.wordpress.com/2017/08/26/dica-do-mes-simulando-a-insercao-de-uma-massa-de-dados-aleatoria/

https://pedrogalvaojunior.wordpress.com/2017/05/23/conhecendo-e-aplicando-o-uso-de-atualizacao-de-estatisticas-incrementais/

https://pedrogalvaojunior.wordpress.com/2017/04/13/dica-do-mes-microsoft-sql-server-identificando-as-transacoes-que-estao-utilizando-o-transact-log/

Conclusão

Falar, compartilhar informações, e um pouco do meu conhecimento sobre o Microsoft SQL Server é algo que me da um imensão prazer e satisfação. Mas saber que existe um time de profissionais focados diariamente na evolução, correções e melhorias do produto é um sentimento que faz a cada dia saber que tomei a decisão certa em meados do ano 2000, quando resolvi mudar totalmente a minha carreira e se dedicar exclusivamente a este produto e todo o seu conjunto de ferramentas, componentes, recursos e soluções.

Estas três novas ferramentas, são um pequeno pedaço existente do lado externo do Microsoft SQL Server que nos permite entender e analisar a grandeza do produto, não somente na sua capacidade de processamento e armazenamento de dados, mas sim no seu real tamanho, proporção de soluções e possibilidades de se contornar, corrigir e mitigar qualquer possibilidade de falha, perda de performance ou um simples erro durante o processo de instalação.

Foi pensando justamente neste cenário que estas novas ferramentas que formam a SQL Setup ToolSuite Introduction nos permite fazer, colentando informações de chaves de registro ou até mesmo identificar produtos instalados em nossas máquinas relacionados a o SQL Server.

Parece ser simples isso! Na verdade é algo muito além de um simples editor de texto para se montar uma query, é justamente um ambiente SGBD. Este é o universo do Microsoft SQL Server, criado a muito anos que esta sempre evoluindo, passando por transformações sem perder a sua essência.

Para os demais produtos que acreditam fazer o mesmo que ele, eu digo, sinto muito.

Agradecimentos

Quero deixar um agradecimento especial ao Team CSS SQL Server Engineers, profissionais do mais alto escalão e nível técnico, que a cada dia nos ajudam a conhecer e desvendar os diversos mistérios existentes nas versões e edições do Microsoft SQL Server.

Agora agradeço a você por sua atenção e visita ao meu blog. Fique a vontade para enviar suas críticas, sugestões, observações e comentários.

Um forte abraço, nos encontramos no próximo post a ser publicado no mês de março.

Vai SQL Server, Vai SQL Server…..

Sucesso e até mais.

Short Scripts – Março 2017


Hoje é sexta – feira, sexta – feira…

Salve, salve comunidade e amantes de bancos de dados e SQL Server, Tudo bem? Mais uma final de semana próximo após uma longa semana de muito trabalho, se eu for falar de muito trabalho, sinceramente  esta semana foi complicada, repleta de novidades e muita troca de conhecimento.

Conforme o prometido no final de 2016, estou retornando com o primeiro post da sessão Short Scripts, sessão criada a alguns anos no meu blog que lentamente esta conseguindo ajudar diversos profissionais da área de banco de dados na busca por exemplos de códigos que possam solucionar ou elucidar na resolução de um determinado problema.

O post de hoje

Como já destaquei acima, este é o primeiro post de 2017 dedicado exclusivamente a sessão Short Scripts, na relação de scritps selecionados para hoje, você vai poder encontrar códigos relacionados com os seguintes assuntos:

  • Auditoria,
  • Comando Intersect,
  • Comando OpenQuery,
  • Comando Order By,
  • Datatype Char,
  • Datatype Int,
  • DMF Sys.dm_exec_sessions,
  • DMV Sys.system_internals_partitions,
  • DMV Sys.system_internals_allocation_units,
  • Função Substring,
  • Índices,
  • Informações sobre conexão de usuário,
  • Páginas de Dados,
  • Trigger, e
  • Variáveis.

Então mãos no teclado, a seguir apresento os códigos e exemplos selecionados para o Short Script – Março 2017. Vale ressaltar que todos os scripts publicados nesta sessão são devidamente testados antes de serem publicados, mas isso não significa que você pode fazer uso dos mesmo em seu ambiente de produção, vale sim todo cuidado possível para evitar maiores problemas. Fique a vontade para compartilhar, comentar, melhorar cada um destes códigos.

Short Scripts

— Short Script 1 – Realizando Auditoria in Live —

SELECT [Spid] = session_Id
, ecid
, [Database] = DB_NAME(sp.dbid)
, [User] = nt_username
, [Status] = er.status
, [Wait] = wait_type
, [Individual Query] = SUBSTRING (qt.text,
er.statement_start_offset/2,
(CASE WHEN er.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE er.statement_end_offset END –
er.statement_start_offset)/2)
,[Parent Query] = qt.text
, Program = program_name
, Hostname
, nt_domain
, start_time
FROM sys.dm_exec_requests er
INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt
WHERE session_Id > 50              — Ignore system spids.
AND session_Id NOT IN (@@SPID)     — Ignore this current statement.
ORDER BY 1, 2
Go

— Short Script 2 – Utilizando comando Intersect com Datatypes Char e Int —

Create Table #A (x Char(2));
Go
Insert Into #A Values (‘1’);
Insert Into #A Values (‘6’);
Insert Into #A Values (‘2’);
Insert Into #A Values (‘3’);
Insert Into #A Values (‘5’);
Insert Into #A Values (‘5’);
Insert Into #A Values (‘6’);
Insert Into #A Values (‘9’);
Go
Create Table #B (M BigInt);
Go
Insert Into #B Values(5);
Insert Into #B Values(5);
Insert Into #B Values(6);
Insert Into #B Values(7);
Insert Into #B Values(7);
Go
— (Select #1)
SELECT x AS ‘Select #1’ FROM #A
INTERSECT SELECT M FROM #B
Go
— (Select #2)
SELECT DISTINCT(x) AS ‘Select #2’
FROM #A LEFT OUTER JOIN #B
ON #A.x = #B.M
Go
— (Select #3)
SELECT DISTINCT(x) AS ‘Select #3’
FROM #A LEFT OUTER JOIN #B
ON #A.x = #B.M
Go
— (Select #4)
SELECT DISTINCT(x) AS ‘Select #4’
FROM #A INNER JOIN #B
ON #A.x = #B.M
Go
— (Select #5)
SELECT x AS ‘Select #5’
FROM #A INNER JOIN #B
ON #A.x = #B.M
Go
— Short Script 3 – Utilizando comando OpenQuery com variáveis —
— Valores Básicos —
DECLARE @TSQL varchar(8000), @VAR char(2)
SELECT  @VAR = ‘teste’
SELECT  @TSQL = ‘SELECT * FROM OPENQUERY(MeuLinkedServer,”SELECT * FROM MinhaTabela WHERE User = ””’ + @VAR + ”””’)’
EXEC (@TSQL)
Go
— Query Complexa —
DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000)
SET @LinkedServer = ‘MyLinkedServer’
SET @OPENQUERY = ‘SELECT * FROM OPENQUERY(‘+ @LinkedServer + ‘,”’
SET @TSQL = ‘SELECT au_lname, au_id FROM pubs..authors”)’
EXEC (@OPENQUERY+@TSQL)
— Use o Sp_executesql procedimento armazenado —
DECLARE @VAR char(2)
SELECT  @VAR = ‘CA’
EXEC MyLinkedServer.master.dbo.sp_executesql
N’SELECT * FROM pubs.dbo.authors WHERE state = @state’,
N’@state char(2)’,
@VAR
Go
— Short Script 4 – Realizando order by com base na função SubString —
Declare @Tabela Table
(Codigo VarChar(15))
Insert Into @Tabela Values(‘191-XXX-003’)
Insert Into @Tabela Values(‘192-XXX-003’)
Insert Into @Tabela Values(‘193-XXX-003’)
Insert Into @Tabela Values(‘194-XXX-003’)
Insert Into @Tabela Values(‘195-XXX-003’)
Insert Into @Tabela Values(‘191-XXX-001’)
Insert Into @Tabela Values(‘192-XXX-001’)
Insert Into @Tabela Values(‘193-XXX-001’)
Insert Into @Tabela Values(‘194-XXX-001’)
Insert Into @Tabela Values(‘195-XXX-001’)
Insert Into @Tabela Values(‘191-XXX-002’)
Insert Into @Tabela Values(‘192-XXX-002’)
Insert Into @Tabela Values(‘193-XXX-002’)
Insert Into @Tabela Values(‘194-XXX-002’)
Insert Into @Tabela Values(‘195-XXX-002’)
Select * from @Tabela
Order By SubString(codigo,Len(Codigo)-2,3) Asc
Go
— Short Script 5 – Monitorando querys em execução —
SELECT
DES.SESSION_ID,
DES.CPU_TIME,
DES.READS,
DES.WRITES,
DES.LOGICAL_READS,
DES.ROW_COUNT,
DER.SESSION_ID,
DES.STATUS,
DES.HOST_NAME,
DES.PROGRAM_NAME,
DES.LOGIN_NAME,
DES.ORIGINAL_LOGIN_NAME,
DEC.CLIENT_NET_ADDRESS,
DEC.AUTH_SCHEME,
DEC.NET_TRANSPORT,
SUBSTRING(T.[TEXT], DER.[STATEMENT_START_OFFSET] / 2,
COALESCE(NULLIF(DER.[STATEMENT_END_OFFSET], – 1) / 2, 2147483647)) AS COMANDO
FROM
SYS.DM_EXEC_SESSIONS AS DES
INNER JOIN SYS.DM_EXEC_REQUESTS DER
ON DER.BLOCKING_SESSION_ID = DES.SESSION_ID
INNER JOIN SYS.DM_EXEC_CONNECTIONS DEC
ON DEC.SESSION_ID = DES.SESSION_ID
INNER JOIN SYS.DM_EXEC_REQUESTS DER2
ON DER2.SESSION_ID = DES.SESSION_ID
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(DER.[SQL_HANDLE]) AS T
GO
— Short Script 6 – Identificando tabelas e suas respectivas páginas de dados —
— Exemplo 1: —
SELECT P.partition_id,
OBJECT_NAME(P.object_id) As ObjectName,
U.allocation_unit_id,
SU.First_Page,
SU.Root_Page,
SU.First_IAM_Page
From Sys.Partitions As P INNER JOIN Sys.Allocation_Units As U
ON P.hobt_id = U.container_id
Inner Join Sys.system_internals_allocation_units SU
On u.allocation_unit_id = su.allocation_unit_id
Go
— Exemplo 2: —
SELECT SIP.partition_id,
OBJECT_NAME(SIP.object_id) As ObjectName,
sip.rows,
SU.First_Page,
SU.Root_Page,
SU.First_IAM_Page
From Sys.system_internals_partitions As SIP Inner Join Sys.system_internals_allocation_units SU
On sip.partition_id = su.allocation_unit_id
Go
— Short Script 7 – Identificando índices com Escrita Excessiva —
— Quantidade de Índices com Escrita Excessiva em comparação a leitura —
SELECT  OBJECT_NAME(s.object_id),
i.name,
i.type_desc
FROM    sys.dm_db_index_usage_stats s WITH ( NOLOCK ) Inner JOIN sys.indexes i WITH (NOLOCK)
ON s.index_id = i.index_id
AND s.object_id = i.object_id
WHERE OBJECTPROPERTY(s.[object_id], ‘IsUserTable’) = 1
AND s.database_id = DB_ID()
AND s.user_updates > ( s.user_seeks + s.user_scans + s.user_lookups )
AND s.index_id > 1
Go
— Quantidade de Índices com Escrita Excessiva —
SELECT  COUNT(*)
FROM    sys.dm_db_index_usage_stats s WITH ( NOLOCK )
WHERE   OBJECTPROPERTY(s.[object_id], ‘IsUserTable’) = 1
AND s.database_id = DB_ID()
AND s.user_updates > ( s.user_seeks + s.user_scans + s.user_lookups )
AND s.index_id > 1
Go
— Short Script 8 – Identificando o espaço ocupado por conexões em uso —
SELECT A.session_id,
B.host_name, B.Login_Name ,
(user_objects_alloc_page_count + internal_objects_alloc_page_count)*1.0/128 as TotalalocadoMB,
D.Text
FROM sys.dm_db_session_space_usage A Inner JOIN sys.dm_exec_sessions B
ON A.session_id = B.session_id
Inner JOIN sys.dm_exec_connections C
ON C.session_id = B.session_id
CROSS APPLY sys.dm_exec_sql_text(C.most_recent_sql_handle) As D
WHERE A.session_id > 50
and (user_objects_alloc_page_count + internal_objects_alloc_page_count)*1.0/128 > 100 — Ocupam mais de 100 MB
ORDER BY totalalocadoMB desc
COMPUTE sum((user_objects_alloc_page_count + internal_objects_alloc_page_count)*1.0/128)
Go
— Short Script 9 – Obtendo a diferença de datas entre registro anterior e o próximo registro —
Create Table Datas
(ID Int Identity(1,1),
DataInicio Date,
DataFinal Date)
Go
Insert Into Datas Values (GETDATE(), GETDATE()+30)
Insert Into Datas Values (GETDATE()+1, GETDATE()+20)
Insert Into Datas Values (GETDATE()+2, GETDATE()+10)
Insert Into Datas Values (GETDATE(), GETDATE()+5)
Go
— Exemplo 1 —
Select I.ID, I.DataInicio, F.DataFinal,
DateDiff(D, I.DataInicio, F.DataFinal) As Intervalo
From Datas I Left Join Datas F
On I.ID = F.ID + 1

Go

— Exemplo 2 —
SELECT
[current].Id,
[current].Time CurrentValue,
[next].Time          NextValue
FROM #temp AS [current] LEFT JOIN #temp AS [next]
ON [next].Id = (SELECT MIN(Id) FROM #temp

                                 WHERE Id > [current].Id)
Go
— Short Script 10 – Criando um trigger condicional —
–Criando a Table de Novos Produtos–
Create Table NovosProdutos
(Codigo Int Identity(1,1),
Descricao VarChar(10))
–Criando a Table de Histórico Novos Produtos–
Create Table HistoricoNovosProdutos
(Codigo Int,
Descricao VarChar(10))
Go
–Inserindo valores —
Insert Into Novosprodutos Values(‘Arroz’)
Insert Into Novosprodutos Values(‘Arroz1’)
Insert Into Novosprodutos Values(‘Arroz2’)
Insert Into Novosprodutos Values(‘Arroz3’)
Go
–Criando a Trigger para controle de histórico–
Create TRIGGER T_Historico
ON NovosProdutos
for update
AS
IF (Select Descricao from Inserted) <> (Select Descricao from Deleted)
BEGIN
INSERT Into HistoricoNovosProdutos (Codigo, Descricao)
SELECT Codigo, Descricao FROM INSERTED
END
Go
–Fazendo os teste —
Update NovosProdutos
Set Descricao=’Arroz 4′
Where Codigo = 1
Go
Update NovosProdutos
Set Descricao=’Arroz1′
Where Codigo = 2
Go
Select * from NovosProdutos
Go

Muito bem, mais uma relação de short scripts acaba de ser compartilhada, mesmo sendo denominados short entre aspas “pequenos”, posso garantir que todos estes exemplos são de grande importância e apresentam um valor e conhecimento do mais alto nível.


Chegamos ao final de mais um Short Scripts, espero que este material possa lhe ajudar, ilustrando o uso de alguns recursos e funcionalidades do Microsoft SQL Server.

Acredito que você tenha observado que estes códigos são bastante conhecidos em meu blog, todos estão relacionados aos posts dedicados ao Microsoft SQL Server publicados no decorrer dos últimos anos.

Boa parte deste material é fruto de um trabalho dedicado exclusivamente a colaboração com a comunidade, visando sempre encontrar algo que possa ser a solução de um determinado problema, bem como, a demonstração de como se pode fazer uso de um determinado recurso.

Links

Caso você queira acessar os últimos posts desta sessão, não perca tempo acesse os links listados abaixo:

Agradecimento

Mais uma vez obrigado por sua visita, um forte abraço…

Nos encontramos em breve nos próximos posts desta e outras sessões do meu blog, valeu.

#11 – Para que serve


Boa tarde, boa tarde, boa tardeeeeee…..

Tudo bem pessoal?

Hoje 16 de Dezembro, data inesquecível para qualquer corinthiano, estamos completando mais um aniversário da fantástica e memorável conquista do Mundial de Clubes da Fifa, melhor dizendo o Bi-Campeonato Mundial de Clubes em 2012.

Fico honrado com a sua ilustre visita, seja bem – vindo mais uma vez ao meu blog, espero que você consiga encontrar o que esta procurando ou algo que possa lhe agradar.

Este é mais um post da sessão Para que serve, lançada no início de 2016 e que esta chegando ao post de número 11, isso mesmo estamos no décimo primeiro post dedicado a esta sessão que aos poucos esta conseguindo se tornar uma referência de conhecimento diferenciado no meu Blog.

Após esta tradicional saudação, chegou a hora de falar sobre o #11 – Para que serve de hoje, tenho a certeza que você vai gostar….


Introdução

Como você já deve ter percebido os posts relacionados a esta sessão tem o objetivo de apresentar ou até mesmo em outros casos demonstrar como exemplos de código, aplicativos, utilitários, entre outros elementos envolvidos a banco de dados ou gerenciadores de bancos de dados dentro eles o Microsoft SQL Server podem ser utilizados para se obter uma possível solução de um problema, como em outros casos orientar na sua forma de utilização.

Para o post de hoje vou destacar um script que utilizei no decorrer desta semana, na área de uma determinada aplicação, o mesmo não foi a solução do meu problema, mas ajuda de forma considerável.

Basicamente a minha necessidade era identificar ao longo de um período de tempo quais tipos de objetos estavam gerando e acumulando cache em uma instância de banco de dados Microsoft SQL Server 2014, foi justamente para este cenário que de maneira direta realizei o uso da DMF – Dynamic Management Function – sys.dm_exec_cached_plans implementada a partir da versão 2008 do Microsoft SQL Server.

Sys.dm_exec_cached_plans

Esta foi uma das primeiras DMF adicionadas pelo time de desenvolvimento do Microsoft SQL Server na versão 2008, onde a Microsoft introduziu uma nova forma de gerenciamento um servidor ou instância de Banco de Dados.

A sys.dm_exec_cachec_plan tem como finalidade principal retornao conjunto de linhas relacionadas para cada plano de consulta armazenada em cache mantido em memória no SQL Server, possibilitando assim uma execução do conjunto de recursos que necessitam destes objetos de forma mais rápido e simplificada.

Você pode usar essa função de gerenciamento dinâmico para encontrar e identificar dados em tempo real relacionados a:

  • Cached Query Plans;
  • Cached Query Text;
  • Quantidade de memória usada pelo plan cached; e
  • Quantidade de reutilização de plan cached.

Para muitos profissionais, a sys_dm_exec_cached_plans é considerada uma das DMFs mais fácies e práticas para ser utilizada em atividades de análise e manutenção de um banco de dados, devido principalmente por possuir uma sintaxe simples que não requer parâmetros adicionais no momento da sua execução.

#11 Para que serve – Identificando os tipos de cache e quantidade armazenada no Query Plan —

Agora que conhecemos um pouco do que esta relacionada com este post, vamos então conhecer este script que poderá nos ajudar a obter todas as possíveis informações relacionadas aos tipos de cache e demais dados relacionados com esta importante área de armazenamento em memória do Microsoft SQL Server.

Para isso vamos utilizar o Bloco de Código apresentado a seguir, que demonstra como a sys_dm_exec_cached_plans pode ser utilizada:

– Bloco de Código —

sys_dm_exec_cached_plans

Realizando uma rápida análise, fica fácil observar que o uso desta DMF realmente é muito simples, como também, trata-se de um bloco de código com um nível de complexidade muito pequena, onde estamos fazendo uso do conjunto de colunas existente na própria DMF.

A parte mais complexa do código esta relacionado a contagem do total de planos gerados e armazenados em cached para cada tipo de recurso, em conjunto com o total em megabytes ocupado em memória pelo mesmo. Vale ressaltar que este bloco de código foi testado e validado a partir da versão 2008 e demais versões: R2, 2012, 2014 e também 2016.

Após executarmos o bloco de código apresentando anteriormente, o Management Studio deverá retornar um conjunto de colunas e valores similares ao apresentado na Figura 1 apresentada abaixo:

sys_dm_exec_cached_plans-2Figura 1 – Relação de tipos de cache e suas respectivas quantidades armazenadas e memória ocupada.

Agora fica mais fácil notar a existência das colunas Cache TypeTotal Plans e Total MBs, são justamentes estas as colunas que nos permitem encontrar as informações relacionadas aos tipos de cache, total de planos armazenados e espaço ocupado em memória em nosso servidor ou instância de bancos de dados Microsoft SQL Server.

Falando um pouco sobre estas três colunas é possível observar:

Cache Type: Esta coluna apresenta os tipos de cache identificados pela sys_dm_exec_cached_plans.

Total Plans: Retorna a quantidade de Plan Cached armazenadas em tempo real para os respectivos tipos de cache coletados na sys_dm_exec_cached_plans.

Total MBs: Apresenta a quantidade de memória ocupada para cada Cache Type identificados pela sys.dm_exec_plans, sendo este valor correspondente ao total armazenado ao longo do tempo de execução da instância ou servidor de banco de dados, com base, no último processo de reinicialização.

Acredito que agora ficou bem mais fácil entender os dados retornados após o processamento do bloco de código, como também, o que esta DMF pode nos oferecer de recursos em um momento de análise mais aprofundada do uso dos tipos de cached.

Referências

https://msdn.microsoft.com/en-us/library/ms187404.aspx

https://msdn.microsoft.com/en-us/library/ms189488.aspx

https://msdn.microsoft.com/en-us/library/ms179875.aspx

https://msdn.microsoft.com/en-us/library/ms189747.aspx

Links

Caso você ainda não tenha acessado os posts anteriores desta sessão, fique tranquilo é fácil e rápido, basta selecionar uns dos links apresentados a seguir:

https://pedrogalvaojunior.wordpress.com/2016/11/15/10-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2016/10/08/09-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2016/08/06/07-para-que-serve/

Conclusão

Administrar um banco de dados não é uma tarefa das mais complicadas do mundo, mas quando se referimos em administratar um servidor de banco de dados ou conjunto de servidores de bancos de dados o cenário com certeza muda bastante.

Foi pensando neste tipo de situação que compartilhei com vocês hoje este script no #11 – Para que serve, que apresenta como podemos de maneira fácil, rápida, segura e muito prática encontrar informações relacionadas aos tipos de cache existentes no Microsoft SQL Server, suas respectivas quantidades armazenadas e principalmente o espaço ocupado.

Esta não é uma atividade que você vai realizar todos os dias, particularmente falando, foram poucas as vezes que tive a real necessidade de mergulhar mais a fundo nesta parte de uma instância ou servidor de banco de dados, mas sempre vale a pena conhecer, saber que este de funcionalidade existe e pode ser utilizada de forma rápida e prática.

Agradecimentos

Mais uma vez obrigado por sua visita, agradeço sua atenção, fique a vontade para enviar suas críticas, sugestões, observações e comentários.

Aproveitando este final de ano, quero lhe desejar um Feliz Natal e Próspero Ano Novo.

Nos encontramos em breve, até lá…..

Dica do Mês – SQL Server 2016 – Obtendo informações sobre o cache de execução de funções


Pessoal, boa tarde.

Tudo bem? Estou retornando com mais um post dedicado a sessão Dica do Mês, este é o post de número 10 dedicado de forma exclusiva a esta sessão.

Recentemente alguns dos leitores do meu blog, fizeram alguns comentários e sugestões pedindo para que eu fosse um pouco mais objetivo no conteúdo e procurando organizar melhor a estrutura do post.

Quero dizer a todos que sugestões, críticas, comentários, enfim tudo é sempre muito bem vindo e estou ainda procurando estabelecer um padrão. No post de hoje, já começo a apresentar um pouco do layout e organização que pretenso manter para os próximos posts.

Então vamos lá, seja bem vindo a mais um Dica do Mês!!!


Introdução

Um das principais atividades de um DBA (Database Administrator) é cuidar e selar para vida de seus servidores e bancos de dados. Mas por diversas situações em alguns momentos algo pode fugir do controle ou simplesmente começar a funcionar de uma maneira diferente da qual estava sendo executado.

Isso também pode acontecer com o Microsoft SQL Server e seus recursos programavéis, dentre eles aqueles que os desenvolvedores tendem a criar para atender necessidades específicas em seus projetos.

Para tais recursos como: Stored Procedure, Triggers, Functions o Microsoft SQL Server apresenta uma infinidade de funcionalidades que permitem a cada versão ou até mesmo atualização serem implementados de maneiras e formas distintas, situação muito comum de se encontrar.

O post de hoje trata justamente uma situação muito corriqueira de se encontrar dentro de um ambiente de banco de dados, no qual estamos fazendo uso de user functions e precisamos de alguma maneira descobrir se esta função esta gerando algum tipo de mudança de comportamento durante ou após sua execução, estou me referindo as chamadas estatísticas de execução.

Problema

Em diversos momentos temos a necessidade obter informações sobre as estatísticas de processamento por parte de um determinado recurso que o Microsoft SQL Server possa estar processando ou tenha sido processado, até o Microsoft SQL Server 2000 essa uma tarefa muito árdua ou praticamente impossível de ser realizada de maneira rápida, cenário que começou a mudar um pouco de comportamento a partir do Microsoft SQL Server 2005.

Solução

A partir da versão 2005 a Microsoft introduziu o conceito de visões de sistemas que permitiam coletar dados estatísticos de execução de querys, posteriormente melhorado no Microsoft SQL Server 2008 a partir da adição do recurso de DMV – Dynamic Management Views, onde tinhamos a possibilidade de rastrear e encontrar informações sobre Stored Procedures e Triggers, através das DMVs:

Onde respectivamente estas DMVs, permitiam obter informações sobre os dados de execução de Stored Procedures e Triggers executadas.

Agora na versão 2016 a Microsoft introduziu no novo SQL Server uma nova DMV, chamada sys.dm_exec_function_stats, que nos permite obter informações sobre os dados estatísticos de processamento e execucação de uma user function.

Vamos então colocar a “mão na massa” ou melhor nos teclados e executar o exemplo apresentando abaixo para que possamos entender como esta nova dmv poderá nos ajudar.

Exemplo

Para que possamos realizar este cenário de exemplo vou utilizar o Microsoft SQL Server 2016 Express em conjunto com o banco de dados de exemplo Microsoft SQL Server 2016 Adventure Works disponibilizados nos seguinte link: https://www.microsoft.com/download/details.aspx?id=49502

Dando continuidade vamos executar o primeiro bloco de código, denominado Bloco de Código 1.

— Bloco de Código 1 —

bloco-de-codigo-1

 

Não se precoupe com a lógica aplicada ao código, o importante é que você observe a existência de três user functions existentes dentro do banco de dados AdventureWorks2016, sendo elas:

  • dbo.ufnGetStock;
  • dbo.ufnGetProductDealerPrice; e
  • dbo.ufnGetProductStandardCost.

Agora que nosso bloco de código 1 foi executado o Microsoft SQL Server através do Database Engine em conjunto com Execution Plan, deve ter criado para nosso select e principalmente as functions utilizadas dentro um cache de execução contendo as informações sobre o processamento realizado e o quanto custou para executar cada function envolvida neste código.

E justamente neste momento que poderemos fazer uso da nova DMV sys.dm_exec_function_stats para obter os principais indicadores estatísticos coletados através do cache criado pelo SQL Server com base no bloco de código 1. Vamos então executar o Bloco de Código 2 apresentado abaixo.

— Bloco de Código 2 —

bloco-de-codigo-2

Observe que além da sys.dm_exec_function_stats estamos utilizando em conjunto a sys.dm_exec_sql_text que nos permite obter mais detalhes sobre o código do objeto programado executado, neste caso as functions apresentadas anteriormente.

A Figura 1 apresentada abaixo ilustra a relação de dados estatísticos armazenando no cache de execução do database engine e coletados através da  sys.dm_exec_function_stats:

figura1-sys-dm_exec_function_statsFigura 1 – Dados estatísticos de processamento das functions utilizadas no bloco de código 1.

Referências

Conclusão

Como de costume a cada nova versão ou atualização a Microsft esta apresentando diversas inovações e melhorias no Microsoft SQL Server.

Isso não foi diferente na versão 2016 que agora através da nova DMV sys.dm_exec_function_stats nos permite obter informações estatísticas de processamento de nossas functions armazenadas em cache.

Desta forma, temos a possibilidade de analisar estes dados e permitir ter uma melhor análise de processamento por parte das aplicações que necessitam fazer uso de functions, com certeza este recurso será muito importante e de extrema utilidade para qualquer profissional da área de banco de dados e desenvolvimento.

Agradecimentos

Mais uma vez obrigado por sua visita, agradeço sua atenção, fique a vontade para enviar suas críticas, sugestões, observações e comentários.

Até mais.

Material de Apoio – Abril – 2013


Salve, salve, comunidade.

Começo de mais um mês, nossa já estamos em Abril, meu deus como o tempo passa rápido.

Pois bem, como de costume estou de volta com mais uma relação referente aos meus Materiais de Apoio.

10:18 – Log renomeado.

Na relação de Hoje, vou disponibilizar Scripts e Códigos de Exemplo sobre:

  • Transaction Log;
  • Liberação de Permissões;
  • Buffers e Cache de Memória;
  • Operadores Exists e Not Exists;
  • Permissão Grant All Privileges;
  • Database Snapshot;
  • Retornando Valores por extenso através de uma Stored Procedure;
  • Set Page_Verify – None e CheckSum, entre outros.

Segue abaixo a relação de arquivos, por padrão renomeados com a extensão .doc para garantir a compatibilidade com a plataforma WordPress.com

Exemplo – Leitura – Transaction Log.sql

Exemplo – Liberando Permissão Grant para tables.sql

Exemplo – Limpando Buffer e Cache de Memória.sql

Exemplo – Operadores – Exists – Not Exists.sql

Exemplo – Permissão – Grant All Privileges.sql

Exemplo – Restaurando – Database Snapshot.sql

Exemplo – SP – Retornando Valor Por Extenso.sql

Exemplo – Tempo restante para finalizar execução do backup.sql

Exemplo – Trabalhando – Begin Transaction + Commit Transaction.sql

Exemplo – Utilizando – Operador – Cross Apply.sql

Exemplo – Utilizando – Select + Case When.sql

Exemplo – Utilizando – Set Page_Verify – None ou CheckSum.sql

Exemplo – Utilizando Função – Db_Name() e User_Name().sql

Exemplo – Utilizando função – Row_Number.sql

Após o download dos arquivos, basta remover a extensão .doc mantendo a extensão .sql. Todos os Scripts foram testados no Microsoft SQL Server 2008 e Microsoft SQL Server 2008 R2.

Fique a vontade para compartilhar este material com seus amigos, colegas e contatos profissionais e acadêmicos.

Agradeço a sua visita, fique a vontade para dividir sua opinião sobre este post.

Nos encontramos em breve.

Até mais.

Utilizando a Ferramenta Surface Area Configuration no Microsoft SQL Server 2008 R2 através de Política de Gerenciamento.


Olá pessoal, tudo bem com vocês?

Hoje gostaria de destacar para vocês uma das maiores funcionalidades adicionados ao Microsoft SQL Server, conhecida como Surface Area Configuration, presente desde a versão 2005, mas que na versão 2008 acabou sendo integrada a uma nova funcionalidade denominada Política de Gerenciamento ou Policy Management.

Presente no Microsoft SQL Server 2005, a Surface Area Configuration, foi introduzida como uma ferramenta que permitia ao administrador visualizar e gerenciar o estado de inicialização dos serviços instalados no Microsoft SQL Server 2005, independente da quantidade de instâncias instaladas.

Administrando servidores com Gerenciamento Baseado em Políticas

A partir do Microsoft SQL Server 2008, a Microsoft introduziu um novo conceito de gerenciamento e administração de recursos e funcionalidades de instâncias SQL Server, através do próprio Management Studio, como também, utilizando o Policy Management, sendo este, composto por um conjunto de configurações de políticas de segurança para tornar ainda mais segura o processo de administração de qualquer Servidor Microsoft SQL Server.

Gerenciamento Baseado em Políticas é um sistema para gerenciar uma ou mais instâncias do SQL Server 2008. Quando os administradores de políticas do SQL Server usam o Gerenciamento Baseado em Políticas, eles usam o SQL Server Management Studio para criar políticas para gerenciar entidades no servidor, como as instâncias do SQL Server, bancos de dados ou outros objetos do SQL Server.

O Gerenciamento Baseado em Políticas tem três componentes:

  • Gerenciamento de política: Os administradores de políticas criam políticas.
  • Administração explícita: Os administradores selecionam um ou mais destinos gerenciados e verificam explicitamente se eles estão de acordo com uma política específica, ou explicitamente fazem com que os destinos estejam de acordo com uma política.
  • Modos de avaliação: Há quatro modos de avaliação, três dos quais podem ser automatizados:
  1.                                                                i.      Sob demanda. Este modo avalia a política quando especificado diretamente pelo usuário.
  2.                                                              ii.      Ao alterar: impedir. Esse modo automatizado usa gatilhos DDL para impedir violações de política.
  1.                                                           iii.      Ao alterar: log apenas. Este modo automatizado usa a notificação de eventos para avaliar uma política quando uma alteração relevante é feita.

 

  1.                                                            iv.      Ao agendar. Este modo automatizado usa um trabalho do SQL Server Agent para avaliar periodicamente uma política.

Foi a partir deste novo contexto que o Surface Area Configuration deixou de ser utilizado como uma ferramenta externa e passou a ser integrado a este novo ambiente, mas de forma discreta e praticamente desconhecida por boa parte dos profissionais.

A meu ver um ponto falho em que a Microsoft subestimou o conhecimento e uso desta ferramenta por parte dos profissionais, conhecedores, especialistas e amantes do Microsoft SQL Server. Mas independente de qualquer opinião, esta ferramenta ainda esta presente, o que nos fortalece a possibilidade de fazermos uso de seus recursos.

Termos e conceitos do Gerenciamento Baseado em Políticas

  • Destino gerenciado pelo Gerenciamento Baseado em Políticas: As entidades gerenciadas pelo Gerenciamento Baseado em Políticas, como uma instância do Mecanismo de banco de dados do SQL Server, um banco de dados, uma tabela ou um índice. Todos os destinos em uma instância de servidor formam uma hierarquia de destino. Um conjunto de destino é aquele resultante da aplicação de um conjunto de filtros de destino à hierarquia de destino.
  • Faceta do Gerenciamento Baseado em Políticas: Um conjunto de propriedades lógicas que modelam o comportamento ou as características de certos tipos de destinos gerenciados. O número e as características das propriedades são incorporados à faceta e só podem ser adicionados ou removidos pelo criador da faceta. Um tipo de destino pode programar uma ou mais facetas de gerenciamento, e uma faceta de gerenciamento pode ser implementada por um ou mais tipos de destino. Algumas propriedades de uma faceta só podem ser aplicadas a uma versão específica. Por exemplo, a propriedade Database Mail da faceta Configuração da Área da Superfície só se aplica ao SQL Server 2005 e versões posteriores.
  • Condição de Gerenciamento Baseado em Políticas: Uma expressão booleana que especifica um conjunto de estados permitidos de um destino gerenciado pelo Gerenciamento Baseado em Políticas em relação a uma faceta de gerenciamento.
  • Política de Gerenciamento Baseado em Políticas: Uma condição do Gerenciamento Baseado em Políticas e o comportamento esperado, como, por exemplo, modo de avaliação, filtros de destino e agenda. Uma política só pode conter uma condição. As políticas podem ser habilitadas ou desabilitadas.
  • Categoria de política do Gerenciamento Baseado em Políticas: Uma categoria definida pelo usuário para ajudar a gerenciar políticas. Os usuários podem classificar as políticas em categorias diferentes. Uma política pertence a somente uma categoria. Categorias de políticas se aplicam a bancos de dados e servidores. No nível de banco de dados, as seguintes condições se aplicam:
  • Os proprietários de banco de dados podem assinar um conjunto de categorias de política para um banco de dados.
  • Somente as políticas das categorias assinadas podem governar um banco de dados.
  • Todos os bancos de dados assinam implicitamente a categoria de política padrão.

No nível de servidor, é possível aplicar categorias de políticas a todos os bancos de dados.

Política efetiva: As políticas efetivas de um destino são aquelas que governam esse destino. Uma política só será efetiva em relação a um destino se todas as seguintes condições forem satisfeitas:

  • A política está habilitada.
  • O destino pertence ao conjunto de destino da política.
  • O destino ou um dos destinos ancestrais assina o grupo de políticas que contém essa política.

Bom, após este pequeno overview sobre o Policy Management, seus termos, conceitos e formas de administração, vou destacar um pouco de como o Surface Area Configuration é definido no Microsoft SQL Server 2008 R2.

Compreendendo o Surface Area Configuration

Na configuração padrão de novas instalações do SQL Server, muitos recursos não estão habilitados. O SQL Server instala de forma seletiva e inicia somente os principais serviços e recursos, para minimizar o número de recursos que podem ser atacados por um usuário mal-intencionado.

Um administrador de sistema pode alterar esses padrões no momento da instalação e também seletivamente habilitar ou desabilitar recursos de uma instância em execução do SQL Server. Além disso, alguns componentes podem não estar disponíveis ao estabelecer conexão a partir de outros computadores até que os protocolos sejam configurados.

Importante destacar, que ao contrário das novas instalações, nenhum serviço ou recurso existente é desativado durante uma atualização, mas as opções adicionais de configuração da área da superfície poderão ser aplicadas após a conclusão da atualização.

Utilizando o Surface Area Configuration de forma básica

Para trabalharmos com o Surface Area Configuration no Management Studio é bastante simples, seguindo os passos apresentados abaixo:

A habilitação e desabilitação de recursos do SQL Server podem ser configuradas usando as facetas no SQL Server Management Studio. Para configurar área da superfície usando as facetas:

  1. No Management Studio, conecte-se a sua instância do SQL Server.
  2. No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e clique em Facetas, conforme apresenta a Figura 1.

Figura 1 – Opção Facetas no Management Studio.

3. Na caixa de diálogo Exibir Facetas, expanda a lista Faceta e selecione a faceta Configuração da área da superfície apropriada, conforme apresenta a Figura 2. Por padrão estas facetas estão definidas em três categorias:

    1. Configuração       da área da superfície;
    2. Configuração       da área da superfície para o Analysis Services; e
    3. Configuração da área da superfície para o Reporting Services.

Figura 2 – Tela de Configuração das Facetas de acordo com a categoria selecionada.

A seguir apresenta somente as opções disponíveis para faceta Surface Area Configuration, conforme ilustra a Figura 3:

Figura 3 – Relação de Opções disponíveis para faceta Surface Area Configuration.

  1. Na área Propriedades da faceta, selecione os valores desejados para cada propriedade. Ou se preferir selecione, por exemplo, a Faceta DatabaseMailEnabled.
  2. Clique em OK.

Pronto, desta forma simples acabamos de realizar a ativação de uma faceta no Microsoft SQL Server 2008 R2, que posteriormente estará sendo refletido no comportamento e configuração de sua instância.

Algo que pode parecer muito similar a utilização da System Stored Procedure SP_Configure, quando estamos se referindo a configuração de recursos específicos do nosso servidor como no procedimento que realizamos anteriormente, executando o processo de ativação do Database Mail, que pode ser feito de ambas as formas, tanto por SP_Configure, como também por configuração de Facetas em Nível de Servidor.

Combinando o uso do Surface Area Configuration com a SP_Configure

Como destacado anteriormente a configuração de algumas facetas disponíveis através do Policy Management, com base no Surface Area Configuration pode ser comparado e até mesmo utilizado como alternativa á System Stored Procedure SP_Configure.

Pois bem, por procurar destacar como podemos através de cada um destes recursos fazer uso de funcionalidades do Microsoft SQL Server 2008 R2, como por exemplo, ativar o uso da Extended Stored Procedure XP_CMDShell. Começando pelo uso da Stored Procedure para ativação da XP_CMDShell, conforme apresentado abaixo:

  1. 1.       Ativando a XP_CMDShell e consultando seu status através das Facetas de Servidor:

Por se tratar de uma funcionalidade externa e também um recurso que pode possibilitar o acesso indevido a um usuário mal intencionado o Microsoft SQL Server, por padrão mantém este recurso oculto, bem como, desativado. Vamos então realizar o processo de ativação desta funcionalidade e posteriormente consultar o seu status através da Faceta, conforme o código apresentado abaixo:

sp_configure ‘ xp_cmdshell’,1

reconfigure with override

Após executar este pequeno bloco de código, vamos consultar o valor atribuído para Faceta Surface Area Configuration em sua propriedade DatabaseMailEnabled, utilizando os passos realizados anteriormente. Para ilustrar o valor da propriedade DatabaseMailEnabled, apresento a Figura 4:

Figura 4 – Propriedades disponíveis para faceta Surface Area Configuration, em especial a propriedade DatabaseMailEnabled.

Como já esperado ao executar a SP_Configure, o propriedade DatabaseMailEnabled, teve o seu valor alterado de False para True, o que representa que acabamos de alterar o seu valor e ativar esta funcionalidade para nossa instância de banco de dados.

O próximo passo é realizar justamente o mesmo procedimento, só que de forma inversa, alterando o valor na propriedade e consultado o seu status através da SP_Configure.

  1. Desativando a XP_CMDShell e consultando seu status através da SP_Configure:

Como a tela de Visualização de Facetas já esta aberta e também com a categoria Surface Area Configuration selecionada, vamos alterar o valor da propriedade DatabaseMailEnabled, alterando o seu valor de True para False e depois clicando no botão Ok.

Agora vamos executar o bloco de código apresenta abaixo para obter o retorno da alteração do status da propriedade DatabaseMailEnabled:

sp_configure ‘xp_cmdshell’

Ótimo, nossa alteração foi realizada de forma correta e neste momento a XP_CMDShell voltou ao seu status padrão, ou seja, esta desativada, conforme podemos observar a Figura 5, com base na valor apresentado na coluna Run_Value, retornado como zero (Zero), o que indica pelo SQL Server que o recurso, funcionalidade e propriedade esta desativada:

Figura 5 – Resultado da execução da System Stored Procedure SP_Configure.

Utilizando o Surface Area Configuration de forma avançada

Nossa última jornada será realizar a configuração de uma nova política disponível para o Surface Area Configuration, com base, no conjunto de condições (conditions) e facetas (facets) disponíveis no Policy Management (Gerenciador de Políticas).

Vamos então configurar uma nova Condição, conforme os passos apresentados abaixo:

  1. Conecte-se ao seu Servidor ou Instância SQL Server;
  2. No Explorador de Objetos (Object Explorer), navegue até o Menu Gerenciamento (Management);
  3. Selecione a opção Condições (Conditions), clicando com o botão da direita do mouse e escolhendo a opção Nova Condição (New Condition);
  4. Como base na Figura 6, realize a configuração da sua nova condição, utilizando os seguintes valores:
    1. Name: Condição – Ativar – AdHocRemoteQueries;
    2. Facet: Surface Area Configuration;
    3. Expression:
      1.                                                                           i.      Field: @ADHocRemoteQueries
      2.                                                                          ii.      Operator: =
      3.                                                                        iii.      Value: True
  5. Clique no botão Ok, para confirmar a criação desta nova condição.

Figura 6 – Tela de Configuração da Condição – Ativar – AdHocRemoteQueries.

Pronto, nossa nova condição esta configurado e criada, agora devemos configurar nossa nova política que estará fazendo uso desta condição e de sua faceta. Para isso, vamos realizar os seguintes passos:

  1. Utilizando o menu Management aberto, clique como o botão da direita sobre a opção Políticas (Policies), selecionando a opção Nova Política (New Policy);
  2. Como base na Figura 7, realize a configuração da sua nova condição, utilizando os seguintes valores:
    1. Name: Política – Ativando – AdHocRemoteQueries;
    2. Check Condition: Condição – Ativar – AdHocRemoteQueries;
    3. Evalution Mode: On Change: Log Only;
    4. Server Restriction: None; e
    5. Marque a opção Ativo (Enabled).
  3. Clique no botão Ok, para confirmar a criação desta nova política.

Figura 7 – Tela de Configuração da Política – Ativando – AdHocRemoteQueries.

Muito bem, nossa política esta criada e definida para ser executa somente quando o log de eventos sofre algum tipo de mudança que possa estar relacionada com esta política. Mas caso você queria testar ou avaliar a execução desta política, basta clicar com o botão da direita do mouse sobre a ela e escolher a opção Evaluate(Avaliar).

Observação: Vale ressaltar que estes procedimentos podem somente ser executados por usuários com permissões de nível de System Administrator, Security Administrator, Server Administrator ou Setup Administrator.

Itens relacionados

A seguir apresenta a relação de Stored Procedures que podem ser utilizadas com as Políticas de Gerenciamento

sp_syspolicy_add_policy_category   sp_syspolicy_rename_policy_category  
sp_syspolicy_add_policy_category_subscription   sp_syspolicy_repair_policy_automation
sp_syspolicy_configure sp_syspolicy_set_config_enabled
sp_syspolicy_delete_policy_category   sp_syspolicy_set_config_history_retention
sp_syspolicy_delete_policy_category_subscription   sp_syspolicy_set_log_on_success
sp_syspolicy_delete_policy_execution_history   sp_syspolicy_subscribe_to_policy_category
sp_syspolicy_purge_health_state   sp_syspolicy_unsubscribe_from_policy_category
sp_syspolicy_purge_history sp_syspolicy_update_policy_category
sp_syspolicy_rename_condition sp_syspolicy_update_policy_category_subscription
sp_syspolicy_rename_policy

Perfeito pessoal acredito ter conseguido cumprir o meu objetivo e mostrar de uma forma bastante simples como podemos utilizar o Surface Area Configuration dentro do Microsoft SQL Server 2008 R2.

Espero que você possa ter gostado, mais uma vez agradeço a sua visita, o seu interesse o meu blog, conto com sua participação.

Nos vemos em breve.

Um grande abraço, até a próxima

Microsoft SQL Server 2008 Service Pack 3 Released!


Microsoft SQL Server 2008 Service Pack 3 fornece soluções de hotfix do SQL Server 2008 SP2 CU 1 para CU4 de resolução de solicitações dos clientes com segurança e problemas de capacidade de suporte. Server Pack 3 aumenta o valor para os clientes com 113 novo cliente controlada por pedidos e 201 portado do SQL Server 2008 SP2 CU1-CU4 e do Yukon SP4 para ajudar os clientes a migrar perfeitamente para o SP3.
A tabela abaixo mostra a distribuição de solicitação para o SP3 do SQL Server 2008.

Team

Scope

Other

Improvement Fixes

Porting

Team Total

Community Security Supportability Watson Deferred
Hotfix Request
PCU Readiness Must Fix Media Puller From Yukon
SP4
From Katmai
SP2 CU 1 to 4
Analysis
Services

0

4

1

0

0

0

2

0

0

0

32

39

Deployment
Platform

0

0

6

1

0

4

3

0

0

0

3

17

Integration
Services

0

4

0

0

0

0

1

0

0

2

16

23

Localization

0

0

0

0

0

1

1

0

0

3

0

5

Manageability

1

5

3

0

0

0

6

0

0

0

15

30

Massively Parallel Data Warehousing

0

0

0

0

0

0

2

0

2

0

0

4

Release
Services

0

0

0

0

0

3

0

0

0

0

0

3

Reporting
Services

1

1

1

0

0

2

6

0

0

0

23

34

SQL
Connectivity

0

1

0

0

0

0

0

0

0

2

4

7

SQL Engine

2

16

2

3

8

3

31

0

3

10

91

169

SubTotal

4

31

13

4

8

13

52

0

5

17

184

331

Links relacionados e downloads:
Fontes e Direitos Autorais: Abhishek Sinha, Program Manager – SQL Server Servicing Experience.

Obtendo informações sobre fragmentação com a sys.dm_db_index_physical_stats no SQL Server 2008 e R2


Pessoal, boa noite.

Tudo bem? Gostaria de dividir com vocês mais uma experiência vivida nos últimos em um dos meus clientes. Desta vez, vou falar um pouco sobre fragmentação de dados.

Pois bem, a fragmentação de dados é um processo natural que ocorre diariamente em qualquer base de dados, pelo simples motivo da ocorrência de manipulação de registro através dos comandos DML – Data Manipulation Languagem, sendo eles: Insert, Update e Delete.

A fragmentação trata-se de uma consequência da entrada, saída e atualização das linhas de registro que forma nossas tabelas, índices e que ficam armazenadas diretamente em suas páginas de dados.

Muito bem, esta fragmentação pode gerar diversos problemas, dentre eles:

  • Lentidão;
  • Aumento no tempo de processamento para realização de transações;
  • Locks e bloqueios de tabelas e dados;
  • Aumento no custo de processamento para o SQL Server realizar suas transações internas a fim de concluir seus processos administrativos;
  • Aumento no espaço no alocada de informação, gerando um crescimento no tamanho dos arquivos de dados;
  • Aumento nos arquivos de backups; e
  • Aumento no tempo para realização e restauração de um backup.

Com base neste conjunto de situações, em um dos mais atuais clientes, realizei diversas análises com objetivo de procurar entender como a fragmentação esta sendo gerada e de que forma poderia resolver este problema neste momento.

Foi através de algumas consultas ao Books On-Line que encontrei a Função de Gerenciamento Dinâmico chamada: sys.dm_db_index_physical_stats, presente a partir do SQL Server 2008. Mas qual é a finalidade desta função? Para este respostas vou utilizar as informações do próprio Books On-Line:

A sys.dm_db_index_physical_stats: “Retorna informações de tamanho e fragmentação dos dados e índices da tabela ou exibição especificada. Para um índice, uma linha é retornada para cada nível da árvore B em cada partição. Para um heap, uma linha é retornada para a unidade de alocação de IN_ROW_DATA de cada partição. Para dados LOB (objeto grande), uma linha é retornada para a unidade de alocação de LOB_DATA de cada partição. Se houver dados de estouro de linha na tabela, uma linha será retornada para a unidade de alocação de ROW_OVERFLOW_DATA em cada partição.”

Analisando este definição, ficou fácil entender qual a finalidade desta função de gerenciamento dinâmico. Muito bem, agora me restava saber como utilizar, e ai mais uma vez o bom e velho Books On-Line me ajudou, apresentando como sempre alguns exemplos que podem ajudar em muito, dentre os exemplos existentes, utilizei o exemplo referente a Reconstrução e Reorganização de Índices, mas com algumas customizações para a minha necessidade, denominado Exemplo 1, conforme apresento a seguir:

Exemplo 1: Utilizando a sys.dm_db_index_physical_stats em um script para reconstruir ou reorganizar índices SET NOCOUNT ON;

DECLARE @objectid int;
DECLARE @indexid int;
DECLARE @partitioncount bigint;
DECLARE @schemaname nvarchar(130);
DECLARE @objectname nvarchar(130);
DECLARE @indexname nvarchar(130);
DECLARE @partitionnum bigint;
DECLARE @partitions bigint;
DECLARE @frag float;
DECLARE @command nvarchar(4000);

SELECT
object_id AS Id_Objeto,
index_id AS Id_Indice,
partition_number AS PartitionNumber,
avg_fragmentation_in_percent AS Frag
INTO #CargaFragmentacaoIndices
FROM sys.dm_db_index_physical_stats (DB_ID(‘WELT_23092011’), NULL, NULL , NULL, ‘LIMITED’)
WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0;

DECLARE partitions CURSOR FOR SELECT * FROM #CargaFragmentacaoIndices;

OPEN partitions;

WHILE (1=1)
BEGIN;
FETCH NEXT FROM partitions
INTO @objectid, @indexid, @partitionnum, @frag;

IF @@FETCH_STATUS < 0 BREAK;

SELECT @objectname = QUOTENAME(o.name), @schemaname = QUOTENAME(s.name)
FROM sys.objects AS o
JOIN sys.schemas as s ON s.schema_id = o.schema_id
WHERE o.object_id = @objectid;

SELECT @indexname = QUOTENAME(name)
FROM sys.indexes
WHERE  object_id = @objectid AND index_id = @indexid;

SELECT @partitioncount = count (*)
FROM sys.partitions
WHERE object_id = @objectid AND index_id = @indexid;

       — Nesta parte do código realizo a análise para identificar com base na % de fragmentação qual procedimento deveria ser realizado, dentre eles: Reorganizar ou Recriar o Índice —

        IF @frag < 40.0
SET @command = N’ALTER INDEX ‘ + @indexname + N’ ON ‘ + @schemaname + N’.’ + @objectname + N’ REORGANIZE’;

IF @frag >= 50.0
SET @command = N’ALTER INDEX ‘ + @indexname + N’ ON ‘ + @schemaname + N’.’ + @objectname + N’ REBUILD’;

IF @partitioncount > 1
SET @command = @command + N’ PARTITION=’ + CAST(@partitionnum AS nvarchar(10));

EXEC (@command);
PRINT N’Executed: ‘ + @command;
END;

CLOSE partitions;
DEALLOCATE partitions;

DROP TABLE #CargaFragmentacaoIndices;
GO

Vale ressaltar que antes da execução do Exemplo 1, boa parte das tabelas apresentavam taxas de fragmentação de 75% á 98%, valores que normalmente são considerados altos o que dificultam em muito os processos de consulta de dados.

Após a execução do Exemplo 1, os valores médios de fragmentação não passavam de 75%, lógicamente fazendo a soma de todos os índices vinculados as tabelas. Em algumas tabelas as valores de fragmentação praticamente não sofreram mudanças, mas por outro lado tabelas que estava apresentando área de espaço alocado de forma desnecessária foi identificado uma redução de 48%, algo que representa-se muito em espaço de armazenamento.

Estas tabelas que sofreram uma diminuição em seu tamanho de espaço em disco, foram também as que mais tiveram suas taxas de fragmentação reduzidas entre 10% e 25%.

Mas uma pergunta continuava e ser feita, porque não é possível zerar a fragmentação de dados, mesmo após a execução de procedimentos como DBCC INDEXDEFRAG e DBCC DBREINDEX. A resposta é simples!!!

Não podemos eliminar totalmente a fragmentação de uma tabela ou índice sem realizar processos de análise e desfragmentação de suas páginas de dados, pois como os dados são alocados constantemente nestas páginas, sempre estará ocorrendo a movimentação de dados ou fragmentados de dados entre as páginas, armazenados diretamente em nossos discos rígidos.

Para que possamos tentar zerar se possível a fragmentação de dados, temos que procurar entender toda arquitetura das páginas de dados, sua forma de alocação de dados, sequência de armazenamento, extensão, espaço livre e ocupado para cada tabela e índices.

Bom, vou encerrar este dica aqui, espero que estas informações possam ser úteis em suas atividades.

Agradeço a sua visita, nos encontramos em breve.

Até mais.

Liberado – Cumulative update package 6 para SQL Server 2008 Service Pack 2


A Microsoft esta liberando a partir de hoje, um novo pacote cumulativo de atualizações para o Microsoft SQL Server 2008 Service Pack 2, trata-se do CU6 ou Cumulative Update Package 6.

A seguir destaco mais informações extraídas do Site de Suporte da Microsoft:

Pacote de atualização cumulativa 6 para Microsoft SQL Server 2008 Service Pack 2 (SP2) contém hotfixes para problemas do SQL
Server 2008 que foram resolvidos após o lançamento do SQL Server 2008 SP2.
Observação: Esta compilação do pacote de atualização cumulativa também é conhecido como build 10.00.4321.0.
É recomendável que você teste hotfixes antes de implantá-los em um ambiente de produção. Porque as compilações são cumulativas, cada nova versão de atualização contém todos os hotfixes e atualização de todas as atualizações de segurança que foram incluídas com o SQL Server 2008 anterior versão. Recomendamos que você considere a aplicação a mais recente versão de atualização que contém esse hotfix.
Para obter mais informações, clique no seguinte número de artigo para visualizar o artigo na Base de dados de conhecimento da
Microsoft: 2402659 compilações do SQL Server 2008 lançados após o SQL Server 2008 Service Pack 2 foi lançado.
Notas importantes sobre o pacote de atualização cumulativa: Pacote de atualização cumulativa do SQL Server 2008 agora oferece suporte a vários idiomas. Portanto, um pacote de atualização pode ser aplicado a todos os idiomas com suporte.
Pacote de atualização cumulativa de uma porta inclui atualizações para todos os pacotes do componente.
No entanto, o pacote de atualização cumulativa atualiza apenas os componentes que são instalados em um sistema.
Como obter o pacote de actualização cumulativa 6 para SQL Server 2008 SP2:
Um pacote de atualização com suporte agora está disponível na Microsoft. No entanto, destina-se a corrigir apenas os problemas descritos neste artigo. Aplicá-lo apenas a sistemas que tenham esses problemas específicos. Este pacote de actualização cumulativa poderá receber testes adicionais. Portanto, se não estiver a ser gravemente afectado por qualquer destes problemas, recomendamos que você aguarde o próximo service pack do SQL Server 2008 que contém os hotfixes neste pacote de atualização cumulativa.
Se a atualização está disponível para download, há uma seção de “Download do Hotfix disponível” na parte superior deste artigo da Base de conhecimento. Se esta seção não aparecer, entre em contato com o atendimento ao cliente Microsoft e suporte para obter o pacote de actualização cumulativa.
Observação: Se ocorrer problemas adicionais ou qualquer solução de problemas é necessária, talvez você precise criar uma solicitação de serviço separada. Os custos de suporte normais serão aplicados a questões de suporte adicional e problemas que
não se qualificam para este pacote de atualização cumulativa específica.
Para obter uma lista completa de números de telefone de suporte e atendimento ao cliente Microsoft ou para criar uma solicitação de serviço separado, visite o seguinte site da Microsoft: http://support.Microsoft.com/contactus/?WS=support
Observação: O formulário “Hotfix Download disponível” exibe os idiomas para os quais a atualização cumulativa está disponível. Se você não vir seu idioma, é porque um pacote de atualização não está disponível para esse idioma.
Informações sobre o arquivo: Este pacote de atualização cumulativa não pode conter todos os arquivos que você deve ter para uma atualização completa de um produto para a compilação mais recente. Este pacote de actualização cumulativa contém apenas os arquivos que você deve ter para resolver o problema que listados neste artigo.
A versão em inglês deste pacote de atualização tem os atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir.
As datas e horas destes arquivos são listadas no tempo Universal Coordenado (UTC). Quando você exibe as informações do arquivo, ele é convertido em Hora local. Para determinar a diferença entre o UTC e a hora local, use a guia fuso horário no item data e hora no painel de controle.
x64-based version 
SQL Server 2008 Database Services Core Shared
File name File version File size Date Time Platform
Bcp.exe 2007.100.4321.0 103,776 04-Sep-2011 01:56 x64
Commanddest.dll 2007.100.4321.0 247,136 04-Sep-2011 01:54 x64
Datacollectorenumerators.dll 2007.100.4321.0 93,536 04-Sep-2011 01:54 x64
Distrib.exe 2007.100.4321.0 86,880 04-Sep-2011 01:56 x64
Dts.dll 2007.100.4321.0 2,208,096 04-Sep-2011 01:54 x64
Dtscomexpreval.dll 2007.100.4321.0 473,440 04-Sep-2011 01:54 x64
Dtsconn.dll 2007.100.4321.0 449,376 04-Sep-2011 01:54 x64
Dtspipeline.dll 2007.100.4321.0 1,089,376 04-Sep-2011 01:54 x64
Dtspipelineperf100.dll 2007.100.4321.0 42,336 04-Sep-2011 01:54 x64
Dtswizard.exe 2007.100.4321.0 800,608 04-Sep-2011 01:58 x64
Exceldest.dll 2007.100.4321.0 260,448 04-Sep-2011 01:54 x64
Excelsrc.dll 2007.100.4321.0 279,904 04-Sep-2011 01:54 x64
Flatfiledest.dll 2007.100.4321.0 414,560 04-Sep-2011 01:54 x64
Flatfilesrc.dll 2007.100.4321.0 423,776 04-Sep-2011 01:54 x64
Iftsph.dll 2007.100.4321.0 54,624 04-Sep-2011 01:53 x64
Logread.exe 2007.100.4321.0 511,328 04-Sep-2011 01:56 x64
Mergetxt.dll 2007.100.4321.0 33,632 04-Sep-2011 01:53 x64
Microsoft.sqlserver.dmf.dll 10.0.4321.0 300,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.management.sdk.sfc.dll 10.0.4321.0 403,296 02-Sep-2011 18:26 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 01:56 x86
Microsoft.sqlserver.replication.dll 2007.100.4321.0 1,766,752 04-Sep-2011 02:36 x86
Microsoft.sqlserver.replication.dll 2007.100.4321.0 1,940,320 04-Sep-2011 01:56 x64
Microsoft.sqlserver.rmo.dll 10.0.4321.0 563,040 04-Sep-2011 02:36 x86
Microsoft.sqlserver.smo.dll 10.0.4321.0 2,860,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.smoextended.dll 10.0.4321.0 182,112 04-Sep-2011 02:36 x86
Microsoft.sqlserver.sqlenum.dll 10.0.4321.0 1,083,232 02-Sep-2011 18:26 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 01:55 x86
Oledbdest.dll 2007.100.4321.0 259,936 04-Sep-2011 01:57 x64
Oledbsrc.dll 2007.100.4321.0 286,048 04-Sep-2011 01:57 x64
Rawdest.dll 2007.100.4321.0 192,864 04-Sep-2011 01:57 x64
Rawsource.dll 2007.100.4321.0 182,112 04-Sep-2011 01:57 x64
Rdistcom.dll 2007.100.4321.0 792,928 04-Sep-2011 01:57 x64
Recordsetdest.dll 2007.100.4321.0 166,240 04-Sep-2011 01:57 x64
Replagnt.dll 2007.100.4321.0 18,784 04-Sep-2011 02:32 x86
Replagnt.dll 2007.100.4321.0 19,296 04-Sep-2011 01:57 x64
Repldp.dll 2007.100.4321.0 191,840 04-Sep-2011 02:32 x86
Repldp.dll 2007.100.4321.0 230,752 04-Sep-2011 01:57 x64
Replmerg.exe 2007.100.4321.0 409,440 04-Sep-2011 01:56 x64
Replsync.dll 2007.100.4321.0 125,280 04-Sep-2011 01:57 x64
Snapshot.exe 10.0.4321.0 13,152 04-Sep-2011 01:57 x86
Spresolv.dll 2007.100.4321.0 216,416 04-Sep-2011 01:56 x64
Sql_engine_core_shared_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64
Sqlcmd.exe 2007.100.4321.0 341,344 04-Sep-2011 01:56 x64
Sqllogship.exe 10.0.4321.0 96,096 04-Sep-2011 01:57 x86
Sqlmergx.dll 2007.100.4321.0 229,728 04-Sep-2011 01:48 x64
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqlsvc.dll 2007.100.4321.0 130,912 04-Sep-2011 01:48 x64
Sqltaskconnections.dll 2007.100.4321.0 161,120 04-Sep-2011 01:48 x64
Sqlwep100.dll 2007.100.4321.0 119,648 04-Sep-2011 01:48 x64
Ssradd.dll 2007.100.4321.0 45,920 04-Sep-2011 01:48 x64
Ssravg.dll 2007.100.4321.0 46,432 04-Sep-2011 01:48 x64
Ssrdown.dll 2007.100.4321.0 30,048 04-Sep-2011 01:48 x64
Ssrmax.dll 2007.100.4321.0 44,384 04-Sep-2011 01:48 x64
Ssrmin.dll 2007.100.4321.0 44,384 04-Sep-2011 01:48 x64
Ssrpub.dll 2007.100.4321.0 30,560 04-Sep-2011 01:48 x64
Ssrup.dll 2007.100.4321.0 29,536 04-Sep-2011 01:48 x64
Txagg.dll 2007.100.4321.0 365,920 04-Sep-2011 01:48 x64
Txdataconvert.dll 2007.100.4321.0 304,992 04-Sep-2011 01:48 x64
Txderived.dll 2007.100.4321.0 618,336 04-Sep-2011 01:48 x64
Txlookup.dll 2007.100.4321.0 535,392 04-Sep-2011 01:48 x64
Txmerge.dll 2007.100.4321.0 232,288 04-Sep-2011 01:48 x64
Txmergejoin.dll 2007.100.4321.0 272,736 04-Sep-2011 01:48 x64
Txrowcount.dll 2007.100.4321.0 89,440 04-Sep-2011 01:48 x64
Txsort.dll 2007.100.4321.0 246,112 04-Sep-2011 01:48 x64
Txsplit.dll 2007.100.4321.0 611,168 04-Sep-2011 01:48 x64
SQL Server 2008 Database Services Core Instance
File name File version File size Date Time Platform
Databasemailengine.dll 10.0.4321.0 75,616 04-Sep-2011 01:57 x86
Databasemailprotocols.dll 10.0.4321.0 42,848 04-Sep-2011 01:57 x86
Rsfxft.dll 2007.100.4321.0 25,440 04-Sep-2011 01:56 x64
Sql_engine_core_inst_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64
Sqlaccess.dll 2007.100.4321.0 412,000 04-Sep-2011 01:53 x86
Sqlagent.exe 2007.100.4321.0 430,944 04-Sep-2011 01:56 x64
Sqlctr100.dll 2007.100.4321.0 108,384 04-Sep-2011 01:56 x64
Sqlctr100.dll 2007.100.4321.0 73,056 04-Sep-2011 02:32 x86
Sqlscriptdowngrade.dll 2007.100.4321.0 33,120 04-Sep-2011 01:48 x64
Sqlscriptupgrade.dll 2007.100.4321.0 3,608,416 04-Sep-2011 01:48 x64
Sqlserverspatial.dll 2007.100.4321.0 474,464 04-Sep-2011 01:48 x64
Sqlservr.exe 2007.100.4321.0 57,985,376 04-Sep-2011 01:56 x64
Sqlsvc.dll 2007.100.4321.0 130,912 04-Sep-2011 01:48 x64
Sqsrvres.dll 2007.100.4321.0 105,824 04-Sep-2011 01:48 x64
Xpstar.dll 2007.100.4321.0 546,656 04-Sep-2011 01:48 x64
SQL Server 2008 Database Services Common Core
File name File version File size Date Time Platform
Microsoft.analysisservices.adomdclient.dll 10.0.4321.0 546,656 04-Sep-2011 01:57 x86
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Microsoft.analysisservices.xmla.dll 10.0.4321.0 227,168 04-Sep-2011 01:57 x86
Microsoft.sqlserver.management.sdk.sfc.dll 10.0.4321.0 403,296 02-Sep-2011 18:26 x86
Microsoft.sqlserver.rmo.dll 10.0.4321.0 563,040 04-Sep-2011 01:56 x86
Microsoft.sqlserver.smo.dll 10.0.4321.0 2,860,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.smoextended.dll 10.0.4321.0 182,112 04-Sep-2011 01:56 x86
Microsoft.sqlserver.sqlenum.dll 10.0.4321.0 1,083,232 02-Sep-2011 18:26 x86
Msgprox.dll 2007.100.4321.0 202,592 04-Sep-2011 02:36 x86
Msgprox.dll 2007.100.4321.0 246,112 04-Sep-2011 01:53 x64
Replerrx.dll 2007.100.4321.0 109,408 04-Sep-2011 02:32 x86
Replerrx.dll 2007.100.4321.0 134,496 04-Sep-2011 01:57 x64
Replisapi.dll 2007.100.4321.0 272,224 04-Sep-2011 02:32 x86
Replisapi.dll 2007.100.4321.0 377,696 04-Sep-2011 01:57 x64
Replprov.dll 2007.100.4321.0 576,864 04-Sep-2011 02:32 x86
Replprov.dll 2007.100.4321.0 729,440 04-Sep-2011 01:57 x64
Replrec.dll 2007.100.4321.0 791,392 04-Sep-2011 02:34 x86
Replrec.dll 2007.100.4321.0 978,784 04-Sep-2011 01:54 x64
Replsub.dll 2007.100.4321.0 412,000 04-Sep-2011 02:32 x86
Replsub.dll 2007.100.4321.0 493,408 04-Sep-2011 01:57 x64
Sql_common_core_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64
Sqlmgmprovider.dll 2007.100.4321.0 259,936 04-Sep-2011 02:32 x86
Sqlmgmprovider.dll 2007.100.4321.0 361,312 04-Sep-2011 01:48 x64
Xmlsub.dll 2007.100.4321.0 192,352 04-Sep-2011 02:22 x86
Xmlsub.dll 2007.100.4321.0 308,064 04-Sep-2011 01:48 x64
SQL Server 2008 Business Intelligence Development Studio
File name File version File size Date Time Platform
Commanddest.dll 2007.100.4321.0 164,704 04-Sep-2011 02:36 x86
Ddsshapeslib.dll 2007.100.4321.0 46,944 04-Sep-2011 02:38 x86
Dts.dll 2007.100.4321.0 1,431,904 04-Sep-2011 02:36 x86
Dtscomexpreval.dll 2007.100.4321.0 334,176 04-Sep-2011 02:36 x86
Dtsconn.dll 2007.100.4321.0 285,024 04-Sep-2011 02:36 x86
Dtspipeline.dll 2007.100.4321.0 696,160 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 32,608 04-Sep-2011 02:36 x86
Dtswizard.exe 2007.100.4321.0 804,704 04-Sep-2011 02:38 x86
Exceldest.dll 2007.100.4321.0 173,408 04-Sep-2011 02:36 x86
Excelsrc.dll 2007.100.4321.0 183,136 04-Sep-2011 02:36 x86
Flatfiledest.dll 2007.100.4321.0 276,320 04-Sep-2011 02:36 x86
Flatfilesrc.dll 2007.100.4321.0 284,000 04-Sep-2011 02:36 x86
Mdxquerygenerator.dll 10.0.4321.0 87,904 04-Sep-2011 02:38 x86
Microsoft.analysisservices.controls.dll 10.0.4321.0 3,233,632 04-Sep-2011 02:38 x86
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Microsoft.analysisservices.project.dll 2007.100.4321.0 1,988,448 04-Sep-2011 02:38 x86
Microsoft.datatransformationservices.design.dll 10.0.4321.0 4,233,056 04-Sep-2011 02:38 x86
Microsoft.datatransformationservices.vsintegration.dll 10.0.4321.0 333,664 04-Sep-2011 02:38 x86
Microsoft.reportingservices.chartwebcontrol.dll 10.0.4321.0 2,828,128 04-Sep-2011 02:36 x86
Microsoft.reportingservices.chartwincontrol.dll 10.0.4321.0 3,827,552 04-Sep-2011 02:36 x86
Microsoft.reportingservices.dataextensions.xmlaclient.dll 10.0.4321.0 563,040 04-Sep-2011 02:36 x86
Microsoft.reportingservices.datarendering.dll 10.0.4321.0 83,808 04-Sep-2011 02:36 x86
Microsoft.reportingservices.designer.controls.dll 10.0.4321.0 12,437,344 04-Sep-2011 02:36 x86
Microsoft.reportingservices.designer.dll 10.0.4321.0 661,344 04-Sep-2011 02:36 x86
Microsoft.reportingservices.diagnostics.dll 10.0.4321.0 911,200 04-Sep-2011 02:36 x86
Microsoft.reportingservices.excelrendering.dll 10.0.4321.0 251,744 04-Sep-2011 02:36 x86
Microsoft.reportingservices.gaugewebcontrol.dll 10.0.4321.0 1,570,656 04-Sep-2011 02:36 x86
Microsoft.reportingservices.hpbprocessing.dll 10.0.4321.0 284,512 04-Sep-2011 02:36 x86
Microsoft.reportingservices.htmlrendering.dll 10.0.4321.0 198,496 04-Sep-2011 02:36 x86
Microsoft.reportingservices.imagerendering.dll 10.0.4321.0 149,344 04-Sep-2011 02:36 x86
Microsoft.reportingservices.processingcore.dll 10.0.4321.0 4,343,648 04-Sep-2011 02:36 x86
Microsoft.reportingservices.querydesigners.dll 10.0.4321.0 2,123,616 04-Sep-2011 02:36 x86
Microsoft.reportingservices.rdlobjectmodel.dll 10.0.4321.0 829,280 04-Sep-2011 02:36 x86
Microsoft.reportingservices.reportpreview.dll 10.0.4321.0 567,136 04-Sep-2011 02:36 x86
Microsoft.reportingservices.richtext.dll 10.0.4321.0 104,288 04-Sep-2011 02:36 x86
Microsoft.reportingservices.rplobjectmodel.dll 10.0.4321.0 87,904 04-Sep-2011 02:36 x86
Microsoft.reportingservices.spbprocessing.dll 10.0.4321.0 247,648 04-Sep-2011 02:36 x86
Microsoft.reportingservices.wordrendering.dll 10.0.4321.0 227,168 04-Sep-2011 02:36 x86
Microsoft.sqlserver.dataprofiler.dll 10.0.4321.0 280,416 04-Sep-2011 02:37 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.maintenanceplantasksui.dll 10.0.4321.0 759,648 04-Sep-2011 02:37 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 02:36 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 02:35 x86
Msmdlocal.dll 10.0.4321.0 23,523,168 04-Sep-2011 02:36 x86
Msmdlocal.dll 10.0.4321.0 44,530,016 04-Sep-2011 01:53 x64
Msmdpp.dll 10.0.4321.0 6,131,552 04-Sep-2011 02:36 x86
Msmgdsrv.dll 10.0.4321.0 12,339,040 04-Sep-2011 01:55 x64
Msmgdsrv.dll 10.0.4321.0 8,568,160 04-Sep-2011 02:35 x86
Msolap100.dll 10.0.4321.0 6,536,032 04-Sep-2011 02:36 x86
Msolap100.dll 10.0.4321.0 8,154,976 04-Sep-2011 01:53 x64
Oledbdest.dll 2007.100.4321.0 173,920 04-Sep-2011 02:32 x86
Oledbsrc.dll 2007.100.4321.0 186,720 04-Sep-2011 02:32 x86
Rawdest.dll 2007.100.4321.0 128,864 04-Sep-2011 02:32 x86
Rawsource.dll 2007.100.4321.0 120,672 04-Sep-2011 02:32 x86
Recordsetdest.dll 2007.100.4321.0 115,552 04-Sep-2011 02:32 x86
Reportingserviceslibrary.dll 10.0.4321.0 1,337,184 04-Sep-2011 02:33 x86
Reportingservicesnativeclient.dll 2007.100.4321.0 129,376 04-Sep-2011 02:33 x86
Sql_bids_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64
Sqldest.dll 2007.100.4321.0 180,064 04-Sep-2011 02:32 x86
Sqlmanagerui.dll 10.0.4321.0 7,563,104 04-Sep-2011 02:33 x86
Sqlmgmt.dll 10.0.4321.0 3,471,200 04-Sep-2011 02:33 x86
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqlsvc.dll 2007.100.4321.0 130,912 04-Sep-2011 01:48 x64
Sqltaskconnections.dll 2007.100.4321.0 113,504 04-Sep-2011 02:32 x86
Txagg.dll 2007.100.4321.0 242,528 04-Sep-2011 02:23 x86
Txbestmatch.dll 2007.100.4321.0 444,256 04-Sep-2011 02:23 x86
Txcharmap.dll 2007.100.4321.0 195,424 04-Sep-2011 02:23 x86
Txdataconvert.dll 2007.100.4321.0 206,688 04-Sep-2011 02:23 x86
Txderived.dll 2007.100.4321.0 414,048 04-Sep-2011 02:23 x86
Txfileextractor.dll 2007.100.4321.0 126,816 04-Sep-2011 02:23 x86
Txfileinserter.dll 2007.100.4321.0 125,280 04-Sep-2011 02:23 x86
Txgroupdups.dll 2007.100.4321.0 258,400 04-Sep-2011 02:23 x86
Txlineage.dll 2007.100.4321.0 68,448 04-Sep-2011 02:23 x86
Txlookup.dll 2007.100.4321.0 354,656 04-Sep-2011 02:23 x86
Txmerge.dll 2007.100.4321.0 138,080 04-Sep-2011 02:23 x86
Txmergejoin.dll 2007.100.4321.0 179,552 04-Sep-2011 02:23 x86
Txpivot.dll 2007.100.4321.0 129,888 04-Sep-2011 02:23 x86
Txrowcount.dll 2007.100.4321.0 65,376 04-Sep-2011 02:23 x86
Txscd.dll 2007.100.4321.0 127,840 04-Sep-2011 02:22 x86
Txsort.dll 2007.100.4321.0 163,680 04-Sep-2011 02:22 x86
Txsplit.dll 2007.100.4321.0 410,464 04-Sep-2011 02:22 x86
Txtermextraction.dll 2007.100.4321.0 8,608,096 04-Sep-2011 02:22 x86
Txtermlookup.dll 2007.100.4321.0 4,088,160 04-Sep-2011 02:22 x86
Txunpivot.dll 2007.100.4321.0 128,352 04-Sep-2011 02:22 x86
SQL Server 2008 Analysis Services
File name File version File size Date Time Platform
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Msmdlocal.dll 10.0.4321.0 23,523,168 04-Sep-2011 02:36 x86
Msmdlocal.dll 10.0.4321.0 44,530,016 04-Sep-2011 01:53 x64
Msmdpump.dll 10.0.4321.0 7,431,520 04-Sep-2011 01:53 x64
Msmdredir.dll 10.0.4321.0 6,210,400 04-Sep-2011 02:36 x86
Msmdspdm.dll 10.0.4321.0 178,016 04-Sep-2011 01:55 x86
Msmdsrv.exe 10.0.4321.0 43,804,000 04-Sep-2011 01:56 x64
Msmgdsrv.dll 10.0.4321.0 12,339,040 04-Sep-2011 01:55 x64
Msmgdsrv.dll 10.0.4321.0 8,568,160 04-Sep-2011 02:35 x86
Msolap100.dll 10.0.4321.0 6,536,032 04-Sep-2011 02:36 x86
Msolap100.dll 10.0.4321.0 8,154,976 04-Sep-2011 01:53 x64
Sql_as_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64
SQL Server 2008 Reporting Services
File name File version File size Date Time Platform
Mdxquerygenerator.dll 10.0.4321.0 87,904 04-Sep-2011 01:57 x86
Microsoft.analysisservices.modeling.dll 10.0.4321.0 567,136 04-Sep-2011 01:57 x86
Microsoft.reportingservices.authorization.dll 10.0.4321.0 71,520 04-Sep-2011 01:57 x86
Microsoft.reportingservices.chartwebcontrol.dll 10.0.4321.0 2,828,128 04-Sep-2011 01:57 x86
Microsoft.reportingservices.dataextensions.xmlaclient.dll 10.0.4321.0 563,040 04-Sep-2011 01:57 x86
Microsoft.reportingservices.processingcore.dll 10.0.4321.0 4,343,648 04-Sep-2011 01:57 x86
Microsoft.reportingservices.wordrendering.dll 10.0.4321.0 227,168 04-Sep-2011 01:57 x86
Sql_rs_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64
Sqlrsos.dll 2007.100.4321.0 15,200 04-Sep-2011 01:48 x64
SQL Server 2008 Management Studio
File name File version File size Date Time Platform
Bcp.exe 2007.100.4321.0 103,776 04-Sep-2011 01:56 x64
Commanddest.dll 2007.100.4321.0 164,704 04-Sep-2011 02:36 x86
Databasemailwizard.exe 10.0.4321.0 595,808 04-Sep-2011 02:38 x86
Datacollectorenumerators.dll 2007.100.4321.0 69,472 04-Sep-2011 02:36 x86
Dts.dll 2007.100.4321.0 1,431,904 04-Sep-2011 02:36 x86
Dtscomexpreval.dll 2007.100.4321.0 334,176 04-Sep-2011 02:36 x86
Dtsconn.dll 2007.100.4321.0 285,024 04-Sep-2011 02:36 x86
Dtsinstall.exe 10.0.4321.0 427,872 04-Sep-2011 02:38 x86
Dtspipeline.dll 2007.100.4321.0 696,160 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 32,608 04-Sep-2011 02:36 x86
Dtswizard.exe 2007.100.4321.0 804,704 04-Sep-2011 02:38 x86
Exceldest.dll 2007.100.4321.0 173,408 04-Sep-2011 02:36 x86
Excelsrc.dll 2007.100.4321.0 183,136 04-Sep-2011 02:36 x86
Flatfiledest.dll 2007.100.4321.0 276,320 04-Sep-2011 02:36 x86
Flatfilesrc.dll 2007.100.4321.0 284,000 04-Sep-2011 02:36 x86
Microsoft.datatransformationservices.design.dll 10.0.4321.0 4,233,056 04-Sep-2011 02:38 x86
Microsoft.datatransformationservices.vsintegration.dll 10.0.4321.0 333,664 04-Sep-2011 02:38 x86
Microsoft.reportingservices.diagnostics.dll 10.0.4321.0 911,200 04-Sep-2011 02:36 x86
Microsoft.reportingservices.querydesigners.dll 10.0.4321.0 2,123,616 04-Sep-2011 02:36 x86
Microsoft.sqlserver.dataprofiler.dll 10.0.4321.0 280,416 04-Sep-2011 02:37 x86
Microsoft.sqlserver.dmf.dll 10.0.4321.0 300,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.maintenanceplantasksui.dll 10.0.4321.0 759,648 04-Sep-2011 02:37 x86
Microsoft.sqlserver.management.datacollectionuitasks.dll 10.0.4321.0 3,290,976 04-Sep-2011 02:37 x86
Microsoft.sqlserver.management.reports.dll 10.0.4321.0 8,968,032 04-Sep-2011 02:37 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 02:36 x86
Microsoft.sqlserver.replication.dll 2007.100.4321.0 1,766,752 04-Sep-2011 02:36 x86
Microsoft.sqlserver.sqltools.vsintegration.dll 10.0.4321.0 280,416 04-Sep-2011 02:35 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 02:35 x86
Microsoft.xmleditor.dll 2.0.50727.5065 741,376 19-Nov-2010 04:31 x86
Objectexplorer.dll 10.0.4321.0 3,237,728 04-Sep-2011 02:34 x86
Oledbdest.dll 2007.100.4321.0 173,920 04-Sep-2011 02:32 x86
Oledbsrc.dll 2007.100.4321.0 186,720 04-Sep-2011 02:32 x86
Pfclnt.dll 2007.100.4321.0 1,098,080 04-Sep-2011 02:34 x86
Rawdest.dll 2007.100.4321.0 128,864 04-Sep-2011 02:32 x86
Rawsource.dll 2007.100.4321.0 120,672 04-Sep-2011 02:32 x86
Recordsetdest.dll 2007.100.4321.0 115,552 04-Sep-2011 02:32 x86
Replicationmonitor.dll 10.0.4321.0 2,041,696 04-Sep-2011 02:34 x86
Reportingservicesnativeclient.dll 2007.100.4321.0 129,376 04-Sep-2011 02:33 x86
Sql_ssms_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64
Sqlcmd.exe 2007.100.4321.0 341,344 04-Sep-2011 01:56 x64
Sqldest.dll 2007.100.4321.0 180,064 04-Sep-2011 02:32 x86
Sqleditors.dll 10.0.4321.0 1,226,592 04-Sep-2011 02:33 x86
Sqlmanagerui.dll 10.0.4321.0 7,563,104 04-Sep-2011 02:33 x86
Sqlmgmt.dll 10.0.4321.0 3,471,200 04-Sep-2011 02:33 x86
Sqlresolver.dll 10.0.4321.0 38,752 04-Sep-2011 02:33 x86
Sqlserverspatial.dll 2007.100.4321.0 474,464 04-Sep-2011 01:48 x64
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqlsvc.dll 2007.100.4321.0 130,912 04-Sep-2011 01:48 x64
Sqltaskconnections.dll 2007.100.4321.0 113,504 04-Sep-2011 02:32 x86
Txagg.dll 2007.100.4321.0 242,528 04-Sep-2011 02:23 x86
Txbestmatch.dll 2007.100.4321.0 444,256 04-Sep-2011 02:23 x86
Txcharmap.dll 2007.100.4321.0 195,424 04-Sep-2011 02:23 x86
Txdataconvert.dll 2007.100.4321.0 206,688 04-Sep-2011 02:23 x86
Txderived.dll 2007.100.4321.0 414,048 04-Sep-2011 02:23 x86
Txfileextractor.dll 2007.100.4321.0 126,816 04-Sep-2011 02:23 x86
Txfileinserter.dll 2007.100.4321.0 125,280 04-Sep-2011 02:23 x86
Txgroupdups.dll 2007.100.4321.0 258,400 04-Sep-2011 02:23 x86
Txlineage.dll 2007.100.4321.0 68,448 04-Sep-2011 02:23 x86
Txlookup.dll 2007.100.4321.0 354,656 04-Sep-2011 02:23 x86
Txmerge.dll 2007.100.4321.0 138,080 04-Sep-2011 02:23 x86
Txmergejoin.dll 2007.100.4321.0 179,552 04-Sep-2011 02:23 x86
Txpivot.dll 2007.100.4321.0 129,888 04-Sep-2011 02:23 x86
Txrowcount.dll 2007.100.4321.0 65,376 04-Sep-2011 02:23 x86
Txscd.dll 2007.100.4321.0 127,840 04-Sep-2011 02:22 x86
Txsort.dll 2007.100.4321.0 163,680 04-Sep-2011 02:22 x86
Txsplit.dll 2007.100.4321.0 410,464 04-Sep-2011 02:22 x86
Txtermextraction.dll 2007.100.4321.0 8,608,096 04-Sep-2011 02:22 x86
Txtermlookup.dll 2007.100.4321.0 4,088,160 04-Sep-2011 02:22 x86
Txunpivot.dll 2007.100.4321.0 128,352 04-Sep-2011 02:22 x86
SQL Server 2008 Tools and Workstation Components
File name File version File size Date Time Platform
Ddsshapeslib.dll 2007.100.4321.0 46,944 04-Sep-2011 02:38 x86
Dts.dll 2007.100.4321.0 1,431,904 04-Sep-2011 02:36 x86
Dts.dll 2007.100.4321.0 2,208,096 04-Sep-2011 01:54 x64
Dtscomexpreval.dll 2007.100.4321.0 334,176 04-Sep-2011 02:36 x86
Dtscomexpreval.dll 2007.100.4321.0 473,440 04-Sep-2011 01:54 x64
Dtsconn.dll 2007.100.4321.0 285,024 04-Sep-2011 02:36 x86
Dtsconn.dll 2007.100.4321.0 449,376 04-Sep-2011 01:54 x64
Dtspipeline.dll 2007.100.4321.0 1,089,376 04-Sep-2011 01:54 x64
Dtspipeline.dll 2007.100.4321.0 696,160 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 32,608 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 42,336 04-Sep-2011 01:54 x64
Dtswizard.exe 2007.100.4321.0 800,608 04-Sep-2011 01:58 x64
Dtswizard.exe 2007.100.4321.0 804,704 04-Sep-2011 02:38 x86
Exceldest.dll 2007.100.4321.0 173,408 04-Sep-2011 02:36 x86
Exceldest.dll 2007.100.4321.0 260,448 04-Sep-2011 01:54 x64
Excelsrc.dll 2007.100.4321.0 183,136 04-Sep-2011 02:36 x86
Excelsrc.dll 2007.100.4321.0 279,904 04-Sep-2011 01:54 x64
Flatfiledest.dll 2007.100.4321.0 276,320 04-Sep-2011 02:36 x86
Flatfiledest.dll 2007.100.4321.0 414,560 04-Sep-2011 01:54 x64
Flatfilesrc.dll 2007.100.4321.0 284,000 04-Sep-2011 02:36 x86
Flatfilesrc.dll 2007.100.4321.0 423,776 04-Sep-2011 01:54 x64
Mdxquerygenerator.dll 10.0.4321.0 87,904 04-Sep-2011 02:38 x86
Mergetxt.dll 2007.100.4321.0 29,536 04-Sep-2011 02:36 x86
Mergetxt.dll 2007.100.4321.0 33,632 04-Sep-2011 01:53 x64
Microsoft.analysisservices.controls.dll 10.0.4321.0 3,233,632 04-Sep-2011 02:38 x86
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Microsoft.analysisservices.project.dll 2007.100.4321.0 1,988,448 04-Sep-2011 02:38 x86
Microsoft.sqlserver.chainer.infrastructure.dll 10.0.4321.0 235,360 04-Sep-2011 01:57 x86
Microsoft.sqlserver.configuration.sco.dll 10.0.4321.0 1,304,416 04-Sep-2011 01:57 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 01:56 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 01:55 x86
Msmdlocal.dll 10.0.4321.0 23,523,168 04-Sep-2011 02:36 x86
Msmdlocal.dll 10.0.4321.0 44,530,016 04-Sep-2011 01:53 x64
Msmdpp.dll 10.0.4321.0 6,131,552 04-Sep-2011 02:36 x86
Msmgdsrv.dll 10.0.4321.0 12,339,040 04-Sep-2011 01:55 x64
Msmgdsrv.dll 10.0.4321.0 8,568,160 04-Sep-2011 02:35 x86
Msolap100.dll 10.0.4321.0 6,536,032 04-Sep-2011 02:36 x86
Msolap100.dll 10.0.4321.0 8,154,976 04-Sep-2011 01:53 x64
Oledbdest.dll 2007.100.4321.0 173,920 04-Sep-2011 02:32 x86
Oledbdest.dll 2007.100.4321.0 259,936 04-Sep-2011 01:57 x64
Oledbsrc.dll 2007.100.4321.0 186,720 04-Sep-2011 02:32 x86
Oledbsrc.dll 2007.100.4321.0 286,048 04-Sep-2011 01:57 x64
Spresolv.dll 2007.100.4321.0 179,552 04-Sep-2011 02:32 x86
Spresolv.dll 2007.100.4321.0 216,416 04-Sep-2011 01:56 x64
Sql_tools_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqlsvc.dll 2007.100.4321.0 130,912 04-Sep-2011 01:48 x64
Sqltaskconnections.dll 2007.100.4321.0 113,504 04-Sep-2011 02:32 x86
Sqltaskconnections.dll 2007.100.4321.0 161,120 04-Sep-2011 01:48 x64
Ssradd.dll 2007.100.4321.0 40,800 04-Sep-2011 02:23 x86
Ssradd.dll 2007.100.4321.0 45,920 04-Sep-2011 01:48 x64
Ssravg.dll 2007.100.4321.0 41,312 04-Sep-2011 02:23 x86
Ssravg.dll 2007.100.4321.0 46,432 04-Sep-2011 01:48 x64
Ssrdown.dll 2007.100.4321.0 26,464 04-Sep-2011 02:23 x86
Ssrdown.dll 2007.100.4321.0 30,048 04-Sep-2011 01:48 x64
Ssrmax.dll 2007.100.4321.0 39,776 04-Sep-2011 02:23 x86
Ssrmax.dll 2007.100.4321.0 44,384 04-Sep-2011 01:48 x64
Ssrmin.dll 2007.100.4321.0 39,264 04-Sep-2011 02:23 x86
Ssrmin.dll 2007.100.4321.0 44,384 04-Sep-2011 01:48 x64
Ssrpub.dll 2007.100.4321.0 26,976 04-Sep-2011 02:23 x86
Ssrpub.dll 2007.100.4321.0 30,560 04-Sep-2011 01:48 x64
Ssrup.dll 2007.100.4321.0 25,952 04-Sep-2011 02:23 x86
Ssrup.dll 2007.100.4321.0 29,536 04-Sep-2011 01:48 x64
Txdataconvert.dll 2007.100.4321.0 206,688 04-Sep-2011 02:23 x86
Txdataconvert.dll 2007.100.4321.0 304,992 04-Sep-2011 01:48 x64
SQL Server 2008 Integration Services
File name File version File size Date Time Platform
Commanddest.dll 2007.100.4321.0 247,136 04-Sep-2011 01:54 x64
Dts.dll 2007.100.4321.0 2,208,096 04-Sep-2011 01:54 x64
Dtscomexpreval.dll 2007.100.4321.0 473,440 04-Sep-2011 01:54 x64
Dtsconn.dll 2007.100.4321.0 449,376 04-Sep-2011 01:54 x64
Dtsinstall.exe 10.0.4321.0 427,872 04-Sep-2011 02:38 x86
Dtspipeline.dll 2007.100.4321.0 1,089,376 04-Sep-2011 01:54 x64
Dtspipelineperf100.dll 2007.100.4321.0 42,336 04-Sep-2011 01:54 x64
Dtswizard.exe 2007.100.4321.0 800,608 04-Sep-2011 01:58 x64
Exceldest.dll 2007.100.4321.0 260,448 04-Sep-2011 01:54 x64
Excelsrc.dll 2007.100.4321.0 279,904 04-Sep-2011 01:54 x64
Flatfiledest.dll 2007.100.4321.0 414,560 04-Sep-2011 01:54 x64
Flatfilesrc.dll 2007.100.4321.0 423,776 04-Sep-2011 01:54 x64
Microsoft.sqlserver.dataprofiler.dll 10.0.4321.0 280,416 04-Sep-2011 01:57 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 01:56 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 01:55 x86
Msdtssrvr.exe 10.0.4321.0 210,784 04-Sep-2011 01:58 x64
Msmdpp.dll 10.0.4321.0 7,364,960 04-Sep-2011 01:53 x64
Oledbdest.dll 2007.100.4321.0 259,936 04-Sep-2011 01:57 x64
Oledbsrc.dll 2007.100.4321.0 286,048 04-Sep-2011 01:57 x64
Rawdest.dll 2007.100.4321.0 192,864 04-Sep-2011 01:57 x64
Rawsource.dll 2007.100.4321.0 182,112 04-Sep-2011 01:57 x64
Recordsetdest.dll 2007.100.4321.0 166,240 04-Sep-2011 01:57 x64
Sql_is_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64
Sqldest.dll 2007.100.4321.0 264,544 04-Sep-2011 01:56 x64
Sqltaskconnections.dll 2007.100.4321.0 161,120 04-Sep-2011 01:48 x64
Txagg.dll 2007.100.4321.0 365,920 04-Sep-2011 01:48 x64
Txbestmatch.dll 2007.100.4321.0 834,912 04-Sep-2011 01:48 x64
Txcharmap.dll 2007.100.4321.0 288,096 04-Sep-2011 01:48 x64
Txdataconvert.dll 2007.100.4321.0 304,992 04-Sep-2011 01:48 x64
Txderived.dll 2007.100.4321.0 618,336 04-Sep-2011 01:48 x64
Txfileextractor.dll 2007.100.4321.0 189,792 04-Sep-2011 01:48 x64
Txfileinserter.dll 2007.100.4321.0 187,744 04-Sep-2011 01:48 x64
Txgroupdups.dll 2007.100.4321.0 477,536 04-Sep-2011 01:48 x64
Txlineage.dll 2007.100.4321.0 96,096 04-Sep-2011 01:48 x64
Txlookup.dll 2007.100.4321.0 535,392 04-Sep-2011 01:48 x64
Txmerge.dll 2007.100.4321.0 232,288 04-Sep-2011 01:48 x64
Txmergejoin.dll 2007.100.4321.0 272,736 04-Sep-2011 01:48 x64
Txpivot.dll 2007.100.4321.0 201,056 04-Sep-2011 01:48 x64
Txrowcount.dll 2007.100.4321.0 89,440 04-Sep-2011 01:48 x64
Txscd.dll 2007.100.4321.0 195,424 04-Sep-2011 01:48 x64
Txsort.dll 2007.100.4321.0 246,112 04-Sep-2011 01:48 x64
Txsplit.dll 2007.100.4321.0 611,168 04-Sep-2011 01:48 x64
Txtermextraction.dll 2007.100.4321.0 8,725,344 04-Sep-2011 01:48 x64
Txtermlookup.dll 2007.100.4321.0 4,184,928 04-Sep-2011 01:48 x64
Txunpivot.dll 2007.100.4321.0 194,400 04-Sep-2011 01:48 x64
SQL Server 2008 Full-Text Search Engine
File name File version File size Date Time Platform
Fd.dll 2007.100.4321.0 686,944 04-Sep-2011 01:54 x64
Iftsph.dll 2007.100.4321.0 54,624 04-Sep-2011 01:53 x64
Lrpolish.dll 1.10.0.0 100,432 25-Aug-2011 18:28 x64
Msfte.dll 12.0.9732.0 3,813,744 25-Aug-2011 18:28 x64
Sql_fulltext_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64
SQL Server 2008 Browser Service
File name File version File size Date Time Platform
Msmdredir.dll 10.0.4321.0 6,210,400 04-Sep-2011 02:36 x86
Msmdsrv.rll 10.0.4321.0 669,536 04-Sep-2011 01:57 x86
Sqlbrowser.exe 2007.100.4321.0 254,816 04-Sep-2011 02:39 x86
SQL Server 2008 Native Client
Filename Fileversion Filesize Date Time
Instapi.dll 2005.90.1399.0 37,400 10-Jul-2008 08:28
Instapi.dll 2005.90.1399.0 44,056 10-Jul-2008 11:39
Msvcm80.dll 8.0.50727.1833 479,232 15-May-2008 03:51
Msvcp80.dll 8.0.50727.1833 558,080 15-May-2008 11:11
Msvcr80.dll 8.0.50727.1833 635,904 15-May-2008 11:14
Sqlncli_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 08:53
Sqlncli10.dll 2007.100.4321.0 2,570,080 04-Sep-2011 09:32
Sqlncli10.dll 2007.100.4321.0 3,171,680 04-Sep-2011 08:48
SQL Server 2008 Common Language Runtime
File name File version File size Date Time Platform
Sqlserverspatial.dll 2007.100.4321.0 474,464 04-Sep-2011 01:48 x64
Sqlsysclrtypes_keyfile.dll 2007.100.4321.0 14,176 04-Sep-2011 01:53 x64

x86-based version

//

SQL Server 2008 Database Services Core Shared
File name File version File size Date Time Platform
Bcp.exe 2007.100.4321.0 88,416 04-Sep-2011 02:40 x86
Commanddest.dll 2007.100.4321.0 164,704 04-Sep-2011 02:36 x86
Datacollectorenumerators.dll 2007.100.4321.0 69,472 04-Sep-2011 02:36 x86
Distrib.exe 2007.100.4321.0 75,104 04-Sep-2011 02:40 x86
Dts.dll 2007.100.4321.0 1,431,904 04-Sep-2011 02:36 x86
Dtscomexpreval.dll 2007.100.4321.0 334,176 04-Sep-2011 02:36 x86
Dtsconn.dll 2007.100.4321.0 285,024 04-Sep-2011 02:36 x86
Dtspipeline.dll 2007.100.4321.0 696,160 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 32,608 04-Sep-2011 02:36 x86
Dtswizard.exe 2007.100.4321.0 804,704 04-Sep-2011 02:38 x86
Exceldest.dll 2007.100.4321.0 173,408 04-Sep-2011 02:36 x86
Excelsrc.dll 2007.100.4321.0 183,136 04-Sep-2011 02:36 x86
Flatfiledest.dll 2007.100.4321.0 276,320 04-Sep-2011 02:36 x86
Flatfilesrc.dll 2007.100.4321.0 284,000 04-Sep-2011 02:36 x86
Iftsph.dll 2007.100.4321.0 38,240 04-Sep-2011 02:36 x86
Logread.exe 2007.100.4321.0 424,288 04-Sep-2011 02:40 x86
Mergetxt.dll 2007.100.4321.0 29,536 04-Sep-2011 02:36 x86
Microsoft.sqlserver.dmf.dll 10.0.4321.0 300,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.management.sdk.sfc.dll 10.0.4321.0 403,296 02-Sep-2011 18:26 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 02:36 x86
Microsoft.sqlserver.replication.dll 2007.100.4321.0 1,766,752 04-Sep-2011 02:36 x86
Microsoft.sqlserver.rmo.dll 10.0.4321.0 563,040 04-Sep-2011 02:36 x86
Microsoft.sqlserver.smo.dll 10.0.4321.0 2,860,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.smoextended.dll 10.0.4321.0 182,112 04-Sep-2011 02:36 x86
Microsoft.sqlserver.sqlenum.dll 10.0.4321.0 1,083,232 02-Sep-2011 18:26 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 02:35 x86
Oledbdest.dll 2007.100.4321.0 173,920 04-Sep-2011 02:32 x86
Oledbsrc.dll 2007.100.4321.0 186,720 04-Sep-2011 02:32 x86
Rawdest.dll 2007.100.4321.0 128,864 04-Sep-2011 02:32 x86
Rawsource.dll 2007.100.4321.0 120,672 04-Sep-2011 02:32 x86
Rdistcom.dll 2007.100.4321.0 654,176 04-Sep-2011 02:32 x86
Recordsetdest.dll 2007.100.4321.0 115,552 04-Sep-2011 02:32 x86
Replagnt.dll 2007.100.4321.0 18,784 04-Sep-2011 02:32 x86
Repldp.dll 2007.100.4321.0 191,840 04-Sep-2011 02:32 x86
Replmerg.exe 2007.100.4321.0 341,856 04-Sep-2011 02:40 x86
Replsync.dll 2007.100.4321.0 99,680 04-Sep-2011 02:32 x86
Snapshot.exe 10.0.4321.0 13,152 04-Sep-2011 02:38 x86
Spresolv.dll 2007.100.4321.0 179,552 04-Sep-2011 02:32 x86
Sql_engine_core_shared_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
Sqlcmd.exe 2007.100.4321.0 152,928 04-Sep-2011 02:39 x86
Sqllogship.exe 10.0.4321.0 96,096 04-Sep-2011 02:38 x86
Sqlmergx.dll 2007.100.4321.0 192,864 04-Sep-2011 02:32 x86
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqltaskconnections.dll 2007.100.4321.0 113,504 04-Sep-2011 02:32 x86
Sqlwep100.dll 2007.100.4321.0 89,440 04-Sep-2011 02:23 x86
Ssradd.dll 2007.100.4321.0 40,800 04-Sep-2011 02:23 x86
Ssravg.dll 2007.100.4321.0 41,312 04-Sep-2011 02:23 x86
Ssrdown.dll 2007.100.4321.0 26,464 04-Sep-2011 02:23 x86
Ssrmax.dll 2007.100.4321.0 39,776 04-Sep-2011 02:23 x86
Ssrmin.dll 2007.100.4321.0 39,264 04-Sep-2011 02:23 x86
Ssrpub.dll 2007.100.4321.0 26,976 04-Sep-2011 02:23 x86
Ssrup.dll 2007.100.4321.0 25,952 04-Sep-2011 02:23 x86
Txagg.dll 2007.100.4321.0 242,528 04-Sep-2011 02:23 x86
Txdataconvert.dll 2007.100.4321.0 206,688 04-Sep-2011 02:23 x86
Txderived.dll 2007.100.4321.0 414,048 04-Sep-2011 02:23 x86
Txlookup.dll 2007.100.4321.0 354,656 04-Sep-2011 02:23 x86
Txmerge.dll 2007.100.4321.0 138,080 04-Sep-2011 02:23 x86
Txmergejoin.dll 2007.100.4321.0 179,552 04-Sep-2011 02:23 x86
Txrowcount.dll 2007.100.4321.0 65,376 04-Sep-2011 02:23 x86
Txsort.dll 2007.100.4321.0 163,680 04-Sep-2011 02:22 x86
Txsplit.dll 2007.100.4321.0 410,464 04-Sep-2011 02:22 x86
SQL Server 2008 Database Services Core Instance
File name File version File size Date Time Platform
Databasemailengine.dll 10.0.4321.0 75,616 04-Sep-2011 02:39 x86
Databasemailprotocols.dll 10.0.4321.0 42,848 04-Sep-2011 02:38 x86
Rsfxft.dll 2007.100.4321.0 20,832 04-Sep-2011 02:32 x86
Sql_engine_core_inst_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
Sqlaccess.dll 2007.100.4321.0 405,344 04-Sep-2011 02:33 x86
Sqlagent.exe 2007.100.4321.0 370,016 04-Sep-2011 02:39 x86
Sqlctr100.dll 2007.100.4321.0 73,056 04-Sep-2011 02:32 x86
Sqlscriptdowngrade.dll 2007.100.4321.0 32,096 04-Sep-2011 02:32 x86
Sqlscriptupgrade.dll 2007.100.4321.0 3,608,928 04-Sep-2011 02:32 x86
Sqlserverspatial.dll 2007.100.4321.0 237,408 04-Sep-2011 02:32 x86
Sqlservr.exe 2007.100.4321.0 42,799,968 04-Sep-2011 02:39 x86
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqsrvres.dll 2007.100.4321.0 89,952 04-Sep-2011 02:23 x86
Xpstar.dll 2007.100.4321.0 300,896 04-Sep-2011 02:22 x86
SQL Server 2008 Database Services Common Core
File name File version File size Date Time Platform
Microsoft.analysisservices.adomdclient.dll 10.0.4321.0 546,656 04-Sep-2011 02:38 x86
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Microsoft.analysisservices.xmla.dll 10.0.4321.0 227,168 04-Sep-2011 02:38 x86
Microsoft.sqlserver.management.sdk.sfc.dll 10.0.4321.0 403,296 02-Sep-2011 18:26 x86
Microsoft.sqlserver.rmo.dll 10.0.4321.0 563,040 04-Sep-2011 02:36 x86
Microsoft.sqlserver.smo.dll 10.0.4321.0 2,860,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.smoextended.dll 10.0.4321.0 182,112 04-Sep-2011 02:36 x86
Microsoft.sqlserver.sqlenum.dll 10.0.4321.0 1,083,232 02-Sep-2011 18:26 x86
Msgprox.dll 2007.100.4321.0 202,592 04-Sep-2011 02:36 x86
Replerrx.dll 2007.100.4321.0 109,408 04-Sep-2011 02:32 x86
Replisapi.dll 2007.100.4321.0 272,224 04-Sep-2011 02:32 x86
Replprov.dll 2007.100.4321.0 576,864 04-Sep-2011 02:32 x86
Replrec.dll 2007.100.4321.0 791,392 04-Sep-2011 02:34 x86
Replsub.dll 2007.100.4321.0 412,000 04-Sep-2011 02:32 x86
Sql_common_core_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
Sqlmgmprovider.dll 2007.100.4321.0 259,936 04-Sep-2011 02:32 x86
Xmlsub.dll 2007.100.4321.0 192,352 04-Sep-2011 02:22 x86
SQL Server 2008 Business Intelligence Development Studio
File name File version File size Date Time Platform
Commanddest.dll 2007.100.4321.0 164,704 04-Sep-2011 02:36 x86
Ddsshapeslib.dll 2007.100.4321.0 46,944 04-Sep-2011 02:38 x86
Dts.dll 2007.100.4321.0 1,431,904 04-Sep-2011 02:36 x86
Dtscomexpreval.dll 2007.100.4321.0 334,176 04-Sep-2011 02:36 x86
Dtsconn.dll 2007.100.4321.0 285,024 04-Sep-2011 02:36 x86
Dtspipeline.dll 2007.100.4321.0 696,160 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 32,608 04-Sep-2011 02:36 x86
Dtswizard.exe 2007.100.4321.0 804,704 04-Sep-2011 02:38 x86
Exceldest.dll 2007.100.4321.0 173,408 04-Sep-2011 02:36 x86
Excelsrc.dll 2007.100.4321.0 183,136 04-Sep-2011 02:36 x86
Flatfiledest.dll 2007.100.4321.0 276,320 04-Sep-2011 02:36 x86
Flatfilesrc.dll 2007.100.4321.0 284,000 04-Sep-2011 02:36 x86
Mdxquerygenerator.dll 10.0.4321.0 87,904 04-Sep-2011 02:38 x86
Microsoft.analysisservices.controls.dll 10.0.4321.0 3,233,632 04-Sep-2011 02:38 x86
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Microsoft.analysisservices.project.dll 2007.100.4321.0 1,988,448 04-Sep-2011 02:38 x86
Microsoft.datatransformationservices.design.dll 10.0.4321.0 4,233,056 04-Sep-2011 02:38 x86
Microsoft.datatransformationservices.vsintegration.dll 10.0.4321.0 333,664 04-Sep-2011 02:38 x86
Microsoft.reportingservices.chartwebcontrol.dll 10.0.4321.0 2,828,128 04-Sep-2011 02:36 x86
Microsoft.reportingservices.chartwincontrol.dll 10.0.4321.0 3,827,552 04-Sep-2011 02:36 x86
Microsoft.reportingservices.dataextensions.xmlaclient.dll 10.0.4321.0 563,040 04-Sep-2011 02:36 x86
Microsoft.reportingservices.datarendering.dll 10.0.4321.0 83,808 04-Sep-2011 02:36 x86
Microsoft.reportingservices.designer.controls.dll 10.0.4321.0 12,437,344 04-Sep-2011 02:36 x86
Microsoft.reportingservices.designer.dll 10.0.4321.0 661,344 04-Sep-2011 02:36 x86
Microsoft.reportingservices.diagnostics.dll 10.0.4321.0 911,200 04-Sep-2011 02:36 x86
Microsoft.reportingservices.excelrendering.dll 10.0.4321.0 251,744 04-Sep-2011 02:36 x86
Microsoft.reportingservices.gaugewebcontrol.dll 10.0.4321.0 1,570,656 04-Sep-2011 02:36 x86
Microsoft.reportingservices.hpbprocessing.dll 10.0.4321.0 284,512 04-Sep-2011 02:36 x86
Microsoft.reportingservices.htmlrendering.dll 10.0.4321.0 198,496 04-Sep-2011 02:36 x86
Microsoft.reportingservices.imagerendering.dll 10.0.4321.0 149,344 04-Sep-2011 02:36 x86
Microsoft.reportingservices.processingcore.dll 10.0.4321.0 4,343,648 04-Sep-2011 02:36 x86
Microsoft.reportingservices.querydesigners.dll 10.0.4321.0 2,123,616 04-Sep-2011 02:36 x86
Microsoft.reportingservices.rdlobjectmodel.dll 10.0.4321.0 829,280 04-Sep-2011 02:36 x86
Microsoft.reportingservices.reportpreview.dll 10.0.4321.0 567,136 04-Sep-2011 02:36 x86
Microsoft.reportingservices.richtext.dll 10.0.4321.0 104,288 04-Sep-2011 02:36 x86
Microsoft.reportingservices.rplobjectmodel.dll 10.0.4321.0 87,904 04-Sep-2011 02:36 x86
Microsoft.reportingservices.spbprocessing.dll 10.0.4321.0 247,648 04-Sep-2011 02:36 x86
Microsoft.reportingservices.wordrendering.dll 10.0.4321.0 227,168 04-Sep-2011 02:36 x86
Microsoft.sqlserver.dataprofiler.dll 10.0.4321.0 280,416 04-Sep-2011 02:37 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.maintenanceplantasksui.dll 10.0.4321.0 759,648 04-Sep-2011 02:37 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 02:36 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 02:35 x86
Msmdlocal.dll 10.0.4321.0 23,523,168 04-Sep-2011 02:36 x86
Msmdpp.dll 10.0.4321.0 6,131,552 04-Sep-2011 02:36 x86
Msmgdsrv.dll 10.0.4321.0 8,568,160 04-Sep-2011 02:35 x86
Msolap100.dll 10.0.4321.0 6,536,032 04-Sep-2011 02:36 x86
Oledbdest.dll 2007.100.4321.0 173,920 04-Sep-2011 02:32 x86
Oledbsrc.dll 2007.100.4321.0 186,720 04-Sep-2011 02:32 x86
Rawdest.dll 2007.100.4321.0 128,864 04-Sep-2011 02:32 x86
Rawsource.dll 2007.100.4321.0 120,672 04-Sep-2011 02:32 x86
Recordsetdest.dll 2007.100.4321.0 115,552 04-Sep-2011 02:32 x86
Reportingserviceslibrary.dll 10.0.4321.0 1,337,184 04-Sep-2011 02:33 x86
Reportingservicesnativeclient.dll 2007.100.4321.0 129,376 04-Sep-2011 02:33 x86
Sql_bids_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
Sqldest.dll 2007.100.4321.0 180,064 04-Sep-2011 02:32 x86
Sqlmanagerui.dll 10.0.4321.0 7,563,104 04-Sep-2011 02:33 x86
Sqlmgmt.dll 10.0.4321.0 3,471,200 04-Sep-2011 02:33 x86
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqltaskconnections.dll 2007.100.4321.0 113,504 04-Sep-2011 02:32 x86
Txagg.dll 2007.100.4321.0 242,528 04-Sep-2011 02:23 x86
Txbestmatch.dll 2007.100.4321.0 444,256 04-Sep-2011 02:23 x86
Txcharmap.dll 2007.100.4321.0 195,424 04-Sep-2011 02:23 x86
Txdataconvert.dll 2007.100.4321.0 206,688 04-Sep-2011 02:23 x86
Txderived.dll 2007.100.4321.0 414,048 04-Sep-2011 02:23 x86
Txfileextractor.dll 2007.100.4321.0 126,816 04-Sep-2011 02:23 x86
Txfileinserter.dll 2007.100.4321.0 125,280 04-Sep-2011 02:23 x86
Txgroupdups.dll 2007.100.4321.0 258,400 04-Sep-2011 02:23 x86
Txlineage.dll 2007.100.4321.0 68,448 04-Sep-2011 02:23 x86
Txlookup.dll 2007.100.4321.0 354,656 04-Sep-2011 02:23 x86
Txmerge.dll 2007.100.4321.0 138,080 04-Sep-2011 02:23 x86
Txmergejoin.dll 2007.100.4321.0 179,552 04-Sep-2011 02:23 x86
Txpivot.dll 2007.100.4321.0 129,888 04-Sep-2011 02:23 x86
Txrowcount.dll 2007.100.4321.0 65,376 04-Sep-2011 02:23 x86
Txscd.dll 2007.100.4321.0 127,840 04-Sep-2011 02:22 x86
Txsort.dll 2007.100.4321.0 163,680 04-Sep-2011 02:22 x86
Txsplit.dll 2007.100.4321.0 410,464 04-Sep-2011 02:22 x86
Txtermextraction.dll 2007.100.4321.0 8,608,096 04-Sep-2011 02:22 x86
Txtermlookup.dll 2007.100.4321.0 4,088,160 04-Sep-2011 02:22 x86
Txunpivot.dll 2007.100.4321.0 128,352 04-Sep-2011 02:22 x86
SQL Server 2008 Analysis Services
File name File version File size Date Time Platform
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Msmdlocal.dll 10.0.4321.0 23,523,168 04-Sep-2011 02:36 x86
Msmdpump.dll 10.0.4321.0 6,183,264 04-Sep-2011 02:36 x86
Msmdredir.dll 10.0.4321.0 6,210,400 04-Sep-2011 02:36 x86
Msmdspdm.dll 10.0.4321.0 178,016 04-Sep-2011 02:35 x86
Msmdsrv.exe 10.0.4321.0 22,015,328 04-Sep-2011 02:40 x86
Msmgdsrv.dll 10.0.4321.0 8,568,160 04-Sep-2011 02:35 x86
Msolap100.dll 10.0.4321.0 6,536,032 04-Sep-2011 02:36 x86
Sql_as_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
SQL Server 2008 Reporting Services

//

Collapse this tableExpand this table
File name File version File size Date Time Platform
Mdxquerygenerator.dll 10.0.4321.0 87,904 04-Sep-2011 02:38 x86
Microsoft.analysisservices.modeling.dll 10.0.4321.0 567,136 04-Sep-2011 02:38 x86
Microsoft.reportingservices.authorization.dll 10.0.4321.0 71,520 04-Sep-2011 02:36 x86
Microsoft.reportingservices.chartwebcontrol.dll 10.0.4321.0 2,828,128 04-Sep-2011 02:36 x86
Microsoft.reportingservices.dataextensions.xmlaclient.dll 10.0.4321.0 563,040 04-Sep-2011 02:36 x86
Microsoft.reportingservices.imagerendering.dll 10.0.4321.0 149,344 04-Sep-2011 02:36 x86
Microsoft.reportingservices.rplobjectmodel.dll 10.0.4321.0 87,904 04-Sep-2011 02:36 x86
Reportingservicesnativeclient.dll 2007.100.4321.0 129,376 04-Sep-2011 02:33 x86
Sql_rs_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
Sqlrsos.dll 2007.100.4321.0 14,688 04-Sep-2011 02:32 x86
SQL Server 2008 Management Studio
File name File version File size Date Time Platform
Bcp.exe 2007.100.4321.0 88,416 04-Sep-2011 02:40 x86
Commanddest.dll 2007.100.4321.0 164,704 04-Sep-2011 02:36 x86
Databasemailwizard.exe 10.0.4321.0 595,808 04-Sep-2011 02:38 x86
Datacollectorenumerators.dll 2007.100.4321.0 69,472 04-Sep-2011 02:36 x86
Dts.dll 2007.100.4321.0 1,431,904 04-Sep-2011 02:36 x86
Dtscomexpreval.dll 2007.100.4321.0 334,176 04-Sep-2011 02:36 x86
Dtsconn.dll 2007.100.4321.0 285,024 04-Sep-2011 02:36 x86
Dtsinstall.exe 10.0.4321.0 427,872 04-Sep-2011 02:38 x86
Dtspipeline.dll 2007.100.4321.0 696,160 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 32,608 04-Sep-2011 02:36 x86
Dtswizard.exe 2007.100.4321.0 804,704 04-Sep-2011 02:38 x86
Exceldest.dll 2007.100.4321.0 173,408 04-Sep-2011 02:36 x86
Excelsrc.dll 2007.100.4321.0 183,136 04-Sep-2011 02:36 x86
Flatfiledest.dll 2007.100.4321.0 276,320 04-Sep-2011 02:36 x86
Flatfilesrc.dll 2007.100.4321.0 284,000 04-Sep-2011 02:36 x86
Microsoft.datatransformationservices.design.dll 10.0.4321.0 4,233,056 04-Sep-2011 02:38 x86
Microsoft.datatransformationservices.vsintegration.dll 10.0.4321.0 333,664 04-Sep-2011 02:38 x86
Microsoft.reportingservices.diagnostics.dll 10.0.4321.0 911,200 04-Sep-2011 02:36 x86
Microsoft.reportingservices.querydesigners.dll 10.0.4321.0 2,123,616 04-Sep-2011 02:36 x86
Microsoft.sqlserver.dataprofiler.dll 10.0.4321.0 280,416 04-Sep-2011 02:37 x86
Microsoft.sqlserver.dmf.dll 10.0.4321.0 300,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.maintenanceplantasksui.dll 10.0.4321.0 759,648 04-Sep-2011 02:37 x86
Microsoft.sqlserver.management.datacollectionuitasks.dll 10.0.4321.0 3,290,976 04-Sep-2011 02:37 x86
Microsoft.sqlserver.management.reports.dll 10.0.4321.0 8,968,032 04-Sep-2011 02:37 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 02:36 x86
Microsoft.sqlserver.replication.dll 2007.100.4321.0 1,766,752 04-Sep-2011 02:36 x86
Microsoft.sqlserver.sqltools.vsintegration.dll 10.0.4321.0 280,416 04-Sep-2011 02:35 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 02:35 x86
Microsoft.xmleditor.dll 2.0.50727.5065 741,376 19-Nov-2010 04:31 x86
Objectexplorer.dll 10.0.4321.0 3,237,728 04-Sep-2011 02:34 x86
Oledbdest.dll 2007.100.4321.0 173,920 04-Sep-2011 02:32 x86
Oledbsrc.dll 2007.100.4321.0 186,720 04-Sep-2011 02:32 x86
Pfclnt.dll 2007.100.4321.0 1,098,080 04-Sep-2011 02:34 x86
Rawdest.dll 2007.100.4321.0 128,864 04-Sep-2011 02:32 x86
Rawsource.dll 2007.100.4321.0 120,672 04-Sep-2011 02:32 x86
Recordsetdest.dll 2007.100.4321.0 115,552 04-Sep-2011 02:32 x86
Replicationmonitor.dll 10.0.4321.0 2,041,696 04-Sep-2011 02:34 x86
Reportingservicesnativeclient.dll 2007.100.4321.0 129,376 04-Sep-2011 02:33 x86
Sql_ssms_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
Sqlcmd.exe 2007.100.4321.0 152,928 04-Sep-2011 02:39 x86
Sqldest.dll 2007.100.4321.0 180,064 04-Sep-2011 02:32 x86
Sqleditors.dll 10.0.4321.0 1,226,592 04-Sep-2011 02:33 x86
Sqlmanagerui.dll 10.0.4321.0 7,563,104 04-Sep-2011 02:33 x86
Sqlmgmt.dll 10.0.4321.0 3,471,200 04-Sep-2011 02:33 x86
Sqlresolver.dll 10.0.4321.0 38,752 04-Sep-2011 02:33 x86
Sqlserverspatial.dll 2007.100.4321.0 237,408 04-Sep-2011 02:32 x86
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqltaskconnections.dll 2007.100.4321.0 113,504 04-Sep-2011 02:32 x86
Txagg.dll 2007.100.4321.0 242,528 04-Sep-2011 02:23 x86
Txbestmatch.dll 2007.100.4321.0 444,256 04-Sep-2011 02:23 x86
Txcharmap.dll 2007.100.4321.0 195,424 04-Sep-2011 02:23 x86
Txdataconvert.dll 2007.100.4321.0 206,688 04-Sep-2011 02:23 x86
Txderived.dll 2007.100.4321.0 414,048 04-Sep-2011 02:23 x86
Txfileextractor.dll 2007.100.4321.0 126,816 04-Sep-2011 02:23 x86
Txfileinserter.dll 2007.100.4321.0 125,280 04-Sep-2011 02:23 x86
Txgroupdups.dll 2007.100.4321.0 258,400 04-Sep-2011 02:23 x86
Txlineage.dll 2007.100.4321.0 68,448 04-Sep-2011 02:23 x86
Txlookup.dll 2007.100.4321.0 354,656 04-Sep-2011 02:23 x86
Txmerge.dll 2007.100.4321.0 138,080 04-Sep-2011 02:23 x86
Txmergejoin.dll 2007.100.4321.0 179,552 04-Sep-2011 02:23 x86
Txpivot.dll 2007.100.4321.0 129,888 04-Sep-2011 02:23 x86
Txrowcount.dll 2007.100.4321.0 65,376 04-Sep-2011 02:23 x86
Txscd.dll 2007.100.4321.0 127,840 04-Sep-2011 02:22 x86
Txsort.dll 2007.100.4321.0 163,680 04-Sep-2011 02:22 x86
Txsplit.dll 2007.100.4321.0 410,464 04-Sep-2011 02:22 x86
Txtermextraction.dll 2007.100.4321.0 8,608,096 04-Sep-2011 02:22 x86
Txtermlookup.dll 2007.100.4321.0 4,088,160 04-Sep-2011 02:22 x86
Txunpivot.dll 2007.100.4321.0 128,352 04-Sep-2011 02:22 x86
SQL Server 2008 Tools and Workstation Components
File name File version File size Date Time Platform
Ddsshapeslib.dll 2007.100.4321.0 46,944 04-Sep-2011 02:38 x86
Dts.dll 2007.100.4321.0 1,431,904 04-Sep-2011 02:36 x86
Dtscomexpreval.dll 2007.100.4321.0 334,176 04-Sep-2011 02:36 x86
Dtsconn.dll 2007.100.4321.0 285,024 04-Sep-2011 02:36 x86
Dtspipeline.dll 2007.100.4321.0 696,160 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 32,608 04-Sep-2011 02:36 x86
Dtswizard.exe 2007.100.4321.0 804,704 04-Sep-2011 02:38 x86
Exceldest.dll 2007.100.4321.0 173,408 04-Sep-2011 02:36 x86
Excelsrc.dll 2007.100.4321.0 183,136 04-Sep-2011 02:36 x86
Flatfiledest.dll 2007.100.4321.0 276,320 04-Sep-2011 02:36 x86
Flatfilesrc.dll 2007.100.4321.0 284,000 04-Sep-2011 02:36 x86
Mdxquerygenerator.dll 10.0.4321.0 87,904 04-Sep-2011 02:38 x86
Mergetxt.dll 2007.100.4321.0 29,536 04-Sep-2011 02:36 x86
Microsoft.analysisservices.controls.dll 10.0.4321.0 3,233,632 04-Sep-2011 02:38 x86
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Microsoft.analysisservices.project.dll 2007.100.4321.0 1,988,448 04-Sep-2011 02:38 x86
Microsoft.sqlserver.chainer.infrastructure.dll 10.0.4321.0 235,360 04-Sep-2011 02:36 x86
Microsoft.sqlserver.configuration.sco.dll 10.0.4321.0 1,304,416 04-Sep-2011 02:36 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 02:36 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 02:35 x86
Msmdlocal.dll 10.0.4321.0 23,523,168 04-Sep-2011 02:36 x86
Msmdpp.dll 10.0.4321.0 6,131,552 04-Sep-2011 02:36 x86
Msmgdsrv.dll 10.0.4321.0 8,568,160 04-Sep-2011 02:35 x86
Msolap100.dll 10.0.4321.0 6,536,032 04-Sep-2011 02:36 x86
Oledbdest.dll 2007.100.4321.0 173,920 04-Sep-2011 02:32 x86
Oledbsrc.dll 2007.100.4321.0 186,720 04-Sep-2011 02:32 x86
Spresolv.dll 2007.100.4321.0 179,552 04-Sep-2011 02:32 x86
Sql_tools_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqltaskconnections.dll 2007.100.4321.0 113,504 04-Sep-2011 02:32 x86
Ssradd.dll 2007.100.4321.0 40,800 04-Sep-2011 02:23 x86
Ssravg.dll 2007.100.4321.0 41,312 04-Sep-2011 02:23 x86
Ssrdown.dll 2007.100.4321.0 26,464 04-Sep-2011 02:23 x86
Ssrmax.dll 2007.100.4321.0 39,776 04-Sep-2011 02:23 x86
Ssrmin.dll 2007.100.4321.0 39,264 04-Sep-2011 02:23 x86
Ssrpub.dll 2007.100.4321.0 26,976 04-Sep-2011 02:23 x86
Ssrup.dll 2007.100.4321.0 25,952 04-Sep-2011 02:23 x86
Txdataconvert.dll 2007.100.4321.0 206,688 04-Sep-2011 02:23 x86
SQL Server 2008 Integration Services
File name File version File size Date Time Platform
Commanddest.dll 2007.100.4321.0 164,704 04-Sep-2011 02:36 x86
Dts.dll 2007.100.4321.0 1,431,904 04-Sep-2011 02:36 x86
Dtscomexpreval.dll 2007.100.4321.0 334,176 04-Sep-2011 02:36 x86
Dtsconn.dll 2007.100.4321.0 285,024 04-Sep-2011 02:36 x86
Dtsinstall.exe 10.0.4321.0 427,872 04-Sep-2011 02:38 x86
Dtspipeline.dll 2007.100.4321.0 696,160 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 32,608 04-Sep-2011 02:36 x86
Dtswizard.exe 2007.100.4321.0 804,704 04-Sep-2011 02:38 x86
Exceldest.dll 2007.100.4321.0 173,408 04-Sep-2011 02:36 x86
Excelsrc.dll 2007.100.4321.0 183,136 04-Sep-2011 02:36 x86
Flatfiledest.dll 2007.100.4321.0 276,320 04-Sep-2011 02:36 x86
Flatfilesrc.dll 2007.100.4321.0 284,000 04-Sep-2011 02:36 x86
Microsoft.sqlserver.dataprofiler.dll 10.0.4321.0 280,416 04-Sep-2011 02:37 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 02:36 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 02:35 x86
Msdtssrvr.exe 10.0.4321.0 214,880 04-Sep-2011 02:38 x86
Msmdpp.dll 10.0.4321.0 6,131,552 04-Sep-2011 02:36 x86
Oledbdest.dll 2007.100.4321.0 173,920 04-Sep-2011 02:32 x86
Oledbsrc.dll 2007.100.4321.0 186,720 04-Sep-2011 02:32 x86
Rawdest.dll 2007.100.4321.0 128,864 04-Sep-2011 02:32 x86
Rawsource.dll 2007.100.4321.0 120,672 04-Sep-2011 02:32 x86
Recordsetdest.dll 2007.100.4321.0 115,552 04-Sep-2011 02:32 x86
Sql_is_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
Sqldest.dll 2007.100.4321.0 180,064 04-Sep-2011 02:32 x86
Sqltaskconnections.dll 2007.100.4321.0 113,504 04-Sep-2011 02:32 x86
Txagg.dll 2007.100.4321.0 242,528 04-Sep-2011 02:23 x86
Txbestmatch.dll 2007.100.4321.0 444,256 04-Sep-2011 02:23 x86
Txcharmap.dll 2007.100.4321.0 195,424 04-Sep-2011 02:23 x86
Txdataconvert.dll 2007.100.4321.0 206,688 04-Sep-2011 02:23 x86
Txderived.dll 2007.100.4321.0 414,048 04-Sep-2011 02:23 x86
Txfileextractor.dll 2007.100.4321.0 126,816 04-Sep-2011 02:23 x86
Txfileinserter.dll 2007.100.4321.0 125,280 04-Sep-2011 02:23 x86
Txgroupdups.dll 2007.100.4321.0 258,400 04-Sep-2011 02:23 x86
Txlineage.dll 2007.100.4321.0 68,448 04-Sep-2011 02:23 x86
Txlookup.dll 2007.100.4321.0 354,656 04-Sep-2011 02:23 x86
Txmerge.dll 2007.100.4321.0 138,080 04-Sep-2011 02:23 x86
Txmergejoin.dll 2007.100.4321.0 179,552 04-Sep-2011 02:23 x86
Txpivot.dll 2007.100.4321.0 129,888 04-Sep-2011 02:23 x86
Txrowcount.dll 2007.100.4321.0 65,376 04-Sep-2011 02:23 x86
Txscd.dll 2007.100.4321.0 127,840 04-Sep-2011 02:22 x86
Txsort.dll 2007.100.4321.0 163,680 04-Sep-2011 02:22 x86
Txsplit.dll 2007.100.4321.0 410,464 04-Sep-2011 02:22 x86
Txtermextraction.dll 2007.100.4321.0 8,608,096 04-Sep-2011 02:22 x86
Txtermlookup.dll 2007.100.4321.0 4,088,160 04-Sep-2011 02:22 x86
Txunpivot.dll 2007.100.4321.0 128,352 04-Sep-2011 02:22 x86
SQL Server 2008 Full-Text Search Engine
File name File version File size Date Time Platform
Fd.dll 2007.100.4321.0 461,152 04-Sep-2011 02:36 x86
Iftsph.dll 2007.100.4321.0 38,240 04-Sep-2011 02:36 x86
Lrpolish.dll 1.10.0.0 94,800 29-Aug-2011 16:42 x86
Msfte.dll 12.0.9732.0 2,431,856 29-Aug-2011 16:42 x86
Sql_fulltext_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
SQL Server 2008 Browser Service
File name File version File size Date Time Platform
Msmdredir.dll 10.0.4321.0 6,210,400 04-Sep-2011 02:36 x86
Msmdsrv.rll 10.0.4321.0 669,536 04-Sep-2011 01:57 x86
Sqlbrowser.exe 2007.100.4321.0 254,816 04-Sep-2011 02:39 x86
Sqlbrowser_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86
SQL Server 2008 Native Client
Filename Fileversion Filesize DateTime
Msvcm80.dll 8.0.50727.1833 479,232 15-May-2008
Msvcp80.dll 8.0.50727.1833 558,080 15-May-2008
Msvcr80.dll 8.0.50727.1833 635,904 15-May-2008
Sqlncli_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011
SQL Server 2008 Common Language Runtime
File name File version File size Date Time Platform
Sqlserverspatial.dll 2007.100.4321.0 237,408 04-Sep-2011 02:32 x86
Sqlsysclrtypes_keyfile.dll 2007.100.4321.0 13,664 04-Sep-2011 02:36 x86

IA-64–based version

//

SQL Server 2008 Database Services Core Shared
File name File version File size Date Time Platform
Bcp.exe 2007.100.4321.0 176,992 04-Sep-2011 01:34 IA-64
Commanddest.dll 2007.100.4321.0 557,920 04-Sep-2011 01:29 IA-64
Datacollectorenumerators.dll 2007.100.4321.0 190,304 04-Sep-2011 01:29 IA-64
Distrib.exe 2007.100.4321.0 205,664 04-Sep-2011 01:34 IA-64
Dts.dll 2007.100.4321.0 4,259,168 04-Sep-2011 01:29 IA-64
Dtscomexpreval.dll 2007.100.4321.0 955,744 04-Sep-2011 01:29 IA-64
Dtsconn.dll 2007.100.4321.0 799,584 04-Sep-2011 01:29 IA-64
Dtspipeline.dll 2007.100.4321.0 2,026,336 04-Sep-2011 01:29 IA-64
Dtspipelineperf100.dll 2007.100.4321.0 82,272 04-Sep-2011 01:29 IA-64
Dtswizard.exe 2007.100.4321.0 800,608 04-Sep-2011 01:32 IA-64
Exceldest.dll 2007.100.4321.0 584,544 04-Sep-2011 01:29 IA-64
Excelsrc.dll 2007.100.4321.0 641,888 04-Sep-2011 01:29 IA-64
Flatfiledest.dll 2007.100.4321.0 952,672 04-Sep-2011 01:29 IA-64
Flatfilesrc.dll 2007.100.4321.0 975,712 04-Sep-2011 01:29 IA-64
Iftsph.dll 2007.100.4321.0 88,416 04-Sep-2011 01:29 IA-64
Logread.exe 2007.100.4321.0 1,126,240 04-Sep-2011 01:34 IA-64
Mergetxt.dll 2007.100.4321.0 68,448 04-Sep-2011 01:29 IA-64
Microsoft.sqlserver.dmf.dll 10.0.4321.0 300,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.management.sdk.sfc.dll 10.0.4321.0 403,296 02-Sep-2011 18:26 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 01:31 x86
Microsoft.sqlserver.replication.dll 2007.100.4321.0 1,766,752 04-Sep-2011 02:36 x86
Microsoft.sqlserver.replication.dll 2007.100.4321.0 2,658,144 04-Sep-2011 01:31 IA-64
Microsoft.sqlserver.rmo.dll 10.0.4321.0 563,040 04-Sep-2011 02:36 x86
Microsoft.sqlserver.smo.dll 10.0.4321.0 2,860,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.smoextended.dll 10.0.4321.0 182,112 04-Sep-2011 02:36 x86
Microsoft.sqlserver.sqlenum.dll 10.0.4321.0 1,083,232 02-Sep-2011 18:26 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 01:26 x86
Oledbdest.dll 2007.100.4321.0 586,592 04-Sep-2011 01:28 IA-64
Oledbsrc.dll 2007.100.4321.0 653,664 04-Sep-2011 01:28 IA-64
Rawdest.dll 2007.100.4321.0 436,576 04-Sep-2011 01:28 IA-64
Rawsource.dll 2007.100.4321.0 414,048 04-Sep-2011 01:28 IA-64
Rdistcom.dll 2007.100.4321.0 1,842,016 04-Sep-2011 01:28 IA-64
Recordsetdest.dll 2007.100.4321.0 384,864 04-Sep-2011 01:28 IA-64
Replagnt.dll 2007.100.4321.0 18,784 04-Sep-2011 02:32 x86
Replagnt.dll 2007.100.4321.0 28,512 04-Sep-2011 01:28 IA-64
Repldp.dll 2007.100.4321.0 191,840 04-Sep-2011 02:32 x86
Repldp.dll 2007.100.4321.0 525,152 04-Sep-2011 01:28 IA-64
Replmerg.exe 2007.100.4321.0 971,104 04-Sep-2011 01:34 IA-64
Replsync.dll 2007.100.4321.0 272,736 04-Sep-2011 01:28 IA-64
Snapshot.exe 10.0.4321.0 13,152 04-Sep-2011 01:32 x86
Spresolv.dll 2007.100.4321.0 506,208 04-Sep-2011 01:28 IA-64
Sql_engine_core_shared_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64
Sqlcmd.exe 2007.100.4321.0 538,464 04-Sep-2011 01:34 IA-64
Sqllogship.exe 10.0.4321.0 96,096 04-Sep-2011 01:32 x86
Sqlmergx.dll 2007.100.4321.0 429,920 04-Sep-2011 01:28 IA-64
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqlsvc.dll 2007.100.4321.0 373,600 04-Sep-2011 01:28 IA-64
Sqltaskconnections.dll 2007.100.4321.0 335,200 04-Sep-2011 01:28 IA-64
Sqlwep100.dll 2007.100.4321.0 216,416 04-Sep-2011 01:28 IA-64
Ssradd.dll 2007.100.4321.0 91,488 04-Sep-2011 01:28 IA-64
Ssravg.dll 2007.100.4321.0 91,488 04-Sep-2011 01:28 IA-64
Ssrdown.dll 2007.100.4321.0 57,696 04-Sep-2011 01:28 IA-64
Ssrmax.dll 2007.100.4321.0 85,856 04-Sep-2011 01:28 IA-64
Ssrmin.dll 2007.100.4321.0 85,856 04-Sep-2011 01:28 IA-64
Ssrpub.dll 2007.100.4321.0 60,768 04-Sep-2011 01:28 IA-64
Ssrup.dll 2007.100.4321.0 58,208 04-Sep-2011 01:28 IA-64
Txagg.dll 2007.100.4321.0 879,968 04-Sep-2011 01:28 IA-64
Txdataconvert.dll 2007.100.4321.0 674,656 04-Sep-2011 01:22 IA-64
Txderived.dll 2007.100.4321.0 1,275,232 04-Sep-2011 01:22 IA-64
Txlookup.dll 2007.100.4321.0 1,185,632 04-Sep-2011 01:22 IA-64
Txmerge.dll 2007.100.4321.0 511,328 04-Sep-2011 01:22 IA-64
Txmergejoin.dll 2007.100.4321.0 619,872 04-Sep-2011 01:22 IA-64
Txrowcount.dll 2007.100.4321.0 195,936 04-Sep-2011 01:22 IA-64
Txsort.dll 2007.100.4321.0 560,480 04-Sep-2011 01:22 IA-64
Txsplit.dll 2007.100.4321.0 1,255,776 04-Sep-2011 01:22 IA-64
SQL Server 2008 Database Services Core Instance
File name File version File size Date Time Platform
Databasemailengine.dll 10.0.4321.0 75,616 04-Sep-2011 01:32 x86
Databasemailprotocols.dll 10.0.4321.0 42,848 04-Sep-2011 01:32 x86
Rsfxft.dll 2007.100.4321.0 54,624 04-Sep-2011 01:28 IA-64
Sql_engine_core_inst_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64
Sqlaccess.dll 2007.100.4321.0 398,688 04-Sep-2011 01:26 x86
Sqlagent.exe 2007.100.4321.0 1,212,768 04-Sep-2011 01:34 IA-64
Sqlctr100.dll 2007.100.4321.0 135,520 04-Sep-2011 01:28 IA-64
Sqlctr100.dll 2007.100.4321.0 73,056 04-Sep-2011 02:32 x86
Sqlscriptdowngrade.dll 2007.100.4321.0 38,240 04-Sep-2011 01:28 IA-64
Sqlscriptupgrade.dll 2007.100.4321.0 3,614,560 04-Sep-2011 01:28 IA-64
Sqlserverspatial.dll 2007.100.4321.0 666,976 04-Sep-2011 01:28 IA-64
Sqlservr.exe 2007.100.4321.0 111,212,384 04-Sep-2011 01:34 IA-64
Sqlsvc.dll 2007.100.4321.0 373,600 04-Sep-2011 01:28 IA-64
Sqsrvres.dll 2007.100.4321.0 187,744 04-Sep-2011 01:28 IA-64
Xpstar.dll 2007.100.4321.0 936,800 04-Sep-2011 01:22 IA-64
SQL Server 2008 Database Services Common Core
File name File version File size Date Time Platform
Microsoft.analysisservices.adomdclient.dll 10.0.4321.0 546,656 04-Sep-2011 01:31 x86
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Microsoft.analysisservices.xmla.dll 10.0.4321.0 227,168 04-Sep-2011 01:31 x86
Microsoft.sqlserver.management.sdk.sfc.dll 10.0.4321.0 403,296 02-Sep-2011 18:26 x86
Microsoft.sqlserver.rmo.dll 10.0.4321.0 563,040 04-Sep-2011 01:31 x86
Microsoft.sqlserver.smo.dll 10.0.4321.0 2,860,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.smoextended.dll 10.0.4321.0 182,112 04-Sep-2011 01:31 x86
Microsoft.sqlserver.sqlenum.dll 10.0.4321.0 1,083,232 02-Sep-2011 18:26 x86
Msgprox.dll 2007.100.4321.0 202,592 04-Sep-2011 02:36 x86
Msgprox.dll 2007.100.4321.0 534,368 04-Sep-2011 01:29 IA-64
Replerrx.dll 2007.100.4321.0 109,408 04-Sep-2011 02:32 x86
Replerrx.dll 2007.100.4321.0 295,264 04-Sep-2011 01:28 IA-64
Replisapi.dll 2007.100.4321.0 272,224 04-Sep-2011 02:32 x86
Replisapi.dll 2007.100.4321.0 761,696 04-Sep-2011 01:28 IA-64
Replprov.dll 2007.100.4321.0 1,645,920 04-Sep-2011 01:28 IA-64
Replprov.dll 2007.100.4321.0 576,864 04-Sep-2011 02:32 x86
Replrec.dll 2007.100.4321.0 2,129,760 04-Sep-2011 01:26 IA-64
Replrec.dll 2007.100.4321.0 791,392 04-Sep-2011 02:34 x86
Replsub.dll 2007.100.4321.0 1,114,464 04-Sep-2011 01:28 IA-64
Replsub.dll 2007.100.4321.0 412,000 04-Sep-2011 02:32 x86
Sql_common_core_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64
Sqlmgmprovider.dll 2007.100.4321.0 259,936 04-Sep-2011 02:32 x86
Sqlmgmprovider.dll 2007.100.4321.0 704,352 04-Sep-2011 01:28 IA-64
Xmlsub.dll 2007.100.4321.0 192,352 04-Sep-2011 02:22 x86
Xmlsub.dll 2007.100.4321.0 559,456 04-Sep-2011 01:22 IA-64
SQL Server 2008 Analysis Services
File name File version File size Date Time Platform
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Msmdlocal.dll 10.0.4321.0 23,523,168 04-Sep-2011 02:36 x86
Msmdlocal.dll 10.0.4321.0 57,660,256 04-Sep-2011 01:29 IA-64
Msmdpump.dll 10.0.4321.0 8,946,528 04-Sep-2011 01:29 IA-64
Msmdredir.dll 10.0.4321.0 8,508,256 04-Sep-2011 01:29 IA-64
Msmdspdm.dll 10.0.4321.0 178,016 04-Sep-2011 01:26 x86
Msmdsrv.exe 10.0.4321.0 59,008,864 04-Sep-2011 01:34 IA-64
Msmgdsrv.dll 10.0.4321.0 15,502,176 04-Sep-2011 01:26 IA-64
Msmgdsrv.dll 10.0.4321.0 8,568,160 04-Sep-2011 02:35 x86
Msolap100.dll 10.0.4321.0 10,068,320 04-Sep-2011 01:29 IA-64
Msolap100.dll 10.0.4321.0 6,536,032 04-Sep-2011 02:36 x86
Sql_as_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64
SQL Server 2008 Reporting Services
File name File version File size Date Time Platform
Mdxquerygenerator.dll 10.0.4321.0 87,904 04-Sep-2011 01:32 x86
Microsoft.reportingservices.datarendering.dll 10.0.4321.0 83,808 04-Sep-2011 01:31 x86
Microsoft.reportingservices.imagerendering.dll 10.0.4321.0 149,344 04-Sep-2011 01:31 x86
Microsoft.reportingservices.sharepoint.server.dll 10.0.4321.0 149,344 04-Sep-2011 01:31 x86
Microsoft.reportingservices.spbprocessing.dll 10.0.4321.0 247,648 04-Sep-2011 01:30 x86
Reportingservicesnativeserver.dll 2007.100.4321.0 239,968 04-Sep-2011 01:26 IA-64
Reportingservicesservice.exe 2007.100.4321.0 3,412,832 04-Sep-2011 01:29 IA-64
Reportingservicessharepointdeliveryextension.dll 10.0.4321.0 67,424 04-Sep-2011 01:26 x86
Reportingserviceswebserver.dll 10.0.4321.0 2,250,592 04-Sep-2011 01:26 x86
Reportingserviceswebuserinterface.dll 10.0.4321.0 1,611,616 04-Sep-2011 01:26 x86
Sql_rs_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64
Sqlrsos.dll 2007.100.4321.0 22,368 04-Sep-2011 01:28 IA-64
SQL Server 2008 Management Studio
File name File version File size Date Time Platform
Bcp.exe 2007.100.4321.0 176,992 04-Sep-2011 01:34 IA-64
Commanddest.dll 2007.100.4321.0 164,704 04-Sep-2011 02:36 x86
Databasemailwizard.exe 10.0.4321.0 595,808 04-Sep-2011 02:38 x86
Datacollectorenumerators.dll 2007.100.4321.0 69,472 04-Sep-2011 02:36 x86
Dts.dll 2007.100.4321.0 1,431,904 04-Sep-2011 02:36 x86
Dtscomexpreval.dll 2007.100.4321.0 334,176 04-Sep-2011 02:36 x86
Dtsconn.dll 2007.100.4321.0 285,024 04-Sep-2011 02:36 x86
Dtsinstall.exe 10.0.4321.0 427,872 04-Sep-2011 02:38 x86
Dtspipeline.dll 2007.100.4321.0 696,160 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 32,608 04-Sep-2011 02:36 x86
Dtswizard.exe 2007.100.4321.0 804,704 04-Sep-2011 02:38 x86
Exceldest.dll 2007.100.4321.0 173,408 04-Sep-2011 02:36 x86
Excelsrc.dll 2007.100.4321.0 183,136 04-Sep-2011 02:36 x86
Flatfiledest.dll 2007.100.4321.0 276,320 04-Sep-2011 02:36 x86
Flatfilesrc.dll 2007.100.4321.0 284,000 04-Sep-2011 02:36 x86
Microsoft.datatransformationservices.design.dll 10.0.4321.0 4,233,056 04-Sep-2011 02:38 x86
Microsoft.datatransformationservices.vsintegration.dll 10.0.4321.0 333,664 04-Sep-2011 02:38 x86
Microsoft.reportingservices.diagnostics.dll 10.0.4321.0 911,200 04-Sep-2011 02:36 x86
Microsoft.reportingservices.querydesigners.dll 10.0.4321.0 2,123,616 04-Sep-2011 02:36 x86
Microsoft.sqlserver.dataprofiler.dll 10.0.4321.0 280,416 04-Sep-2011 02:37 x86
Microsoft.sqlserver.dmf.dll 10.0.4321.0 300,896 02-Sep-2011 18:26 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.maintenanceplantasksui.dll 10.0.4321.0 759,648 04-Sep-2011 02:37 x86
Microsoft.sqlserver.management.datacollectionuitasks.dll 10.0.4321.0 3,290,976 04-Sep-2011 02:37 x86
Microsoft.sqlserver.management.reports.dll 10.0.4321.0 8,968,032 04-Sep-2011 02:37 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 02:36 x86
Microsoft.sqlserver.replication.dll 2007.100.4321.0 1,766,752 04-Sep-2011 02:36 x86
Microsoft.sqlserver.sqltools.vsintegration.dll 10.0.4321.0 280,416 04-Sep-2011 02:35 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 02:35 x86
Microsoft.xmleditor.dll 2.0.50727.5065 741,376 19-Nov-2010 04:31 x86
Objectexplorer.dll 10.0.4321.0 3,237,728 04-Sep-2011 02:34 x86
Oledbdest.dll 2007.100.4321.0 173,920 04-Sep-2011 02:32 x86
Oledbsrc.dll 2007.100.4321.0 186,720 04-Sep-2011 02:32 x86
Pfclnt.dll 2007.100.4321.0 1,098,080 04-Sep-2011 02:34 x86
Rawdest.dll 2007.100.4321.0 128,864 04-Sep-2011 02:32 x86
Rawsource.dll 2007.100.4321.0 120,672 04-Sep-2011 02:32 x86
Recordsetdest.dll 2007.100.4321.0 115,552 04-Sep-2011 02:32 x86
Replicationmonitor.dll 10.0.4321.0 2,041,696 04-Sep-2011 02:34 x86
Reportingservicesnativeclient.dll 2007.100.4321.0 129,376 04-Sep-2011 02:33 x86
Sql_ssms_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64
Sqlcmd.exe 2007.100.4321.0 538,464 04-Sep-2011 01:34 IA-64
Sqldest.dll 2007.100.4321.0 180,064 04-Sep-2011 02:32 x86
Sqleditors.dll 10.0.4321.0 1,226,592 04-Sep-2011 02:33 x86
Sqlmanagerui.dll 10.0.4321.0 7,563,104 04-Sep-2011 02:33 x86
Sqlmgmt.dll 10.0.4321.0 3,471,200 04-Sep-2011 02:33 x86
Sqlresolver.dll 10.0.4321.0 38,752 04-Sep-2011 02:33 x86
Sqlserverspatial.dll 2007.100.4321.0 666,976 04-Sep-2011 01:28 IA-64
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqlsvc.dll 2007.100.4321.0 373,600 04-Sep-2011 01:28 IA-64
Sqltaskconnections.dll 2007.100.4321.0 113,504 04-Sep-2011 02:32 x86
Txagg.dll 2007.100.4321.0 242,528 04-Sep-2011 02:23 x86
Txbestmatch.dll 2007.100.4321.0 444,256 04-Sep-2011 02:23 x86
Txcharmap.dll 2007.100.4321.0 195,424 04-Sep-2011 02:23 x86
Txdataconvert.dll 2007.100.4321.0 206,688 04-Sep-2011 02:23 x86
Txderived.dll 2007.100.4321.0 414,048 04-Sep-2011 02:23 x86
Txfileextractor.dll 2007.100.4321.0 126,816 04-Sep-2011 02:23 x86
Txfileinserter.dll 2007.100.4321.0 125,280 04-Sep-2011 02:23 x86
Txgroupdups.dll 2007.100.4321.0 258,400 04-Sep-2011 02:23 x86
Txlineage.dll 2007.100.4321.0 68,448 04-Sep-2011 02:23 x86
Txlookup.dll 2007.100.4321.0 354,656 04-Sep-2011 02:23 x86
Txmerge.dll 2007.100.4321.0 138,080 04-Sep-2011 02:23 x86
Txmergejoin.dll 2007.100.4321.0 179,552 04-Sep-2011 02:23 x86
Txpivot.dll 2007.100.4321.0 129,888 04-Sep-2011 02:23 x86
Txrowcount.dll 2007.100.4321.0 65,376 04-Sep-2011 02:23 x86
Txscd.dll 2007.100.4321.0 127,840 04-Sep-2011 02:22 x86
Txsort.dll 2007.100.4321.0 163,680 04-Sep-2011 02:22 x86
Txsplit.dll 2007.100.4321.0 410,464 04-Sep-2011 02:22 x86
Txtermextraction.dll 2007.100.4321.0 8,608,096 04-Sep-2011 02:22 x86
Txtermlookup.dll 2007.100.4321.0 4,088,160 04-Sep-2011 02:22 x86
Txunpivot.dll 2007.100.4321.0 128,352 04-Sep-2011 02:22 x86
SQL Server 2008 Tools and Workstation Components
File name File version File size Date Time Platform
Ddsshapeslib.dll 2007.100.4321.0 46,944 04-Sep-2011 02:38 x86
Dts.dll 2007.100.4321.0 1,431,904 04-Sep-2011 02:36 x86
Dts.dll 2007.100.4321.0 4,259,168 04-Sep-2011 01:29 IA-64
Dtscomexpreval.dll 2007.100.4321.0 334,176 04-Sep-2011 02:36 x86
Dtscomexpreval.dll 2007.100.4321.0 955,744 04-Sep-2011 01:29 IA-64
Dtsconn.dll 2007.100.4321.0 285,024 04-Sep-2011 02:36 x86
Dtsconn.dll 2007.100.4321.0 799,584 04-Sep-2011 01:29 IA-64
Dtspipeline.dll 2007.100.4321.0 2,026,336 04-Sep-2011 01:29 IA-64
Dtspipeline.dll 2007.100.4321.0 696,160 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 32,608 04-Sep-2011 02:36 x86
Dtspipelineperf100.dll 2007.100.4321.0 82,272 04-Sep-2011 01:29 IA-64
Dtswizard.exe 2007.100.4321.0 800,608 04-Sep-2011 01:32 IA-64
Dtswizard.exe 2007.100.4321.0 804,704 04-Sep-2011 02:38 x86
Exceldest.dll 2007.100.4321.0 173,408 04-Sep-2011 02:36 x86
Exceldest.dll 2007.100.4321.0 584,544 04-Sep-2011 01:29 IA-64
Excelsrc.dll 2007.100.4321.0 183,136 04-Sep-2011 02:36 x86
Excelsrc.dll 2007.100.4321.0 641,888 04-Sep-2011 01:29 IA-64
Flatfiledest.dll 2007.100.4321.0 276,320 04-Sep-2011 02:36 x86
Flatfiledest.dll 2007.100.4321.0 952,672 04-Sep-2011 01:29 IA-64
Flatfilesrc.dll 2007.100.4321.0 284,000 04-Sep-2011 02:36 x86
Flatfilesrc.dll 2007.100.4321.0 975,712 04-Sep-2011 01:29 IA-64
Mdxquerygenerator.dll 10.0.4321.0 87,904 04-Sep-2011 02:38 x86
Mergetxt.dll 2007.100.4321.0 29,536 04-Sep-2011 02:36 x86
Mergetxt.dll 2007.100.4321.0 68,448 04-Sep-2011 01:29 IA-64
Microsoft.analysisservices.controls.dll 10.0.4321.0 3,233,632 04-Sep-2011 02:38 x86
Microsoft.analysisservices.dll 10.0.4321.0 1,320,800 04-Sep-2011 02:38 x86
Microsoft.analysisservices.project.dll 2007.100.4321.0 1,988,448 04-Sep-2011 02:38 x86
Microsoft.sqlserver.chainer.infrastructure.dll 10.0.4321.0 235,360 04-Sep-2011 01:30 x86
Microsoft.sqlserver.configuration.sco.dll 10.0.4321.0 1,304,416 04-Sep-2011 01:30 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 01:31 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 01:26 x86
Msmdlocal.dll 10.0.4321.0 23,523,168 04-Sep-2011 02:36 x86
Msmdlocal.dll 10.0.4321.0 57,660,256 04-Sep-2011 01:29 IA-64
Msmdpp.dll 10.0.4321.0 6,131,552 04-Sep-2011 02:36 x86
Msmgdsrv.dll 10.0.4321.0 15,502,176 04-Sep-2011 01:26 IA-64
Msmgdsrv.dll 10.0.4321.0 8,568,160 04-Sep-2011 02:35 x86
Msolap100.dll 10.0.4321.0 10,068,320 04-Sep-2011 01:29 IA-64
Msolap100.dll 10.0.4321.0 6,536,032 04-Sep-2011 02:36 x86
Oledbdest.dll 2007.100.4321.0 173,920 04-Sep-2011 02:32 x86
Oledbdest.dll 2007.100.4321.0 586,592 04-Sep-2011 01:28 IA-64
Oledbsrc.dll 2007.100.4321.0 186,720 04-Sep-2011 02:32 x86
Oledbsrc.dll 2007.100.4321.0 653,664 04-Sep-2011 01:28 IA-64
Spresolv.dll 2007.100.4321.0 179,552 04-Sep-2011 02:32 x86
Spresolv.dll 2007.100.4321.0 506,208 04-Sep-2011 01:28 IA-64
Sql_tools_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64
Sqlsvc.dll 2007.100.4321.0 105,312 04-Sep-2011 02:32 x86
Sqlsvc.dll 2007.100.4321.0 373,600 04-Sep-2011 01:28 IA-64
Sqltaskconnections.dll 2007.100.4321.0 113,504 04-Sep-2011 02:32 x86
Sqltaskconnections.dll 2007.100.4321.0 335,200 04-Sep-2011 01:28 IA-64
Ssradd.dll 2007.100.4321.0 40,800 04-Sep-2011 02:23 x86
Ssradd.dll 2007.100.4321.0 91,488 04-Sep-2011 01:28 IA-64
Ssravg.dll 2007.100.4321.0 41,312 04-Sep-2011 02:23 x86
Ssravg.dll 2007.100.4321.0 91,488 04-Sep-2011 01:28 IA-64
Ssrdown.dll 2007.100.4321.0 26,464 04-Sep-2011 02:23 x86
Ssrdown.dll 2007.100.4321.0 57,696 04-Sep-2011 01:28 IA-64
Ssrmax.dll 2007.100.4321.0 39,776 04-Sep-2011 02:23 x86
Ssrmax.dll 2007.100.4321.0 85,856 04-Sep-2011 01:28 IA-64
Ssrmin.dll 2007.100.4321.0 39,264 04-Sep-2011 02:23 x86
Ssrmin.dll 2007.100.4321.0 85,856 04-Sep-2011 01:28 IA-64
Ssrpub.dll 2007.100.4321.0 26,976 04-Sep-2011 02:23 x86
Ssrpub.dll 2007.100.4321.0 60,768 04-Sep-2011 01:28 IA-64
Ssrup.dll 2007.100.4321.0 25,952 04-Sep-2011 02:23 x86
Ssrup.dll 2007.100.4321.0 58,208 04-Sep-2011 01:28 IA-64
Txdataconvert.dll 2007.100.4321.0 206,688 04-Sep-2011 02:23 x86
Txdataconvert.dll 2007.100.4321.0 674,656 04-Sep-2011 01:22 IA-64
SQL Server 2008 Integration Services
File name File version File size Date Time Platform
Commanddest.dll 2007.100.4321.0 557,920 04-Sep-2011 01:29 IA-64
Dts.dll 2007.100.4321.0 4,259,168 04-Sep-2011 01:29 IA-64
Dtscomexpreval.dll 2007.100.4321.0 955,744 04-Sep-2011 01:29 IA-64
Dtsconn.dll 2007.100.4321.0 799,584 04-Sep-2011 01:29 IA-64
Dtsinstall.exe 10.0.4321.0 427,872 04-Sep-2011 02:38 x86
Dtspipeline.dll 2007.100.4321.0 2,026,336 04-Sep-2011 01:29 IA-64
Dtspipelineperf100.dll 2007.100.4321.0 82,272 04-Sep-2011 01:29 IA-64
Dtswizard.exe 2007.100.4321.0 800,608 04-Sep-2011 01:32 IA-64
Exceldest.dll 2007.100.4321.0 584,544 04-Sep-2011 01:29 IA-64
Excelsrc.dll 2007.100.4321.0 641,888 04-Sep-2011 01:29 IA-64
Flatfiledest.dll 2007.100.4321.0 952,672 04-Sep-2011 01:29 IA-64
Flatfilesrc.dll 2007.100.4321.0 975,712 04-Sep-2011 01:29 IA-64
Microsoft.sqlserver.dataprofiler.dll 10.0.4321.0 280,416 04-Sep-2011 01:32 x86
Microsoft.sqlserver.maintenanceplantasks.dll 10.0.4321.0 296,800 04-Sep-2011 02:37 x86
Microsoft.sqlserver.pipelinehost.dll 10.0.4321.0 71,520 04-Sep-2011 01:31 x86
Microsoft.sqlserver.transferobjectstask.dll 10.0.4321.0 141,152 04-Sep-2011 02:35 x86
Microsoft.sqlserver.xmlsrc.dll 10.0.4321.0 108,384 04-Sep-2011 01:26 x86
Msdtssrvr.exe 10.0.4321.0 210,784 04-Sep-2011 01:32 IA-64
Msmdpp.dll 10.0.4321.0 8,883,552 04-Sep-2011 01:29 IA-64
Oledbdest.dll 2007.100.4321.0 586,592 04-Sep-2011 01:28 IA-64
Oledbsrc.dll 2007.100.4321.0 653,664 04-Sep-2011 01:28 IA-64
Rawdest.dll 2007.100.4321.0 436,576 04-Sep-2011 01:28 IA-64
Rawsource.dll 2007.100.4321.0 414,048 04-Sep-2011 01:28 IA-64
Recordsetdest.dll 2007.100.4321.0 384,864 04-Sep-2011 01:28 IA-64
Sql_is_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64
Sqldest.dll 2007.100.4321.0 602,976 04-Sep-2011 01:28 IA-64
Sqltaskconnections.dll 2007.100.4321.0 335,200 04-Sep-2011 01:28 IA-64
Txagg.dll 2007.100.4321.0 879,968 04-Sep-2011 01:28 IA-64
Txbestmatch.dll 2007.100.4321.0 1,697,120 04-Sep-2011 01:28 IA-64
Txcharmap.dll 2007.100.4321.0 654,688 04-Sep-2011 01:28 IA-64
Txdataconvert.dll 2007.100.4321.0 674,656 04-Sep-2011 01:22 IA-64
Txderived.dll 2007.100.4321.0 1,275,232 04-Sep-2011 01:22 IA-64
Txfileextractor.dll 2007.100.4321.0 432,480 04-Sep-2011 01:22 IA-64
Txfileinserter.dll 2007.100.4321.0 429,920 04-Sep-2011 01:22 IA-64
Txgroupdups.dll 2007.100.4321.0 941,920 04-Sep-2011 01:22 IA-64
Txlineage.dll 2007.100.4321.0 216,416 04-Sep-2011 01:22 IA-64
Txlookup.dll 2007.100.4321.0 1,185,632 04-Sep-2011 01:22 IA-64
Txmerge.dll 2007.100.4321.0 511,328 04-Sep-2011 01:22 IA-64
Txmergejoin.dll 2007.100.4321.0 619,872 04-Sep-2011 01:22 IA-64
Txpivot.dll 2007.100.4321.0 456,544 04-Sep-2011 01:22 IA-64
Txrowcount.dll 2007.100.4321.0 195,936 04-Sep-2011 01:22 IA-64
Txscd.dll 2007.100.4321.0 441,696 04-Sep-2011 01:22 IA-64
Txsort.dll 2007.100.4321.0 560,480 04-Sep-2011 01:22 IA-64
Txsplit.dll 2007.100.4321.0 1,255,776 04-Sep-2011 01:22 IA-64
Txtermextraction.dll 2007.100.4321.0 9,110,368 04-Sep-2011 01:22 IA-64
Txtermlookup.dll 2007.100.4321.0 4,531,552 04-Sep-2011 01:22 IA-64
Txunpivot.dll 2007.100.4321.0 446,304 04-Sep-2011 01:22 IA-64
SQL Server 2008 Full-Text Search Engine
File name File version File size Date Time Platform
Fd.dll 2007.100.4321.0 1,141,600 04-Sep-2011 01:29 IA-64
Iftsph.dll 2007.100.4321.0 88,416 04-Sep-2011 01:29 IA-64
Lrpolish.dll 1.10.0.0 209,488 25-Aug-2011 16:21 IA-64
Msfte.dll 12.0.9732.0 7,081,840 25-Aug-2011 16:21 IA-64
Sql_fulltext_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64
SQL Server 2008 Browser Service
File name File version File size Date Time Platform
Msmdredir.dll 10.0.4321.0 8,508,256 04-Sep-2011 01:29 IA-64
Msmdsrv.rll 10.0.4321.0 669,024 04-Sep-2011 01:08 IA-64
Sqlbrowser.exe 2007.100.4321.0 528,736 04-Sep-2011 01:34 IA-64
Sqlbrowser_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64
SQL Server 2008 Native Client
Filename Fileversion Filesize Date Time
Msvcm80.dll 8.0.50727.1833 479,232 15-May-2008 03:51
Msvcp80.dll 8.0.50727.1833 558,080 15-May-2008 11:11
Msvcr80.dll 8.0.50727.1833 635,904 15-May-2008 11:14
Sqlncli_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 08:29
Sqlncli10.dll 2007.100.4321.0 2,570,080 04-Sep-2011 09:32
SQL Server 2008 Common Language Runtime
File name File version File size Date Time Platform
Sqlserverspatial.dll 2007.100.4321.0 666,976 04-Sep-2011 01:28 IA-64
Sqlsysclrtypes_keyfile.dll 2007.100.4321.0 19,296 04-Sep-2011 01:29 IA-64

Fontes e Direitos Autorais: Microsoft – http://support.microsoft.com/kb/2582285

Script – Material de Apoio – SQL Server 2008 e R2.


Pesssoal, boa tarde.

Tudo bem como vocês? Peço desculpas por esta ausente nos últimos dias, mas realmente estou com alguns problemas que precisam se resolvidos e acabam consumindo um pouco do meu tempo, mas como sempre eu procuro me organizar e manter a minha rotina em ordem.

Pois bem, sendo assim, hoje vou compartilhar com vocês uma nova relação de arquivos de scripts, especialmente desenvolvidos para serem utilizados com o SQL Server 2008 e R2. Ainda mais que estamos se aproximando do lançamento do SQL Denali, nada mais justo que trazer alguns informações e exemplos mais atuais.

A relação de arquivos esta bastante diversificada, desde informações sobre Compressão de Dados, Página de Dados e Backup, Mirroring Database até um pouco de Resource Governor, a Figura 1 apresenta a relação de Scripts e seus nomes.

                             Figura 1 – Relação de Scripts.

Como de costume todos os arquivos estão renomeado com a extensão .doc por questões de suportabilidade do WordPress.com, para disponibilização de arquivos. Após realizar o download basta renomear cada arquivo deixando somente a extensão. sql.

Segue abaixo a relação de arquivos, fique a vontade para compartilhar com seus contatos.

Exemplo – Backup Database + Mirroring.sql

Exemplo – Utilizando – Select com Resource Governor.sql

Exemplo – Passos – Habilitar – Criptografia – DB.SQL

Exemplo – Criando – Passos – Habilitar – Criptografia – DB.sql

Exemplo – Configuração – Resource Governor.sql

Exemplo – Compressão de Dados – SQL Server Day.SQL

Exemplo – Compressão de Dados – Artigo – SQLMagazine.sql

Exemplo – Compactação de Tables e Index.sql

Exemplo – Compactação de Backup.sql

Bom esta é mais uma relação de arquivos que disponibilizo para a Comunidade, espero que este material possa ajudar em algum momento em suas atividades Acadêmicas, Profissionais até mesmo no seu dia-á-dia.

Agradeço mais uma vez a sua visita, nos encontramos em breve.

Até mais.

Troubleshooting no SQL Server 2008 com Extendeds Events – Parte 2.


Pessoal, boa tarde.

Alguma novidade?

Estou de volta conforme o prometido para dar continuidade na minha nova série sobre Extendeds Events, disponibilizados pela Microsoft no SQL Server a partir da versão 2005 e aperfeiçoado de diversas formas no SQL Server 2008.

Na primeira parte deste artigo destaquei alguns dos conceitos relacionados aos Eventos Estendidos, nesta segunda parte, vou continuar apresentando estes conceitos e apresentar como podemos começar a consultar informações através de algumas DMV´s (Visões de Gerenciamento Dinâmico).

—————————————————————————————————————-

Além dos Eventos e Predicados utilizados pelos Extendeds Events, podemos nos deparar com as Actions(Ações).


O que é uma Ação?

As ações são identificadas pelo SQL Server como um conjunto de comandos executados de forma síncrona, antes de um
evento ser consumido.


O que um payload?

Podemos definir um payload, como um conjunto de informações que identificam um evento durante sua execução. As ações executadas para cada evento, normalmente adicionam mais informações ao payload do evento, como um plano de execução, por exemplo. O que proporciona ao SQL Server armazenar um conjunto de informações sobre payload e ações relacionadas ao evento.

Agora que já sabemos o que significa Ações e Payload, vamos conhecer outro conceito, muito importante para os Extendeds Events, chamado Destino(Target).
O que é um Destino?
Os Destino (Target) são reconhecidos como uma maneira de consumir os eventos. Podemos consumir qualquer evento (ou descartar o mesmo caso não haja o que consumir no evento). Os Targets podem consumir eventos de forma síncrona (o código que disparou o evento espera o evento ser consumido) ou de forma assíncrona.

Outros conceitos – Pacotes(Packages): 
Conhecidos como um container que define objetos de eventos extendidos (eventos, ações, destinos). Os Pacotes são encontrados dentro dos módulos (DLLs, executáveis), conforme apresenta a Figura 1 abaixo.
 Figura 1 – Pacotes e sua Estrutura: Módulos, Pacotes e Objetos.

Outros conceitos – Sessões(Sessions):
Maneira de “conectar” objetos de eventos extendidos para processamento (um evento com uma ação para ser consumido por um destino.

Outros conceitos – Mapas(Maps):
Permitem que o usuário entenda o sentido do valor, fornecendo descrições sobre os valores internos. Os mapas contêm tudo desde estados do broker até os wait types, e incluem até o canal e palavra-chave para categorizar eventos em seus respectivos grupos.
Bom agora que já conhecimentos todos os principais conceitos relacionados diretamente com os Eventos Estendidos, vou apresentar como podemos consultar informações sobre cada conceitos, através das Visões de Gerenciamento Dinâmico criadas a partir do SQL Server 2005, conforme apresenta a Tabela 1 abaixo:
Agora que já sabemos as Visões de Gerenciamento Dinâmico envolvidas com o Eventos Estendidos, vou apresentar a seguir como podemos consultar cada uma destas DMVs, conforme os códigos apresentados abaixo:

Código 1 – Obtendo a relação de Eventos:

SELECT xp.[name], xo.*

FROM sys.dm_xe_objects xo, sys.dm_xe_packages xp

WHERE xp.[guid] = xo.[package_guid]

AND xo.[object_type] = ‘event’

ORDER BY xp.[name];

 

Código 2 – Obtendo a relação de Payloads de um Evento:

SELECT * FROM sys.dm_xe_object_columns

WHERE [object_name] = ‘sql_statement_completed’;

GO

 

Código 3 – Obtendo a relação de Predicados de um Evento:

SELECT * FROM sys.dm_xe_objects

WHERE object_type in (‘pred_compare’, ‘pred_source’)

ORDER BY name

 

Código 4 – Obtendo a relação de Ações relacionadas a um Pacote:

SELECT xp.[name], xo.*

FROM sys.dm_xe_objects xo, sys.dm_xe_packages xp

WHERE xp.[guid] = xo.[package_guid]

AND xo.[object_type] = ‘action’

ORDER BY xp.[name];

 

Código 5 – Obtendo a relação de Destinos de um Pacote:

SELECT xp.[name], xo.*

FROM sys.dm_xe_objects xo, sys.dm_xe_packages xp

WHERE xp.[guid] = xo.[package_guid]

AND xo.[object_type] = ‘target’

ORDER BY xp.[name];

 

Código 6 – Obtendo a relação de Sessões:

SELECT * FROM sys.dm_xe_sessions;

 

Código 7 – Obtendo a relação de Mapas:

SELECT name, map_key, map_value FROM sys.dm_xe_map_values

ORDER BY name, map_key

Muito bem, chegamos ao ponto final desta segunta parte, todos os principais conceitos foram apresentados, as Visões de Gerenciamento Dinâmico utilizadas para cada conceito também foram descritas, como também os códigos para utilizar, consultar e retornar informações sobre estes conceitos e suas principais informações.
Agradeço mais uma vez a sua visita, nos encontramos em breve na terceira parte, onde vou apresentar os cenários e soluções que podemos trabalhar com os Extendeds Events.
Mais uma vez obrigado.
Até mais.

Troubleshooting no SQL Server 2008 com Extendeds Events – Parte 1.


Pessoal, boa tarde.

Tudo bem com você?

Após um período de reflexão, inatividade e um pouco de cuidados com a minha saúde, estou de volta com minhas atividades, principalmente em relação ao meu blog.

Neste últimos dias andei pensando qual poderia seria ser a nova série de assuntos que gostaria de abordar em meu blog, pesquisei muito na Internet, vasculhei também meus Scripts e não poderia deixar de consultar o fantástico Books On-Line.

Muito bem, repleto de ideias e pensamentos, como também curioso para aprender algo novo, vou começar hoje a apresentar um pouco sobre os chamados Extendeds Events, mais conhecidos como Eventos Estendidos. De que forma este recurso pode ser utilizado no SQL Server 2008 como uma ferramenta ou técnica para Troubleshooting.

Antes de querer apresentar algum tipo de código, cenários, formas de uso, vou tentar explicar inicialmente o que estes eventos estendidos representam para o SQL Server e também para o próprio Windows.

Troubleshooting SQL Server 2005?

Apesar do SQL Server 2005 ter aumentado a gama de recursos para troubleshooting ainda havia alguns problemas com tais
ferramentas. Os comandos DBCC precisam ter seu resultado armazenado em algum local, como uma tabela, para posterior análise, e utilizar o SQL Trace/SQL Server Profiler pode consumir muitos recursos do servidor, principalmente se não utilizados com os devidos cuidados.

Ainda no SQL Server 2005:  As DMVs apresentam uma série de informações internas do SQL Server. Parte das informações já podiam ser obtidas através de DBCCs, só que agora de forma mais fácil e completa. Outras possibilidades seriam utilizar os DDL Triggers e também os Event Notifications.

Justamente para tentar melhorar e possibilitar outras formas de resolução de problemas que o Extendeds Events foram criados.

Para isso vamos começar com a seguinte pergunta.

O que seriam Extendeds Events?

Basicamente os Extendeds Events (Eventos Estendidos) são reconhecidos como um sistema de manipulação de eventos para sistemas operacionais de servidores. A infraestrutura de Eventos Estendidos oferece suporte à correlação de dados do SQL Server e, em certas condições, à correlação de dados entre sistema operacional e aplicativos de banco de dados.

Podem também ser definidos ou denominados como, um sistema genérico de gerenciamento de eventos para servidores. Permitindo relacionar informações do SQL Server e do sistema operacional.

Uma das principais vantagens dos Extended Events é o fato de podermos relacionar estes com a estrutura de Event Tracing for
Windows (ETW), que é uma estrutura que permite obter informações de diagnóstico no Windows.
Os eventos no SQL Server são categorizados de forma similar a encontrada no ETW, utilizando os chamados Channels (canais) e Keywords (palavras-chave). Isso foi feito exatamente para permitir a correlação de informações.

O sistema Eventos Estendidos tem os seguintes principais aspectos:

  • O mecanismo Eventos Estendidos é agnóstico, o que permite que o mecanismo associe qualquer evento a qualquer destino porque não é restrito ao conteúdo do evento.
  • Os eventos são separados dos consumidores de evento, que são chamados destinos em Eventos Estendidos. Isso significa que qualquer destino pode  receber qualquer evento. Além disso, qualquer evento gerado pode ser consumido automaticamente pelo destino, que pode registrar ou fornecer contexto de evento adicional.
  • Os eventos são distintos quanto à ação no disparo de um evento. Como resultado, qualquer ação pode ser associada a qualquer evento.

O mecanismo Eventos Estendidos pode gerar dados de evento de forma síncrona (e processar os dados de forma assíncrona) o que fornece uma solução flexível para manipulação de eventos. Além disso, o mecanismo Eventos Estendidos fornece os seguintes recursos:

  • Uma abordagem unificada no tratamento de eventos em todo o sistema de servidor, permitindo, ao mesmo tempo, que os usuários isolem eventos específicos com a finalidade de solucionar problemas;
  • Um mecanismo de tratamento de evento completamente configurável com base no Transact-SQL; e
  • A habilidade de monitorar processos ativos dinamicamente com efeito mínimo sobre esses processos.

Os Eventos Estendidos possuem alguns elementos que formam a sua estrutura básica de funcionamento, dentre estes elementos, vou destacar inicialmente os Predicados.

O que é um Predicado?

Os Predicados são conhecidos como filtros dinamicos envolvidos nos disparos realizados para cada evento, com objetivo de aumentar a flexibilidade da infraestrutura do mecanismo Eventos Estendidos.

Outro elemento importante que esta diretamente relacionado com os Eventos Estendidos, são os chamados Events(Eventos):
O que é um Evento? Qual sua finalidade?
Evento (Event): é um ponto definido no código. Cada evento tem o seu “payload” determinado, ou seja, o conjunto de colunas que retorna. O SQL Server 2008 RTM apresenta 254 eventos, apesar de que mais eventos devem ser adicionados com o tempo.
Todo evento pertence a um dos quatro canais existentes, conforme a tabela abaixo:
Além de pertencer a um canal, estes são agrupados em palavras-chave, que são basicamente a parte do sistema que diz ter ativado o evento. Os Eventos podem ser considerados objetos similares a agrupamento de objetos do SQL Server Profiler.
Observação: Dentre estes diversos eventos existentes na versão 2008 RTM, alguns apresetam problemas que foram corrigidos, a partir da aplicação do Service Pack1 para o SQL Server 2008.
Bem pessoal, vou encerrar esta primeira parte aqui. Acredito que para começar a falar deste assunto os conceitos básicos já foram apresentados, o que nos deixa capaz de entender e começar a imaginar como os Extendeds Events podem ser utilizados.
Na próxima parte, vou destacar os demais conceitos que podem ser utilizados com este recurso, como também, suas tabelas e visões de sistemas.
Por enquanto muito obrigado, agradeço mais uma vez sua visita, nos encontramos nos próximos dias.
Até mais.

Determinando o uso de Memória por Banco de Dados e Objetos no SQL Server 2008.


Quando se referimos a utilização de memória por parte do SQL Server, muitas discussões, dúvidas e até mesmo informações
desencontradas são apresentadas. Para muitos profissionais, desenvolvedores e até mesmo entusiastas do SQL Server, este assunto é algo que acaba se tornando um grande enigma.

Básicamente uma porcentagem da memória consumida pelo SQL Server refere-se ao pool de buffers(exclusivamente, por dados em uso), independente da instância que possa estar sendo utilizada.

Mas como podemos tentar descobrir como este sendo consumido pelo SQL Server? Quais objetos e até mesmo Banco de Dados estão fazendo uso dos pools de buffers?

Pois bem, é justamente a respostas para estas perguntas que vou procurar responder neste artigo!!!

Para realizarmos este tipo de busca de informações, necessitamos vasculhar um pouco das informações armazenadas pelo SQL Server em seu catálogo de visões. Isso pode ser considerado algo difícil de se dizer.  Qual dos seus bancos de dados estão consumindo mais  memória de pool de buffer, e mais ainda, que objetos dentro desses bancos de dados, podem ser forçando este tipo de situação.

No que estas informações podem me ajudar?

Estas respostas podem se tornar informações de grande importância, por exemplo, se você está considerando uma mudança de
aplicativo para dividir seu banco de dados em vários servidores ou tentando identificar bancos de dados que são candidatos à consolidação. Além disso, se o seu ambiente estiver apresentando algum tipo de consumo excessivo de memória em determinados aplicativos ou funcionalidades em execução.  

Utilizando a DMV Sys.dm_os_buffer_descriptors.

Para conseguirmos encontrar as informações referentes aos buffers existentes em cache colocados pelo SQL Server após a execução de suas transações, podemos utilizar a exibição de gerenciamento dinâmico (DMV) introduzido no SQL Server 2005, chamada sys.dm_os_buffer_descriptors. Esta DMV contém uma linha para cada página que foi colocado no cache na área de buffer.

Usando esta DMV, você poderá determinar rapidamente quais bancos de dados estão utilizando a maioria da memória de pool do buffer.  Depois de ter identificado os bancos de dados que estão ocupando grande parte da área de buffer, fica mais fácil detalhar de
forma individual  o que esta sendo consumido por cada banco.

Para demonstrar como podemos começar a utilizar a sys.dm_os_buffer_descriptors, apresento a seguir a Listagem 1.
Através deste código conseguiremos descobrir exatamente como grande pool de buffers atualmente é esta sendo gerado fazendo uso de outra DMV (sys.dm_os_performance_counters) o que vai permitir calcular a porcentagem de área de buffer que está sendo usada por cada banco de dados, conforme apresenta a Figura 1.

Observação: Para consultar a DMV sys.dm_os_buffer_descriptiors é necessário possuir permissão de acesso as visões de estado do servidor(View Server State). Segue abaixo a Listagem 1:

— Listagem 1: Consultando o pool de buffers em uso –

–Declarando a varíavel @Buffers_EmUso —

Declare @Buffers_EmUso Int;

/* Acumando o valor dos contadores na variável @Buffers_EmUso, filtrando pelo Object_Name=Buffer Manager e Counter_Name=Total Pages*/

Select @Buffers_EmUso = cntr_value From Sys.dm_os_performance_counters

Where Rtrim(Object_name) LIKE ‘%Buffer Manager’

And counter_name = ‘Total Pages’;

— Declarando a CTE Buffers_Pages para contagem de Buffers por página —

;With DB_Buffers_Pages AS

(

SELECT database_id, Contagem_Buffers_Por_Pagina  = COUNT_BIG(*)

From Sys.dm_os_buffer_descriptors

Group By database_id

)

— Retornando informações sobre os pools de Buffers por Banco de Dados com base na CTE DB_Buffers_Pages —

Select Case [database_id] WHEN 32767 Then ‘Recursos de Banco de Dados’ Else DB_NAME([database_id]) End As ‘Banco de Dados’,

Contagem_Buffers_Por_Pagina,

‘Buffers em MBs por Banco’ = Contagem_Buffers_Por_Pagina / 128,

‘Porcentagem de Buffers’ = CONVERT(DECIMAL(6,3), Contagem_Buffers_Por_Pagina * 100.0 / @Buffers_EmUso)

From DB_Buffers_Pages

Order By ‘Buffers em MBs por Banco’ Desc;

Figura 1 – Pool de Buffers utilizados por Bancos de Dados.

Você pode observar através da Figura 1,  que os os Bancos de dados de Sistema foram incluídos em nossa listagem, caso você deseje retornar somente seus próprios bancos de dados, basta realizar uma pequena alteração na CTE DB_Buffers_Page.

Acrescente na claúsula Where a filtragem por bancos de dados usuário, algo que poderá variar entre as versões do SQL Server,
inclusive na próxima versão por enquando denominada Denali, que deverá apresentar um novo banco de dados para os serviços de integração, chamado SSISDB.

Analisando o resultado apresentado na Figura 1, podemos observar que neste momento na minha instância SQL Server, o Resource DB(Recursos Internos de Banco de Dados) estão ocupando a maior porcentagem de Pool Buffers, aproximadamente 29% de todos os recursos de pools buffers disponíveis. Mas a análise que pretendo apresentar neste artigo, será realizado sobre um dos meus bancos de dados, vou então utilizar o banco de dados denominado CRIPTOGRAFIA,
que esta consumindo aproximadamente 13% dos recursos de pools buffers disponíveis.

Então, agora que sabemos que este banco de dados esta ocupando uma parte considerável dos meus recursos disponíveis para o SQL Server, vamos posteriormente a esta análise, começar a vasculhar quais os objetos estão consumindo memória dentro deste banco.

Para realizarmos este procedimento, podemos utilizar mais uma vez a DMV,  sys.dm_os_buffer_descriptors só que desta vez, em vez de agregar as contagens de página no nível do banco de dados, nós podemos utilizar um conjunto de exibições do catálogo para determinar o número de páginas (e, portanto, quantidade de memória) dedicado a cada objeto. Neste caso vou utilizar as seguinte visões de catálogo:

  • Sys.partitions: Contém uma linha para cada partição de todas as tabelas e índices no banco de dados. Todas as tabelas e índices no SQL Server 2008 contêm pelo menos uma partição, estejam ou não divididos
    explicitamente.
  • Sys.allocation_units: Contém uma linha para cada unidade de alocação no banco de dados.
  • Sys.objects: Contém uma linha para cada objeto criado pelo usuário no banco de dados.
  • Sys.indexes: Contém uma linha para cada índice criado pelo usuário no banco de dados.

Agora que já sabemos quais visões de catálogo vou utilizar em conjunto com dmv sys.dm_os_buffers_descriptions, podemos executar a Listagem 2 apresentada a seguir:

— Listagem 2: Retornando pools Buffers de Objetos por Banco de Dados —

USE CRIPTOGRAFIA

GO

— Declarando a CTE Buffers_Pages para retorno dos Objetos alocados em Pool —

;WITH DB_Buffers_Pages_Objetos AS

(

Select

SO.name As Objeto,

SO.type_desc As TipoObjeto,

COALESCE(SI.name, ”) As Indice,

SI.type_desc As TipoIndice,

p.[object_id],

p.index_id,

AU.allocation_unit_id

From sys.partitions AS P INNER JOIN sys.allocation_units AS AU

ON p.hobt_id = au.container_id

INNER JOIN sys.objects AS SO
ON p.[object_id] = SO.[object_id]
INNER JOIN sys.indexes AS SI
ON SO.[object_id] = SI.[object_id]
AND p.index_id = SI.index_id

Where AU.[type] IN (1,2,3)

And SO.is_ms_shipped = 0

)

— Retornando informações sobre os pools de Buffers de Objetos por Banco de Dados com base na CTE DB_Buffers_Pages_Objetos —

Select Db.Objeto, Db.TipoObjeto  As ‘Tipo Objeto’,

Db.Indice,

Db.TipoIndice,

COUNT_BIG(b.page_id) As ‘Buffers Por Página’,

COUNT_BIG(b.page_id) / 128 As ‘Buffers em MBs’

From DB_Buffers_Pages_Objetos Db INNER JOIN sys.dm_os_buffer_descriptors AS b

ON Db.allocation_unit_id = b.allocation_unit_id

Where b.database_id = DB_ID()

Group By Db.Objeto, Db.TipoObjeto, Db.Indice, Db.TipoIndice

Order By ‘Buffers Por Página’ Desc, TipoIndice Desc;

Figura 2 – Pool de Buffers utilizados por Objetos dentro do Banco de Dados Criptografia.

Analisando o resultado apresentado na Figura 2, podemos observar os objetos, seus respectivos índices, a quantidade de buffers por página e buffers em megabytes. Vale ressaltar que somente a tabela Eventos possui um índice clusterizado.

Outra observação importante todos os pool de buffers possuem um  fluxo constante, e que esta consulta apresenta exatamente o último pool de buffer objetos do sistema, estes números vão sempre variar, e conforme o uso dos objetos os mesmo poderam aumentar de acordo com sua carga de dados. Ainda assim, isso deve dar uma ideia de quais objetos estão usando mais de seu pool de buffers.

Ao investigar o desempenho de seus servidores, dados de pool do buffer são apenas uma parte da imagem, mas que em muitas vezes esquecido pelos Profissionais durante os procedimentos de manutenção ou investigação.

Bom após esta enchurrada de informações, acredito ter conseguido atinguir o objetivo deste artigo, apresentando como o SQL Server trabalha com a memória em seus bancos de dados e objetos. De que forma ocorre o consumo deste recursos, qual a importância dos pools de buffers disponíveis para estes objetos.

Espero que você tenha gostado de mais este artigo, que as informações apresentas aqui sobre Consumo de Memória, Pools de Buffers, possam ser úteis no seu trabalho e estudos.

Agradeço a sua visita, até o próximo artigo.

Valeu.

———————————————————————————————————————————————————-

Referências: http://www.mssqltips.com/tip.asp?tip=2393 – Aaron Bertrand.

Books On-Line SQL Server 2008 R2.