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.
Tag Archives: microsoft
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…
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.
Como ver a versão do SQL
Muitos já sabem que se utilizar o:
select @@version |
terá as informações sobre a versão do SQL onde você está executando este select.
Mas se você executar:
SELECT CAST( SERVERPROPERTY( ‘MachineName’ ) AS varchar( 30 ) ) AS MachineName , CAST( SERVERPROPERTY( ‘InstanceName’ ) AS varchar( 30 ) ) AS Instance , CAST( SERVERPROPERTY( ‘ProductVersion’ ) AS varchar( 30 ) ) AS ProductVersion , CAST( SERVERPROPERTY( ‘ProductLevel’ ) AS varchar( 30 ) ) AS ProductLevel , CAST( SERVERPROPERTY( ‘Edition’ ) AS varchar( 30 ) ) AS Edition , ( CASE SERVERPROPERTY( ‘EngineEdition’) WHEN 1 THEN ‘Personal or Desktop’ WHEN 2 THEN ‘Standard’ WHEN 3 THEN ‘Enterprise’ END ) AS EngineType , CAST( SERVERPROPERTY( ‘LicenseType’ ) AS varchar( 30 ) ) AS LicenseType , SERVERPROPERTY( ‘NumLicenses’ ) AS #Licenses;SELECT @@VERSION AS [SQL Server Details]; |