Tag Archives: erro

FGID propery is incorrect

A algumas semanas o pessoal me ligou com um problema em uma base de um cliente.

A base possuia 180GB, divididos em 6 arquivos todos no FG Primary,,, Dois destes arquivos estavam em unidades que apresentaram problemas e o pessoal conseguiu recuperar utilizando aqueles programas de recuperação RAW.

Quando acessei o ambiente a base estava em modo Emergencial e não aceitava nenhuma interação, o errorlog mostrava que quando ele tentava ler a base apresentava erro 5172 que o cabeçalho do “arquivo X” não era um cabeçalho válido para um arquivo de banco de dados e que a propriedade de FGID era incorreta…

hhhhmmmm… isso não estava cheirando muito bem…

O melhor dos mundos seria recuperar a base utilizando um backup mais recente, movendo os arquivos para unidades de disco que estivessem integras, aplicar alguns LOG´s, todos felizes . boa noite e bons sonhos…

Mas não… ai não tem graça…

Backup? nada… nunca foi feito porque a base era grande e “deixava tudo lento”

HA? Cluster ou Mirror até mesmo log Shipping ??? um sonoro não…

OK… basicamente é um caso perdido… mas vamos ver o que da pra tentar fazer…

Usando um editor Hexadecimal abri o arquivos 03 e fui tentar entender o que ele estava reclamando com o header do arquivo… aí me deparo com isso:

03ndf_hex_erro

Uma beleza… basicamente o arquivo todo esta com problema… mas se eu conseguisse colocar a base pelo menos online talvez o CHECKDB conseguiria excluir a massa de dados com problema e partiriamos dali…

Abri o outro arquivo que o SQL havia conseguido carregar para comprar o conteúdo e era totalmente diferente… Feitas algumas modificações… consegui fazer o SQL mostrar outra mensagem de erro… “The PageAudit property is incorrect”

Ta bom… relendo o arquivo o valor para 0x00 – Header Version – deve ser 0x01, o valor para 0x01 – m_type – deve ser entre 0x01 e 0x66, o valor de 0x04 – m_flagbits – não pode ser 0x02, o valor de 0x18 – m_objid – deve ser 0x63 ou superior e assim vai por uma parte…

Mas mesmo com as modificações, não consegui trazer a base online…

Em uma situação onde não existe nenhum backup, nenhum tipo de plano de contingência, não existe outra opção que traga a base de volta, o que sobra é: deixe o cracha na mesa, atualize seu curriculo (exclua esta empresa do CV) e perca a CTPS, dependendo do caso mude de cidade…

Hoje, não se justifica este tipo de descaso, o negócio depende de informação, de continuidade. Unidades de backup não são mais tão caras, podemos montar um ambiente razoavelmente barato com mirror, por exemplo, a baixo custo, existem opções. As pessoas só percebem o quanto a informação é imporante depois que perde.

[youtube=http://www.youtube.com/watch?v=6D9vAItORgE]

Erros nas descrições de eventos do SQL no event viewer

Algumas vezes procurando por erros nos eventos de sistema, já me deparei com uma mensagem de informação bem estranha:

MSSQLSERVER Information System Event 17055 <SQL server Instance Name > “The description for Event ID ( 17055 ) in Source ( MSSQLSERVER ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: 18265, Log backed up: Database: Database Name, creation date(time): 2012/07/11(09:38:17), first LSN: 720:282:1, last LSN: 720:282:1, number of dump devices: 1, device information: (FILE=1, TYPE=DISK: {‘\\ServerLog02\BACKUP\Backup123.TRN’}).

Eu sei que não é um erro de backup, se procurar os MSDB ou no job de backup não tem nenhum erro na geração do arquivo e o arquivo está no devido local.

Isso acontece porque o Event Viewer não consegue interpretar a mensagem colocada pelo SQL nos registros de eventos… A causa mais provável é que o caminho da biblioteca que passa a informação de como o Event Viewer deve interpretar a informação gravada está no lugar errado…

Como fazer para corrigir isso? até que é bem simples…

  1. Localize onde o SQL está instalado, procure dentro do diretório BINN um diretório chamado Resources e dentro dele outro diretório chamado 1033
  2. Dentro deste diretório deve existir um arquivo chamadq sqlevn7.rll.
  3. Abra o Editor de Registro (regedit), procure pela chave [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MSSQLServer] ou [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MSSQL$INSTANCE_NAME] em INSTANCE_NAME localize o nome da sua instância.
  4. Do lado da direita localize uma entrada do tipo REG_SZ com o nome EventMessageFile
  5. Compare o caminho para o diretório do arquivo sqlevn70.rll em relação ao local onde você localizou o arquivo na sua instalação, provavelmente são diferentes…
  6. Faça um backup da chave de registro.
  7. Substitua o caminho da chave EventMessageFile pelo caminho onde você localizou o arquivo sqlevn7.rll na sua instalação.
  8. Feche e abra o Event Viewer,,,
  9. Localize o evento que antes estava como o exemplo acima,,, e você terá a informação sendo mostrada corretamente.

Isso se aplica a SQL 2000, 2005 e 2008,, ainda não tive esse tipo de problema com o 2012

Event Log Error – Resolve Partial Assembly failed for Microsoft.VC80.CRT.mui

“Resolve Partial Assembly failed for Microsoft.VC80.CRT.mui” é um erro que fica em System no event log, o Event Id: 59 e Source: SideBySide. Ele é acompanhado por outro erro com o mesmo Event ID e Source:“Generate Activation Context failed for c:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\msmdctr90.DLL. Reference error message: Access is denied”Verifique com qual conta o serviço Performance Logs and Alerts está sendo executado. Provavelmente é o Network Service. Esta conta não tem acesso ao c:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\ (Ou lugar onde você instalou o SQL). Para resolver isso permita que o grupo Performance Log Users tenha acesso à List Folder Contents para esta pasta.

Siga os seguintes passos:

  1. Botão direito em c:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\ e selecione Sharing and Security…
  2. Selecione a aba Security
  3. Click em Add
  4. Click em Locations e selecione o nome do computador local
  5. Click em Advanced e em seguida em Find Now
  6. Na lista que aparece duplo-click no grupo chamado Performance Log Users
  7. Tenha certeza que a caixa do List Folder Contents esta com Allow selecionado e click em OK