Skip to content

Dirceu Resende

DBA SQL Server e Analista de BI (PowerBI, SSAS, SSIS, SSRS)

  • Consultoria
    • Consultoria de BI
    • Consultoria de Power BI
    • Consultoria SQL Server
  • Arquivo
  • Séries
    • Certificação
    • Segurança e Auditoria
    • Performance Tuning
    • O que mudou no T-SQL ?
    • Proteção de Dados
  • Vagas de Emprego
  • Eventos Data Platform
  • Sobre
  • Contato

Other Languages

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 536 outros assinantes

Visualizações do Blog

1.645.448 views

Categorias

  • Apache / .htaccess (9)
  • Banco de Dados (307)
    • MySQL / MariaDB (4)
    • Oracle (8)
    • SQL Server (293)
      • Auditoria (15)
      • Azure (2)
      • CLR (53)
      • Desenvolvimento de Query (83)
      • DMVs e Views de Catálogo (31)
      • Erros (22)
      • Ferramentas (12)
      • Formatação e Validação de Dados (23)
      • Funcionalidades pouco conhecidas (19)
      • Hacks (17)
      • Integrações (30)
      • Manipulação de Arquivos (13)
      • Manutenção (80)
      • Monitoramento (35)
      • O que não fazer (7)
      • OLE Automation (19)
      • Performance Tuning (22)
      • Python (1)
      • Segurança (39)
      • SQL Server Agent (11)
  • Business Intelligence (BI) (31)
    • Analysis Services (SSAS) (7)
    • Microsoft (7)
    • Power BI (12)
    • Reporting Services (SSRS) (8)
  • Carreira e Cursos (13)
  • Carreira, Cursos e Certificações (28)
  • Celulares (1)
  • Eventos e Palestras (63)
  • Programação (57)
    • C# (CSharp) (30)
    • CSS (1)
    • ERP (1)
    • Javascript (1)
    • PHP (17)
    • Powershell / CMD (8)
    • SQLCLR (4)
  • Sem categoria (10)
  • SEO (4)
  • Virtualização (5)

Microsoft MVP Data Platform

Minhas Certificações

Treinamentos

Arquivo de Posts

Posts recentes

  • Descontos da “Black Friday” nos Treinamentos de SQL Server (Comprem meu curso kkkkk) 27 de novembro de 2020
  • SQL Server – As “novas” funções GREATEST e LEAST 27 de novembro de 2020
  • SQL Server – Como saber a data do último login de um usuário 9 de novembro de 2020
  • Azure na Prática Gratuito #07 – Administrando Banco de Dados no Azure 5 de novembro de 2020
  • Analysis Services – An error occurred while opening the model on the workspace database. Reason: An unexpected error occurred (file ‘tmcachemanager.cpp’, function ‘TMCacheManager::CreateEmptyCollectionsForAllParents’) 5 de novembro de 2020
  • 23 de abril de 2016
  • 0
  • Banco de Dados DMVs e Views de Catálogo Funcionalidades pouco conhecidas Hacks SQL Server

SQL Server – Consultando informações da instância no Windows Registry utilizando sys.dm_server_registry e xp_instance_regread

Visualizações: 0
Tempo de Leitura: 3 minutos

Olá pessoal,
Boa tarde!

Neste post vou demonstrar como podemos acessar o registro do Windows e obter informações úteis sobre a instância SQL Server.

Caso você queira saber como consultar qualquer chave de registro do Windows, bem como realizar alterações em chaves e valores, acesse o post SQL Server – Como ler, listar, criar, alterar e apagar chaves do Registro do Windows (Regedit) pelo CLR (C#)

Utilizando a DMV sys.dm_server_registry

Disponibilizada a partir do SQL Server 2008 R2, a DMV sys.dm_server_registry permite acessar facilmente as informações do registro referentes a instância SQL Server em que está sendo realizada a consulta.

A query é bem simples:

Transact-SQL
1
SELECT * FROM sys.dm_server_registry

E o resultado da consulta será algo parecido com isso:
SQL Server - sys.dm_server_registry

Agora vamos comparar com o próprio Registro do Windows (RegEdit):
SQL Server - Instance Regedit

Reparem que a DMV retorna várias chaves diferentes do registro do Windows e as agrupa em uma visão única, de modo que facilite a vida do DBA e não precise consultar várias chaves para obter a informação que precisa.

Se compararmos os registros que estão debaixo da chave “HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\MSSQLServer\Parameters”, veremos que são os mesmos valores.

Isso é bastante útil para se descobrir algumas informações da instância, como a porta utilizada, por exemplo (já comentei sobre isso no post Como identificar a porta utilizada pela instância do SQL Server)

Utilizando a extended procedure xp_instance_regread

Disponível a partir do SQL Server 2000, essa procedure extendida não possui muita documentação na Internet ou pela própria Microsoft (assim como a maioria das XP’s), mas é bem útil para recuperar e consultar informações da instância no Windows Registry, principalmente por estar disponível em todas as versões do SQL Server até o momento.

O seu uso é bem simples, e diferente da DMV, só retorna uma registro. Sendo assim, não é possível listar as chaves e valores de uma só vez, devem ser consultados manualmente. Por este motivo, a DMV e essa procedure possuem conceitos e finalidades diferentes.

Exemplo de utilização para retornar a versão da instância:

Transact-SQL
1
2
3
4
5
6
7
8
9
DECLARE @dir NVARCHAR(4000)
 
EXEC master.dbo.xp_instance_regread
    N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion\',
    N'CurrentVersion',
    @dir OUTPUT
 
SELECT @dir

Obs: Vale lembrar que assim como as outras Extended Procedures, não é permitido uma variável de OUTPUT com mais de 4.000 caracteres como parâmetro para receber os dados retornados.

Caso seja informado um NVARCHAR(4001) ou NVARCHAR(MAX), por exemplo, a variável de OUTPUT gerará uma mensagem de erro ou ficará sem valor (NULL), no caso do NVARCHAR(MAX).

Utilizando a extended procedure xp_regread

Assim como a XP xp_instance_regread, essa procedure está disponível desde a versão 2000 do SQL Server até as versões atuais e permite consultar qualquer chave de registro do servidor onde a instância está instalada.

Quem acompanha o meu blog há algum tempo já deve conhecer a XP xp_regread através do post As procedures estendidas não documentadas do SQL Server. Se você ainda não acessou esse post, não perca tempo! Vale a pena.

A grande diferença entre essa XP e a xp_instance_regread, é que a xp_instance_regread “converte” o caminho informado, transformando “Microsoft\MSSQLServer” em “Microsoft\Microsoft SQL Server\<Sua instancia>\MSSQLServer”.

Ex: Se você informar “Software\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion\”, a SP irá converter para “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\MSSQLServer” (no meu caso), que é o local de instalação padrão da instância que estou conectado.

Isso é especialmente importante quando o servidor possui mais de uma instância instalada. Com exatamente o mesmo código, você pode consultar as chaves da sua instância sem se preocupar em alterar a chave de registro do seu código para cada instância.

Exemplo de utilização da xp_regread:

Transact-SQL
1
2
3
4
5
6
7
8
9
DECLARE @dir NVARCHAR(4000)
 
EXEC master.dbo.xp_regread
    N'HKEY_LOCAL_MACHINE',
    N'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\MSSQLServer\CurrentVersion',
    N'CurrentVersion',
    @dir OUTPUT
 
SELECT @dir

Como vocês podem observar, utilizando essa SP precisamos informar o caminho completo da chave do registro. Porém, ela nos permite realizar consultas em qualquer chave do registro do Windows, como o exemplo abaixo:

SQL Server - Windows Registry xp_regread

É isso aí, galera!
Obrigado pela visita e até o próximo post!

Tags: sqlsql serverwindows registry

You may also like...

  • SQL Server – The data types datetime and time are incompatible in the add operator

  • SQL Server – Como ocultar os databases para usuários não autorizados

  • Removendo tags HTML de uma string no SQL Server

  • Next SQL Server 2012 – Trabalhando com Sequences e comparações com IDENTITY
  • Previous Utilizando o trace padrão do SQL Server para auditar eventos (fn_trace_gettable)

Deixe uma resposta Cancelar resposta

Dirceu Resende © 2020. All Rights Reserved.