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.
Category Archives: TI
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.
Movimentar arquivos de Bancos de Dados
Nesse post vou falar como movimentar os arquivos de um banco de dados de uma unidade/diretório para outra unidade/diretório.
Ai você pensa:
“Pra que? Já sei como faz isso. Não tem nenhuma novidade.” ou
“Aaahh,,, isso é facil, uso o bom e velho backup/restore ou o detach/attach…”
Isso é verdade, não tem nenhuma grande novidade em fazer a movimentação mas, ai vem a parte divertida, pra que fazer do método fácil se podemos fazer do método interessante?
1.- Backup/Restore
Se executarmos o bom e velho backup/restore, no momento do restore podemos alterar o caminho onde os arquivos irão ser gravados, isso é simples.
Apenas precisaremos executar o processo de backup que, dependendo do tamanho da base, pode demorar alguns minutos ou até umas horas. Além de ter que ter um espaço para armazenar o backup ou executá-lo através de uma unidade de backup.
2.- Detach/Attach
Usando o Detach ganhamos algum tempo, você vai apenas mover os arquivos de log e dados para outro lugar e anexar a base novamente.
O problema disso é se você usar o Service Broker ou até o Mirror, você terá que refazer o processo.
3.- Alter Database (o “método interessante”)
Esse “método” a seguir cria uma procedure para executar a movimentação do banco para outro local usando o Alter database, mas é possível executá-lo em diversos bancos como vou demonstrar:
Vamos criar 2 bases de dados para testar:
| create database banco1
create database banco2 |
Agora execute o scritp abaixo para criar a procedure que irá executar a movimentação dos arquivos:
| IF ( OBJECT_ID(‘dbo.sp_MoveDatabase’) IS NOT NULL ) begin DROP PROCEDURE dbo.sp_MoveDatabase end GO create procedure sp_MoveDatabase @NewDataFolder nvarchar(1000), as set nocount on; if right(@DbList,1) = ‘,’ Begin End set @String = @DbList BEGIN END Begin exec sp_configure ‘xp_cmdshell’ , ‘1’ print ‘NewMdfFolder is ‘ + @NewDataFolder SET @RowNum = 1 Begin — Derruba todas as conexoes configurando como single user with immediate — configura db off line begin –move arquivos files begin set @NewPath = @NewLogFolder + @FileName — altera caminho dos arquivos set @sql = ‘ALTER DATABASE [‘ + @DbName + ‘] SET ONLINE;’ — aceita multi user novamente. reconfigure RECONFIGURE |
** ATENÇÃO **
Os diretórios de destino já devem estar criados, caso você execute a procedure sem criar o destino o script vai alterar o caminho da base e não vai movimentar os arquivos e quando ela foi trazida online ela vai apresentar erro.
** ATENÇÃO 2 **
Esse script é do tipo “Vai filhão”, quando ele for executado todos os usuários conectados serão desconectados sem dó nem piedade, todas as transações que eles estiverem executando serão dropadas. As conexões apenas poderão ser reestabelecidas após o termino da movimentação.
Para executar a procedure execute-a da seguinte forma:
| exec sp_MoveDatabase @NewDataFolder = ‘c:\teste\’, @NewLogFolder = ‘d:\teste\’, @sDbList = ‘banco1, banco2’ |
Se tudo der certo, as bases banco1 e banco2 estarão seus novos destinos.
Preparação para o MCM SQL Server 2008 – Parte IV
huhuhuhuhhuhu
o pessoal da Microsoft respondeu hoje o email !!!
Já está liberado o acesso par o upload dos arquivos para análise, por sinal já mandei eles…heheheh
agora em teoria é só esperar 5 dias úteis para a resposta…
Transferindo regras de FSMO
Vamos imaginar o seguinte senário:
Um administrador configurou um servidor como Controlador de Domínio, e por alguma felicidade ele lembrou de adicionar outra maquina também como controladora do domínio, mas ele não lembrou de balancear as configurações de FSMO entre esses servidores (muito comum).
Um dia o controlador do domínio apresentou erro e não inicia mais, todas as autenticações ficam lentas e apresentam diversos erros.
Para “corrigir” isso podemos migrar as regras de FSMO para o outro controlador do domínio, seguindo os passos abaixo:
1. Acesse o Controlador de Domínio que ainda está operando.
2. Clique em Start, clique em Run e digite ntdsutil e pressione Enter.
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\WINDOWS>ntdsutil
ntdsutil:
3. Digite roles e pressione Enter
ntdsutil: roles
fsmo maintenance:
4. Digite connections e pressione Enter
fsmo maintenance: connections
server connections:
5. Digite connect to server , onde é o nome do computador que você quer usar
server connections: connect to server serverdc2
Binding to serverdc2 …
Connected to serverdc2 using credentials of locally logged on user.
server connections:
6. Digite q e pressione Enter
server connections: q
fsmo maintenance:
7. Digite Roles e pressione Enter
ntdsutil: roles
fsmo maintenance:
8. Digite transfer , onde é a regra que você quer transferir
As opções são:
Transfer domain naming master
Transfer infrastructure master
Transfer PDC
Transfer RID master
Transfer schema master
Você receberá um Aviso perguntando se realmente quer executar a transferencia, clique em Yes.
Após transferir as regras digite q e pressione Enter até sair do Ntdsutil.
Em alguns casos é necessário reiniciar o servidor.
Alterar língua do FullText
A algum tempo atrás tive que alterar a língua de pesquisa do FullText do SQL 2005 de Neutral para Portugês.
Em teoria um procedimento bem simples, acha o FullText, edita dele e troca na caixa pra Português.
Mas, como sempre, nada é tão simples assim…
Descobri que por padrão o SQL 2005 não traz alguns idiomas, para adicionar o Português tive que fazer o procedimento do KB908441.
Mas, ao invés de ficar lendo o KB vo descrever o passo a passo pra fazer funcionar:
IMPORTANTE !!!
Se você utilizar mais de uma instância do SQL no mesmo servidor você vai ter que fazer o procedimento mais de uma vez.
Ok, sabendo disso, agora vamos começar.
Levando em conta que provavelmente você está usando uma instância, ela é conhecida como MSSQL.1
1. Clique em Start, clique em Run, digite regedit e clique em OK
2. Dentro do Editor de Registro, localize a seguinte chave:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSearch\CLSID
3. No menu Edit escolha New e clique em Key
4. Digite {25B7FD48-5404-4BEB-9D80-B6982AF404FD} e pressione Enter
5. No painel da direita, modifique o valor Default
6. Em Edit String, digite ptblr.dll e clique em OK
7. No menu Edit escolha New e clique em Key
8. Digite {D5FCDD7E-DBFF-473F-BCCD-3AFD1890EA85} e pressione Enter
9. No painel da Direita, modifique o valor Default
10. Em Edit String digite ptblr.dll e clique em OK
Adicione uma sub-chave ao MSSQL.1\MSSearch\Language
11. No menu Edit escolha New e clique em Key
12. Digite ptb e pressione Enter
13. Na Tabela abaixo existem 4 itens que devem ser criados:
| Tipo | Nome | Valor |
| String | NoiseFile | C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData\noiseptb.txt |
| String | TsaurusFile | C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData\tsptb.xml |
| DWord | Locate | 00000416 |
| String | WBreakerClass | {25B7FD48-5404-4BEB-9D80-B6982AF404FD} |
| String | SemmerClass | {D5FCDD7E-DBFF-473F-BCCD-3AFD1890EA85} |
Depois desse pequeno processo, pelo menos no meu caso, não tive que reinicia o SQL para aparecer Portugês, mas tive que executar um Rebuild do FullText.
Alterar tempo de Time Out para iniciar um serviço
Em alguns casos quando um serviço do Windows é iniciado manualmente ele apresenta erro de Time Out.
Por padrão, todo o serviço tem no máximo 30 segundos para iniciar, depois disso o Windows para de tentar iniciar o serviço e tenta parar o que já começou e isso pode gerar o status de Starting ou Stoping.
Para TENTAR sanar esse problema podemos executar os passos abaixo:
1. Inicie o editor do registro (Regedit.exe)
2. Localize o serviço que vamos alterar o tempo de Time Out, ex.: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSiSCSI
3. Edite ou Crie o registro ServicesPipeTimeout (se for criar ela é uma entrada DWORD)
4. Altere o valor para Decimal
5. Coloque o tempo que for necessário.
ATENÇÃO !!! o valor tem que ser em milisegundos, ex.: 60000 é igual a 60 segundos.
Atributos das guias de Exchange em outra maquina
Estava eu tentando acessar o servidor um exchange para modificar algumas configurações de um usuário quando me deparei que tinha um monte de gente conectada no servidor fazendo alguma coisa lá e eu não tinha acesso ao servidor.
Fui pesquisar como adicionar as guias das propriedades do Exchange em outro servidor que faz parte do domínio mas, sem ter que instalar todas as ferramentas do Exchange e achei. hehehe
De dentro do servidor em que você quer adicionar as guias do exchange copie as seguintes DLL´s do servidor de Exchange:
- address.dll
- escprint.dll
- exchmem.dll
- glblname.dll
- maildsmx.dll
- pttrace.dll
Copie as DLL´s para a pasta C:\windows\system32
Registre a DLL maildsmx.dll (REGSVR32 c:\windows\system32\maildsmx.dll)
Abra o Active Directory Users and Computer e você terá as guias do Exchange.