Category Archives: SQL

Preparação para o MCM SQL Server 2008 – Parte VI

Então….
faz um tempo que não escrevo sobre a novela do MCM,,,
Essa história do pagamento deu uma dor de cabeça, o pessoal do banco não ajudo em nada, a empresa não tem cartão de crédito pra ajudar, e fazer transferencia bancária internacional tem umas taxas e sai bem caro e demora….
Mas, qualquer um ficaria chateado, desmotivado,,, talvez até um pouco jururú, mas não, um amigo tem O cartão coração de mãe, consegui fazer o pagamento do esquema hoje e já ta confirmado.
MAIO é nois na Microsoft fazendo o MCM uhuhuhuhu

Como ler o Select @@version

A simples query SELECT @@VERSION pode informado um pouco sobre a instalação do SQL Server (e o sistema operacional), assumindo que você sabe ler o resultado. Muitas pessoas não sabem diferenciar entre as informações do SO e do SQL.
Você pode determinar se você está rodando em x86 (32 bits), x64 ou IA64 (64 bits), para ambos SO e SQL, Você pode determinar a versão e o build do SQL Server, você ainda pode descobrir qual versão do Service Pack do Windows.
[//]Vendo o primeiro exemplo abaixo, você pode ver as informações do SQL Server na primeira parte do resultado, em seguida as informações do sistema operacional que está após a palavra “on”.

Microsoft SQL Server 2008 R2 (CTP) – 10.50.1092.20 (Intel X86) Jul 22 2009 21:29:56 Copyright (c) Microsoft Corporation Enterprise Evaluation Edition on Windows NT 6.1 (Build 7100: )

 

-- SQL Server Major Versions
9.00 - SQL Server 2005
10.0 - SQL Server 2008
10.25 - SQL Server Azure
10.50 - SQL Server 2008 R2
 

-- SQL Server 2005/2008 Build lists

--   2005 SP2 Builds                  2008 SP3 Builds
-- Build       Description        Build       Description
-- 3042        SP2 RTM              4035        SP3 RTM
-- 3161        SP2 CU1              4207        SP3 CU1
-- 3175        SP2 CU2              4211        SP3 CU2 
-- 3186        SP2 CU3              4220        SP3 CU3         
-- 3200        SP2 CU4              4226        SP3 CU4         
-- 3215        SP2 CU5              4230        SP3 CU5          
-- 3228        SP2 CU6              4266        SP3 CU6        
-- 3239        SP2 CU7              4273        SP3 CU7        
-- 3257        SP2 CU8
-- 3282        SP2 CU9
-- 3294        SP2 CU10
-- 3301        SP2 CU11
-- 3315        SP2 CU12
-- 3325        SP2 CU13
-- 3328        SP2 CU14
-- 3330        SP2 CU15
-- 3355        SP2 CU16
-- 3356        SP2 CU17

--   2008 RTM Builds                    2008 SP1 Builds
-- Build       Description        Build        Description
-- 1600        Gold RTM
-- 1763        RTM CU1
-- 1779        RTM CU2
-- 1787        RTM CU3    -->      2531        SP1 RTM
-- 1798        RTM CU4    -->      2710        SP1 CU1
-- 1806        RTM CU5    -->      2714        SP1 CU2 
-- 1812        RTM CU6    -->      2723        SP1 CU3
-- 1818        RTM CU7    -->      2734        SP1 CU4
-- 1823        RTM CU8    -->      2746        SP1 CU5

-- Windows Major Versions
Windows NT 5.1    - Windows XP
Windows NT 5.2    - Windows Server 2003
Windows NT 6.0, Build 6001 - Vista 
Windows NT 6.0, Build 6002 - Windows Server 2008
Windows NT 6.1  - Windows Server 2008 R2 or Windows 7
-- Alguns exemplos do SELECT @@VERSION

-- 32-bit SQL Server 2005 Developer Edition Build 4262, running on 32-bit Windows Server 2003 SP2
Microsoft SQL Server 2005 - 9.00.4262.00 (Intel X86)   Aug 13 2009 17:08:37   
Copyright (c) 1988-2005 Microsoft Corporation  Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

-- 32-bit SQL Server 2005 Standard Edition Build 4262, running on 32-bit Windows Server 2003 SP2
Microsoft SQL Server 2005 - 9.00.4262.00 (Intel X86)   Aug 13 2009 17:08:37   
Copyright (c) 1988-2005 Microsoft Corporation  Standard Edition 
on Windows NT 5.2 (Build 3790: Service Pack 2)

-- 64-bit SQL Server 2008 Enterprise Edition Build 2746, running on 64-bit Windows Server 2003 SP2
Microsoft SQL Server 2008 (SP1) - 10.0.2746.0 (X64)   Nov  9 2009 16:37:47   
Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Edition (64-bit) 
on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)  

-- 64-bit SQL Server 2008 Enterprise Edition Build 2746, running on 64-bit Windows Server 2008 SP2
Microsoft SQL Server 2008 (SP1) - 10.0.2746.0 (X64)   Nov  9 2009 16:37:47   
Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Edition (64-bit) 
on Windows NT 6.0 <X64> (Build 6002: Service Pack 2) 

-- 64-bit SQL Server 2008 Enterprise Edition Build 2746, running on 64-bit Windows Server 2008 R2 (or Windows 7)
Microsoft SQL Server 2008 (SP1) - 10.0.2746.0 (X64)   Nov  9 2009 16:37:47
Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )  

Preparação para o MCM SQL Server 2008 – Parte V

UHUHUHUUHUHUHUHUH
Recebi hoje a confirmação dos requisitos para o curso eeeeeeee 😀 😀 😀
agora preciso pagar, essa é a parte bem complicada…
pelo site do MCM eles tem aceitão pagamento apenas por Cartão de Credito (Visa, Marter, Amex) e meus limites de crédito não passão nem perto do valor do curso…
Acho que o martirio agora será conversar com o banco para tentar negociar um aumento de crédito… bua bua bua 🙁

Preparação para o MCM SQL Server 2008 – Parte III

Bom,,,
A Minha professora de inglês fez a tradução dos documentos para encaminhar para a Microsoft, isso foi uma grande ajuda…
Acabei o cadastro no link que eles haviam enviado, mas até agora não tive a liberação do link para upload dos arquivos… já mandei uns 3 emails para eles e ninguem respondeu… 🙁
Tentei ligar agora pela manhã, mas ai lembrei que tem o fuso horário,,, vou tentar ligar a tarde para falar com alguém.

Preparação para o MCM SQL Server 2008 – Parte II

Bom,,,
Recebei hoje a resposta da inscrição para o MCM…. eeeeeeeeeeeeeeeee
A primeira parte já foi, meu transcript está aprovado agora preciso aprontar o caso de estudo e traduzir meu currículo para inglês.
Após aprontar os dois arquivos tenho que fazer upload deles para um link que recebi no email, eles vão analisar os 2 e vamos ver se aprovarão…. mais trabalho,,,,

Preparação para o MCM SQL Server 2008

É pessoal,,,

agora vamos ver se tenho conhecimento suficiente, me inscrevi hoje para o MCM SQL Server 2008.

http://www.microsoft.com/learning/en/us/certification/master.aspx

Já possuo os pré-requisitos para pelo menos passar na 1º parte que é a validação do transcript com as certificações de Database Administrator e Database Developer.

Já fico muito feliz de pelo menos tentar, se eles aceitarem meu registro e depois eu conseguir me inscrever para o curso já vo fica muuuuito mais feliz.

Passar nas provas do treinamento então,,, uahuahauhauhau

Enquanto o pessoal da Microsoft avalia o transcript, Dna. Patroa e eu estamos vendo hotel e passagem pra ir pra lá.

Se começar a somar todos os valores envolvidos começa a desanimar, não é nada barato pra gente (ainda mais com nossa renda), já estamos economizando faz um tempão e cada vez que o dolar aumenta fica pior ainda.

Conforme eu for passando no processo da inscrição do MCM vo escrevendo…. 😀

Utilizando Views Dinâmicas para monitorar e melhorar a performance do SQL Server

Utilizar Dynamic Management Views (DMVs) é uma boa opção para monitorar o SQL Server. DMVs são uma coleção de views e funções de tabelas que habilitão você a obter informações sobre trabalhos internos do SQL Server. Vou comentar um pouco sobre DMVs.
DMVs é uma parte do schema sys na base master. Você pode localizar uma lsta de views dinâmicas pelo SQL Server Managemente Studio em “Master/Views/System Views”, e de dynamic functions em “Master/Functions/System Functions/Table-valued Functions”. Cada objeto dinâmico tem o prefixo como “dm_”.
O SQL Server 2005 introduziu as DMVs e o SQL Server 2008 incluiu DMVs adicionais. Com a ideia de qualquer usuário de banco, você pode consultar uma DMV em uma parte do banco e obter um resultado diferente se executar a mesma DMV em outra base/instância, mas o contexto permanece o mesmo.

DMVs: Uma alternativa a System Tables
Desde o SQL Server 2005, a Microsoft não autoriza modificações nos dados das system tables. Nas versões anteriores as system tables proviam uma das formas de recuperar metadata e em alguns casos, elas eram as únicas maneiras de resolver algumas tarefas mais complicadas. No SQL Server 2005 e 2008 você ainda pode executar querys nos objetos que tem o mesmo nome das system tables, mas agora esses objetos são system views.

DMVs proveem uma melhor alternativa para as system tables por diversos motivos:
– DMVs são dinâmicas por definição, seu conteúdo é alterado dinâmicamente pelo servidor.
– DMVs oferencem informações que antes eram difíceis ou até impossíveis de obter através de system tables, como contadores de performance ou comandos não documentados do DBCC.

DMVs podem ser classificadas pelo tipo de dados que elas retornam. Exemplo, SQL Server Operating System (SQLOS) DMVs retorna informações sobre memória, threads, contadores de performance, waits e outras informações de recursos utilizados, DMVs de transaction retorna detalhes sobre dados em trasações e locks, DMVs de SQL Server features traz informações sobre replicação, service broker, full-text search, database mirroring, etc.

Falta de Índices
Agora que vocês já devem estár mais confusos do que eu, vamos focar em um exemplo: falta de índices.
Se você já trabalhou em otimizar a performance de querys, você sabe que existem várias técnicas. Entretando, índices acabam sendo os mais efetivos para fazer uma query executar o mais rápido o possível. O SQL Server 2005 introduziu o missing indexes para ajudar a analisar informações sobre índices que PODERIAM melhorar a performance durante a execução de algumas querys.
Quando uma query é executada, o SQL Server Query Optimizer examina os índices existentes e considera a utilização deles ao invés de um table scan. Se um índice não existe, o SQL Server guarda essa informação sobre esse possível índice em uma DMVs. Você pode rever esses índices que não existem executando uma query.

O SQL Server 2005 dispõe das seguintes DMVs sobre missing index:
Sys.dm_db_missing_index_group_stats
Sys.dm_db_missing_index_groups
Sys.dm_db_missing_index_details
Sys.dm_db_missing_index_columns

Por exemplo, a query abaixo junta as informações das DMVs acima da forma mais benéfica o possível e traz o comando para criar o índice:

SELECT
avg_user_impact AS average_improvement_percentage,
avg_total_user_cost AS average_cost_of_query_without_missing_index,
‘CREATE INDEX ix_’ + [statement] +
ISNULL(equality_columns, ‘_’) +
ISNULL(inequality_columns, ‘_’) + ‘ ON ‘ + [statement] +
‘ (‘ + ISNULL(equality_columns, ‘ ‘) +
ISNULL(inequality_columns, ‘ ‘) + ‘)’ +
ISNULL(‘ INCLUDE (‘ + included_columns + ‘)’, ”)
AS create_missing_index_command
FROM sys.dm_db_missing_index_details a INNER JOIN
sys.dm_db_missing_index_groups b ON a.index_handle = b.index_handle
INNER JOIN sys.dm_db_missing_index_group_stats c ON
b.index_group_handle = c.group_handle
WHERE avg_user_impact > = 40

A query acima retorna qualquer índice que tenha um índice estimado de performance igual ou superior a 40%.
Você pode alterar a porcentagem alterando a última linha ou trocar o nome do índice de acordo com seus padrões.

Nota, como as DMVs são atualizadas dinâmicamente, as informações que forem recolhidas através dessa query não necessáriamente será a mesma se o SQL server for reiniciado.
As informações contidas nas DMVs são atualizadas desde o momento que o SQL server for iniciado.

Essa opção de criação de índices é muito usual mas, não é a solução perfeita. Os administradores tem que examinar e avaliar a real necessidade da criação dos índices.
Considerando que enquanto um índice pode melhorar a velocidade de um Select, ele pode ocasionar impactos em um Insert, Update ou Delete. Isso ocorre porque o SQL Server irá dedicar memória para manter os índices atualizados.