Windows – Event 8: Failed auto update retrieval of third-party root list sequence number


Quando você está executado um Windows 2003 server sem conexão com a internet, você pode localizar o seguinte evento no seu eventlog:

—————–
Event Type: Error
Event Source: crypt32
Event Category: None
Event ID: 8
Date: date
Time: time
User: user name
Computer: computer name
Description:
Failed auto update retrieval of third-party root list sequence number from: with error: This operation returned because the timeout period expired.
For more information, see Help and Support Center at http://support.microsoft.com.
—————–

Para resolver isso, ou você tem acesso a internet ou remova o componente Update Root Certificates.

Para remover o componente faça o seguinte:
1. Vá em Add/Remove Programs (iniciar – executar – “appwiz.cpl”)
2. Click em Add/Remove Windows Components na esquerda.
3. Desmarque o Update Root Certificates, e termine o Windows Components Wizard.

Mais informações:
http://support.microsoft.com/kb/317541

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: )  

Como habilitar o suporte do Windows Server Backup para Hyper-V VSS Writer


Olá,

Podemos fazer backup das maquinas virtuais utilizando habilitando VSS usando o Windows server Backup, para isso temos que adicionar a seguinte chave no registro:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WindowsServerBackup\Application Support\{66841CD4-6DED-4F4B-8F17-FD23F8DDC3DE}
Após criar a chave vamos adicionar um String:
Nome: Application Identifier
Tipo: REG_SZ
valor: Hyper-V

Windows Server Backup suporta apenas backup de volumes, quando executar o backup das maquinas virtuais você precisa selecionar todos os volumes onde estão as maquinas virtuais.
Por exemplo, se você usa o local padrão para armazenar as configurações das maquinas virtuais (C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines) e armazena os VHD´s em outro volume, você precisa selecionar os 2 volumes para backup.

Quando for executar um Restore, selecione “Application Restore” e escolha Hyper-V. Você precisa selecionar esse método, caso contrário, você não conseguirá substituir os arquivos para as maquinas virtuais em execução. Como parte do restore, as maquinas virtuais existentes precisão ser desligadas e apagadas. As maquinas virtuais que você restaurar serão registradas no Hyper-V.

Existem algumas limitações:
1.- Maquinas virtuais que possuem discos dinâmicos não serão “backupeadas” usando o VSS. Apenas backup offline é suportado. Outra alternativa será utilizar o software de backup de dentro da própria maquina virtual como se fosse uma maquina física.
2.- Maquinas Virtuais Windows 2000, Windows XP ou que não possuem o Integration Services instalado, entrarão em Saved State enquanto o snapshot é tirado e voltarão a operar assim que o snapshot for completado. Você terá o mesmo incoveniente caso a opção de “Backup (volume snapshot)” esteja desabilitada das configurações da maquina virtual (Maquina Virtual >> Settings >> Management >> Integration Services)
3.- Quando executar um restore, todos os volumes serão restaurados, restaurar individualmente a maquina virtual não é suportado com o Windows server Backup.
4.- Se a maquina virtual possuir 2 ou mais snapshots, o restore irá falhar. Para resolver isso:
A. Se a maquina virtual estiver rodando, pare e apague a maquina virtual
B. Selecione a opção “Files and Folders” para recuperar o diretório de snapshot.
c. Selecione o diretório individual do snapshot
D. Quando completar, inicialize o a recuperação “Application” para recuperar o volume.

se tudo der certo você terá a maquina virtual de volta e operacional.

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.

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),
@NewLogFolder nvarchar(1000),
@DbList nvarchar(4000)

as
Begin
declare @DbTable table (lkey int identity (1,1) primary key, dbname nvarchar(100))
declare @FileTable table (lkey int identity (1,1) primary key, [name]nvarchar(100), physical_name nvarchar(1000), [type] int )
declare @sql nvarchar(4000)
declare @count int, @RowNum int
declare @DbName nvarchar(100)
declare @OldPath nvarchar(1000)
declare @Type int
declare @LogicalName nvarchar(100)
declare @ParmDefinition nvarchar(1000)
declare @FileName nvarchar(100)
declare @NewPath nvarchar(1000)
declare @ShowAdvOpt int
declare @XPCMD int

set nocount on;

if right(@DbList,1) = ‘,’

Begin
print ‘DbList must NOT end with “””‘
return

End
declare @MyString NVARCHAR(100)
declare @Pos INT
declare @NextPos INT
declare @String NVARCHAR(4000)
declare @Delimiter NVARCHAR(1)

set @String = @DbList
set @Delimiter = ‘,’
SET @String = @String + @Delimiter
SET @Pos = charindex(@Delimiter,@String)
WHILE (@pos <> 0)

BEGIN
SET @MyString = substring(@String,1,@Pos – 1)
insert into @DbTable (dbname) values (LTRIM(RTRIM(@MyString)))
SET @String = substring(@String,@pos+1,len(@String))
SET @pos = charindex(@Delimiter,@String)

END
set @ShowAdvOpt = cast(( select [value] from sys.configurations where [name] = ‘show advanced options’) as int)
set @XPCMD = cast(( select [value] from sys.configurations where [name] = ‘xp_cmdshell’) as int)
if right(@NewDataFolder,1)<> ‘\’ or right(@NewLogFolder,1)<>’\’

Begin
print ‘new path”s must end with \’
return
end
EXEC sp_configure ‘show advanced option’, ‘1’
RECONFIGURE

exec sp_configure ‘xp_cmdshell’ , ‘1’
RECONFIGURE

print ‘NewMdfFolder is ‘ + @NewDataFolder
print ‘NewLdfFolder is ‘ + @NewLogFolder

SET @RowNum = 1
SET @count = (select count(*) from @DbTable)
while @RowNum <= @count

Begin
select @DbName = DBName from @DbTable
where lKey = @RowNum
set @sql = ‘select name, physical_name, type from ‘ + @DbName + ‘.sys.database_files’
insert into @FileTable
exec sp_executesql @sql

— Derruba todas as conexoes configurando como single user with immediate
set @sql= ‘ALTER DATABASE [‘ + @DbName + ‘] SET SINGLE_USER WITH ROLLBACK IMMEDIATE’
print ”
print ‘Executando linha -‘ + @sql
exec sp_executesql @sql

— configura db off line
set @sql = ‘ALTER DATABASE [‘ + @DbName + ‘] SET OFFLINE;’
print ”
print ‘Executando linha – ‘ + @sql
exec sp_executesql @sql
select * from @FileTable
while @@rowcount > 0

begin
select top 1 @OldPath = physical_name, @Type = [type], @LogicalName = [name] from @FileTable

–move arquivos files
set @FileName = (SELECT REVERSE(SUBSTRING(REVERSE(@OldPath), 0, CHARINDEX(‘\’, REVERSE(@OldPath), 1))))
if @type = 0

begin
set @NewPath = @NewDataFolder + @FileName
end
else
begin

set @NewPath = @NewLogFolder + @FileName
end
set @Sql = ‘EXEC master..xp_cmdshell ”MOVE “‘ + @OldPath + ‘” “‘ + @NewPath +'””’
print ”
print ‘Executando linha -‘ + @sql
exec sp_executesql @sql

— altera caminho dos arquivos
set @sql = ‘ALTER DATABASE ‘ + @DbName + ‘ MODIFY FILE (NAME = ‘ + @LogicalName + ‘, FILENAME = “‘ + @NewPath + ‘”)’
exec sp_executesql @sql
delete from @FileTable where [name] = @LogicalName
select * from @FileTable
end –while

set @sql = ‘ALTER DATABASE [‘ + @DbName + ‘] SET ONLINE;’
print ”
print ‘Executing line -‘ + @sql
exec sp_executesql @sql
SET @RowNum = @RowNum + 1

— aceita multi user novamente.
set @sql= ‘ALTER DATABASE [‘ + @DbName + ‘] SET MULTI_USER’
print ”
print ‘Executing line -‘ + @sql
exec sp_executesql @sql
end
exec sp_configure ‘xp_cmdshell’ , @XPCMD

reconfigure
EXEC sp_configure ‘show advanced option’, @ShowAdvOpt

RECONFIGURE
End –procedure

** 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.

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.

SQL Injection


Problema:
Esse tipo de ataque tem um número grande de coincidencias que apontão para a mesma fonte.
Com essa informação em mãos, a resolução deveria ser simples.
Com o seu site atacado por SQL-Injection como você pode identificar, analizar, recuperar e resolver o problema? E o que você pode aprender com isso?

Solução:
Como ponto de referencia, SQL-Injection é um exploit onde comandos SQL são passados para o servidor de SQL de uma forma maliciosa.
Analisando a situação, podemos chegar em 4 componentes básicos:
1º Identificação do Problema;
2º Análise da situação para determinar a causa raiz tão como opções de saída para recuperação e solução, que é seguido por recuperar os dados e prevenir por um problema futuro.
3º Plano de comunicação
4º Como resolver o incidente caso ocorra novamente.

Vamos por partes…

Identificar:

Usualmente os usuários ou clientes reportão o caso para o time de TI.
Com o problema detectado a análise precisa ser conduzida nesses passos:
– Logs do Firewall
– logs do IIS
– Páginas Web
– Tabelas do SQL Server

Em termos de exemplificação de código, strings são passadas para o SQL Server. Após ver o código, um simples cursor para atualizar colunas varchar, nvarchar, text ou ntext pode ser inserido através da URL ou através da própria página.

Algumas referencias:

* Http://www.bloombit.com/Articles/2008/05/ASCII-Encoded-Binary-String-Automated-SQL-Injection.aspx#attack-description
* http://www.theregister.co.uk/2008/08/07/new_sql_attacks/
* http://isc.sans.org/diary.html?storyid=4840

Analise

Após rever os Logs do IIS é possível traduzir o código, mas se você tiver uma ferramenta de Performance Monitor, ela pode capturar longos tempos de execução de SQL que podem prover grande ajuda para identificar apartir de qual página foi feita a invasão.
Se você não possuir, terá que gastar um bom tempo para identificar por onde veio a invasão.
Uma vez que a string foi determinada esses 2 scripts podem lhe oferecer um grande auxilio para identificar as colunas que foram alteradas e/ou recuperar:

sp_LocalizaTexto

sp_TrocaTexto

Um método simples para identificar se seu site foi infectado é usando o google para rodar a seguinte query:
* Esse método foi passado pela SANs (http://isc.sans.org/diary.html?storyid=4840)

site:seu_site “script scr=http://*/””ngg.js”|”js.js”|”b.js”

Recuperando:

Existem algumas formas de recuperar os dados alterados
– Backup\Restore
Pro: Se você possui um método de recuperar os dados rapidamente e você sabe exatamente quando os dados foram infectados, pode ser uma forma rápida e simples para recuperar a integridade do site.
Con: Se você não sabe quando os dados foram alterados, você não saberá se o backup foi feito com as informações alteradas ou a janela de perda de dados poderá ser grande.

– Através de análise
Pro: Com o script “sp_TrocaTexto para SQL 2005, a informação maliciosa pode ser identificada e corrigida com confidencialidade.
Con: É interessante efetuar um backup da base de dados antes de executar as alterações para garantir integridade de informações e posterior análise.

Em ambas opções, o problema com o SQL-Injection já deverá ter sido resolvidor.

Resolução:
Possíveis passos para ajudar na solução:
– Desenvolvimento\DBA
– Validar os comandos SQL passados pelo front-end (IIS)
– Validar os dados e os tipos de dados passados
– Converter SQL dinâmico em Stored Procedures com parâmetros
– Remover páginas ou diretórios antigos que pode ser usados como pontos de partida para a invasão
– Prevenir que qualquer comando seja executado em conjunto com os seguintes comandos: ponto e virgura. EXEC, CAST, SET, dois pontos, apostrofe, etc..
– Baseado na linguagem de programação do seu front-end, determinar quais os caracteres especiais podem ser removidos antes de qualquer comando passado para o SQL Server

– Administradores de Rede
– Prevenir trafego de alguns IP´s em particular ou domínios
– Verificar se nas configurações de firewall existe algum item para prevenir quanto a SQL-Injection
– Procurar por produtos ou serviços para analisar seu código e site em busca de erros e prevenção
* http://www.acunetix.com/vulnerability-scanner/
* http://www.rapid7.com/nexpose/web-application-va.jsp
* http://www.fortify.com/products/detect/
* http://www.mcafeesecure.com/us/
* http://www.onlinehackscan.com/default.asp

Plano de comunicação:
O plano de comunicação deve ser atual, claro e importante.
Mantenha isso em mente.
Para muitas pessoas, não saber o que está acontecendo gera desconforto, anciedade, e achar que a equipe de TI não está fazendo seu trabalho.
Comunique sobre a descoberta do ocorrido, informe que o time está trabalhando para determinar a causa e solução do problema e que uma atualização desse status será repassada em até 4 horas;
Comunique o ocorrido, os passos tomados pela equipe de TI para resolver o problema e que a solução estará implantada em até 30 minutos;
e por final comunique que o incidente foi sanado, os passos para resolver o incidente e os passos futuros para prevenir novos problemas.

Recuperação Rápida:

Uma forma de recuperação rápida seria:
– Parar os serviços de Web
– Rever os logs do IIS para determinar os comandos utilizados para lozalizar a vulnerabilidade
– Converter o código para determinar quais tabelas foram alteradas
– Localizar e alterar as strings nas tabelas
– Corrigir as páginas/comandos que possuiam as vulnerabilidades
– Testar para identificar se não existem novos problemas
– Atualizar as páginas/ comandos nos servidores de produção
– Iniciar os serviços de web

Leia


3M D14 D3 V3R40, 3574V4 N4 PR414, 0853RV4ND0 DU45 CR14NC45 8R1NC4ND0 N4 4R314. 3L45 7R484LH4V4M MU170 C0N57RU1ND0 UM C4573L0 D3 4R314, C0M 70RR35, P4554R3L45 3 P4554G3NS 1N73RN45. QU4ND0 3575V4M QU453 4C484ND0, V310 UM4 0ND4 3 D357RU1U 7UD0, R3DU21ND0 0 C4573L0 4 UM M0N73 D3 4R314 3 35PUM4.
4CH31 QU3, D3P015 D3 74N70 35F0RC0 3 CU1D4D0, 45 CR14NC45 C41R14M N0 CH0R0, C0RR3R4M P3L4 PR414, FUG1ND0 D4 4GU4, R1ND0 D3 M405 D4D45 3 C0M3C4R4M 4 C0N57RU1R 0U7R0 C4573L0. C0MPR33ND1 QU3 H4V14 4PR3ND1D0 UM4 GR4ND3 L1C40; G4574M05 MU170 73MP0 D4 N0554 V1D4 C0N57RU1ND0 4LGUM4 C0154 3 M415 C3D0 0U M415 74RD3, UM4 0ND4 P0D3R4 V1R 3 D357RU1R 7UD0 0 QU3 L3V4M05 74N70 73MP0 P4R4 C0N57RU1R. M45 QU4ND0 1550 4C0N73C3R 50M3N73 4QU3L3 QU3 73M 45 M405 D3 4LGU3M P4R4 53GUR4R, 53R4 C4P42 D3 50RR1R! S0 0 QU3 P3RM4N3C3 3 4 4M124D3, 0 4M0R 3 0 C4R1NH0.

0 R3570 3 F3170 D3 4R314

Vmware Esxi – 2


Aproveitando que já estava no ritmo da instalação do Vmware, instalei aquela mesma versão em um DELL 1950 (sim, eu gosto de DELL), mas dessa vez fui mais esperto, acessei o site do VMware HLC e vi se o Servidor era compativel.
Após ver que iria funcionar, acessei a BIOS e habilitei o modo de paravirtualization. IMPORTANTE: você precisa desligar o servidor da tomada pra que esse modo seja realmente habilitado.
Efetuei a instalação do Vmware sem problemas, ele até reconheceu a placa de rede e sozinho, incrivel,,,,
Fiz todas as configurações como coloquei no outro Post.
Agora vem a pergunta, para que colocar um post para falar só isso?
Simples, só para avisar que se não habilitar a opção de paravirtualização do 1950 utilizar Windows Server nesse servidor fica quase impossível. E que não consegui colocar Linux 64bits, ele nem lia a mídia.

Vmware Esxi


Instalei na semana passada o Vmware Esxi em um Dell Optiplex 755 (isso mesmo um desktop)
Como muitas coisas, essa não foi simples,,, Mas vou explicar o caminho das pedras hehehe

Na BIOS do Optiplex existem 2 opções que devem ser alteradas:
1º Intel VM de Disable para Enable
2º A configuração do HD deve ser alterada para SATA, se não o Esxi não reconhece o disco.

Siga a instalação como nesse video: http://www.vm-help.com/esx/esx3i/ESX_3i_install/ESX_3i_install.html
A instalação não demorou mais que 7 minutos.

Após carregar a interface de administração pressione F2 para acessa o modo de configuração, coloque uma senha de root e tente colocar o endereço IP da placa, quando pressionar enter para acessar a placa ele informará que resetará as configurações da placa e pede para pressionar F11, pressione F11 e nada vai acontecer
Pressione ALT+F1 e digite unsupported (você não conseguirá ler o que está digitando) e pressione enter, em seguida coloque a senha de root, feito isso digitar lspci -v | grep -i “network” se ele não retornar resultado o Esxi não tem suporte para sua placa de rede (o que deve acontecer se você está instalando no Optiplex 755).
O que acontece, a placa de rede Intel que acompanha esse desktop é um modelo e1000e e o Esxi só reconhece e1000 nesse caso, você terá que colocar outra placa de rede. (tentei vários outros métodos, até instalar o pacote de atualização do Esx SP2 em cima da instalação do Esxi mas não funcionou).
Quando você colocar uma nova placa de rede, para ver os modelos compativeis acesse esse link: http://www.vmware.com/resources/compatibility/search.php (aproveite e veja se a sua maquina/servidor é compativel com a versão Esxi), vá nas opções de rede e coloque o IP para seu servidor Vmware.

Depois de instalado e configurado vamos habilitar modo de SSH (ele vem desabilitado por padrão):
Na tela do desktop pressione ALT+F1 e digite unsupported pressione enter em seguida a senha do root.
no prompt digite:
vi /etc/inetd.conf
localize a linha referente ao #SSH e apague o #
salve o arquivo usando :wq
e reinicie a maquina

Quase tudo pronto, após a maquina iniciar acesse-a através do IE ou Firefox e clique em Download VMware Infrastructure Client e instale o cliente do VMware em sua maquina.

Após estes passos o seu servidor de virtualização está pronto para uso.

DETALHE: se você fez o cadastro correto no site da VMware, redeberá o número de série para ativar seu Esxi, caso contrário ele expira em 60 dias.

Enem versão 2008


01 – “O problema da amazônia tem uma percussão mundial. Várias Ongs já se estalaram na floresta.”
(e levaram o disco da Xuxa onde ela canta “Brincar de Índio”)

02 – “A amazônia é explorada de forma piedosa.” (Imagine se não fosse?…)

03 – “Vamos nos unir juntos de mãos dadas para salvar o planeta.” (o mundo tem mais um Capitão Planeta?)

04 – “A floresta tá ali paradinha no seu lugar e vem o homem e creu nela.” (velocidade 5 do créu!)

05 – “Tem que destruir os destruidores por que o destruimento salva a floresta.” (pra deixar bem claro o tamanho da destruição) Continuar lendo

Não se pode ter tudo


Aconteceu com uma professora, que durante a aula, falava a seus alunos
sobre as diferenças, entre os ricos e os pobres.
Júlia levanta o dedo:
– Senhora, meu pai tem tudo: TV, telescópio, DVD, Mercedes…
– Tudo bem, diz a professora, mas será que tem uma lancha?
Júlia reflete e diz: – Bem, não…
A professora disse:
– Viu, não podemos ter tudo.
– Professora, disse Artur, meu pai tem tudo: TV, telescópio, DVD,
Mercedes, Lancha,..
– Sim, responde a professora, mas será que tem um avião particular?
Depois de refletir,
Artur responde:
– Bem, não..
Está vendo que não se pode ter tudo na vida. Disse a professora.
Joãozinho levanta o dedo e diz:
-Professora, meu pai, agora tem tudo, pois sábado passado, quando
minha irmã apresentou seu namorado, corinthiano, tatuado, de
brinquinho e bonezinho, cueca aparecendo, o papai disse:
– PUTA QUE PARIU! ERA SÓ O QUE ME FALTAVA!

E a briga começou


Minha esposa sentou-se no sofá junto a mim enquanto eu passava pelos canais.

Ela perguntou, “O que tem na TV? ”

Eu disse, “Poeira. ”

E a briga começou…

====================================================================

Minha esposa estava dando dicas sobre o que ela queria para seu aniversário que estava próximo.

Ela disse, “Quero algo brilhante que vá de 0 a 200 em cerca de 3 segundos. ” Continuar lendo

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];