Procedures Não Documentadas no SQL Server 2000 - Parte 2

Darei continuidade nessa matéria, explicando o funcionamento de mais algumas procedures não documentadas existentes no SQL Server 2000.

xp_RegRead

Você instalou o SQL Server 2000 e perdeu aquele “papelzinho” onde estava anotado o CD Key (número de registro) do SQL Server 2000 ... Agora você está em apuros porque fez um upgrade de máquina e precisa realizar uma nova instalação ... E agora? Utilize a procedure xp_RegRead para ler informações do registry; basta informando a chave:

use master
exec xp_RegRead
                  'HKEY_LOCAL_MACHINE',
                  'SOFTWARE\Microsoft\Microsoft SQL Server\80\registration\',
                  'CD_KEY'
-------------------------------------------------------------------------------

Value          Data
CD_KEY      M3XXD-KQ4K5-XYQ89-YT9P5-DAG6F

xp_FileExist

Utilize para verificar se um arquivo existe em disco. Exemplo:

exec master..xp_FileExist 'c:\autoexec.bat'
-------------------------------------------------------------------------------

File Exists         File is a Directory         Parent Directory Exists
------------      ------------------         ------------------------
1                          0                                      1

Uma aplicação interessante para essa procedure é a criação de pacotes DTS “on demand”: poderíamos vincular a execução de um pacote à existência de um arquivo em disco:

set nocount on
create table #file (file_exists bit, file_directory bit, parent_directory_exists bit)
insert into #file
               exec master..xp_fileexist 'c:\autoexec.bat'
if (select file_exists from #file) = 1
begin
    /* o arquivo existe no diretorio, acione o pacote DTS */
    exec master..xp_CMDShell 'DTSRun
                /S
                /U
                /P
                /N
end

sp_who2

Pode-se dizer que a procedure sp_Who é uma versão “enxuta” de sp_Who2. Ambas fornecem informações sobre os processos ativos no SQL Server 2000; porém sp_Who2 fornece algumas informações adicionais :

  • CPUTime: tempo de CPU utilizado utilizado pelo comando pelo último comando executado na sessão
  • DiskIO: número de leituras e/ ou escritas realizadas pelo último comando executado na sessão
  • LastBatch: Data e hora do último batch executado na sessão
  • ProgramName: identificação do programa responsável pelo último comando que foi executado na sessão

sp_Who2 possui um parâmetro opcional: @login_name. Alguns exemplos de execução:

/* para listar todos os processos no servidor */
exec sp_Who2

/* para listar somente o processo cujo spid=67 */
exec sp_Who2 67

/* para listar somente os processos ativos */
exec sp_Who2 active

Observação: o parâmetro “active” exclui da listagem os spids que não estão executando nenhum comando no momento da execução de sp_Who2. Por exemplo, se você está com o Query Analyzer aberto mas não está executando nenhum processo, seu spid não será mostrado nessa listagem.

As dicas de hoje são essas; façam bom uso.
Vou ficando por aqui.
Até a próxima!

Leia a primeira parte deste artigo em:
//www.devmedia.com.br/articles/visualizacomponente2.asp?comp=2371