Estou instalando o recém lançado SQL Server 2008, mas tudo indica que ele vem com alguns probleminhas na instalação.

Se você usa Windows Vista instalado originalmente não em inglês, pode ter problemas na instalação. Na hora de rodas o check de instalação recebe um erro:

Setup Sql Server 2008 - configuration checker com erro

Pois bem, pesquisei em alguns lugares e percebi que o problema rola faz tempo, mas mesmo assim não foi resolvido ainda. Segui o recomendado no fórum, mas não resolveu o problema. A idéia seria pegar o ID da lingua de instalação do seu windows, e adicionar ela no registro.

Para pegar esse ID, seria só rodar:

string.Format("{0,3}", CultureInfo.InstalledUICulture.Parent.LCID.ToString("X")).Replace(" ", "0"); 

Para mim retorna 016.

E adicionar ao registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib

Ficaria assim:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\016

Copiando os valores “Counter” e “Help” de alguma outra chave, tipo a 009, para essa nova chave.

Pois bem, fiz isso, não rolou. Estou postando aqui o que fiz para resolver, porque vocês podem ter o mesmo problema.

Por causa da dica no Microsoft Connect colocada por um chinês, fiz um trace do problema à dll Microsoft.SqlServer.Configuration.SetupExtension.dll. O método CheckPerfMonCounter da classe FacetPerfMonCheck, faz uma rotina um pouco diferente da esplicada nos fóruns. Copiei e rodei. Resultado: 0416. Eu já tinha essa chave no meu registro, foi só acrescentar e copiar os valores “Counter” e “Help”:

Registry Editor - após alteração

E funcionou. Sem grandes stress. Mas teve que investigar…

A função para saber o id da sua lingua é a seguinte:

string name = @"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib";
string str2 = null;
int major = Environment.OSVersion.Version.Major;
int lCID = CultureInfo.InstalledUICulture.LCID;
if ((major >= 6) && (((lCID == 0x404) || (lCID == 0x804)) || (lCID == 0x416)))
{
    str2 = string.Format("{0,4}", lCID.ToString("X")).Replace(" ", "0");
}
else if (0x7c04 == CultureInfo.InstalledUICulture.Parent.LCID)
{
    str2 = "004";
}
else
{
    str2 = string.Format("{0,3}", CultureInfo.
           InstalledUICulture.Parent.LCID.ToString("X")).Replace(" ", "0");
}

 

Rode isso, o valor retornar em str2 é a chave que você precisa. Pelo que eu entendi, tem um tratamento especial para o Português brasileiro, que é o 0x416 em Hexa. Se for esse, ele chama a linha 7, senão ele chama a linha 15. O segundo elseif deve ser o do inglês, que retorna 004.

Enfim, espero que ajude quem está no enrosco nessa instalação.


Postado na(s) categoria(s) SQL Server pelo giovanni bassi em 6 de agosto de 2008 às 20:59 | Tags: ,

Ninguém avaliou. Dê sua nota!

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Comentários

Comentar


(Vai mostrar seu Gravatar)  

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading



Quem é Giovanni Bassi

Giovanni Bassi Sou uma pessoa apaixonada por tecnologia e especificamente por .Net. Sou consultor independente especialista em .Net, focado em arquitetura e melhores práticas. Tenho dezenas de artigos publicados na .Net Magazine, revista da qual sou editor técnico. Ministro palestras e cursos de vez em quando, e quando dá tempo eu respiro um pouco. Mais detalhes nesta página.

Calendário

«  novembro 2008  »
seteququsedo
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567
Ver detalhamento de posts no calendário

Postagens recentes

Comentários recentes

Disclaimer / Aviso
As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, pareceiros e amigos. Da mesma forma, os comentários feitos por leitores do blog não expressam a minha opinião.

© Copyright 2008 .Net Unplugged
Sign in