Published on

March 5, 2001

Explorando Procedimentos Armazenados Estendidos Não Documentados no SQL Server

Procedimentos armazenados estendidos são um recurso poderoso no SQL Server que permite estender as capacidades do banco de dados. Embora existam muitos procedimentos armazenados estendidos bem documentados disponíveis, também existem alguns não documentados que podem ser úteis em determinados cenários. Neste artigo, exploraremos alguns desses procedimentos armazenados estendidos não documentados e como eles podem ser usados.

sp_MSgetversion

O procedimento armazenado estendido sp_MSgetversion pode ser usado para recuperar a versão atual do Microsoft SQL Server. Para usar este procedimento, basta executar o seguinte comando:

EXEC master..sp_MSgetversion

Observe que há uma maneira mais recomendada de obter a versão atual do SQL Server, que é executando a seguinte instrução select:

SELECT @@version

xp_dirtree

O procedimento armazenado estendido xp_dirtree pode ser usado para obter uma lista de todos os subdiretórios de um determinado diretório. Para recuperar todos os subdiretórios do diretório “C:MSSQL7”, execute o seguinte comando:

EXEC master..xp_dirtree 'C:MSSQL7'

xp_enum_oledb_providers

O procedimento armazenado estendido xp_enum_oledb_providers pode ser usado para recuperar uma lista de todos os provedores OLE DB. Este procedimento retorna o Nome do Provedor, Nome Analisado e Descrição do Provedor. Para obter a lista de todos os provedores OLE DB, execute o seguinte comando:

EXEC master..xp_enum_oledb_providers

xp_enumcodepages

O procedimento armazenado estendido xp_enumcodepages pode ser usado para recuperar uma lista de todas as páginas de código, conjuntos de caracteres e suas descrições. Para usar este procedimento, execute o seguinte comando:

EXEC master..xp_enumcodepages

xp_enumdsn

O procedimento armazenado estendido xp_enumdsn retorna uma lista de todos os DSNs do sistema e suas descrições. Para recuperar a lista de DSNs do sistema, execute o seguinte comando:

EXEC master..xp_enumdsn

xp_enumerrorlogs

O procedimento armazenado estendido xp_enumerrorlogs retorna uma lista de todos os logs de erro com a data da última alteração. Para obter a lista de logs de erro, execute o seguinte comando:

EXEC master..xp_enumerrorlogs

xp_enumgroups

O procedimento armazenado estendido xp_enumgroups retorna uma lista de grupos do Windows NT e suas descrições. Para recuperar a lista de grupos do Windows NT, execute o seguinte comando:

EXEC master..xp_enumgroups

xp_fileexist

O procedimento armazenado estendido xp_fileexist pode ser usado para determinar se um determinado arquivo existe no disco ou não. Para verificar se o arquivo “boot.ini” existe no disco “C:”, execute o seguinte comando:

EXEC master..xp_fileexist 'c:boot.ini'

xp_fixeddrives

O procedimento armazenado estendido xp_fixeddrives retorna uma lista de todos os discos rígidos fixos e a quantidade de espaço livre em MB para cada disco rígido. Para usar este procedimento, execute o seguinte comando:

EXEC master..xp_fixeddrives

xp_getnetname

O procedimento armazenado estendido xp_getnetname retorna o nome WINS do SQL Server ao qual você está conectado. Para recuperar o nome WINS, execute o seguinte comando:

EXEC master..xp_getnetname

xp_readerrorlog

O procedimento armazenado estendido xp_readerrorlog retorna o conteúdo do arquivo de log de erros. Para ver o texto do arquivo de log de erros, execute o seguinte comando:

EXEC master..xp_readerrorlog

xp_regdeletekey

O procedimento armazenado estendido xp_regdeletekey é usado para excluir uma chave inteira do registro. Este procedimento deve ser usado com cautela. Para excluir a chave “SOFTWARE\Test” do registro “HKEY_LOCAL_MACHINE”, execute o seguinte comando:

EXEC master..xp_regdeletekey
     @rootkey='HKEY_LOCAL_MACHINE',
     @key='SOFTWARE\Test'

xp_regdeletevalue

O procedimento armazenado estendido xp_regdeletevalue é usado para excluir um valor específico de uma chave do registro. Este procedimento deve ser usado com cautela. Para excluir o valor “TestValue” para a chave “SOFTWARE\Test” do registro “HKEY_LOCAL_MACHINE”, execute o seguinte comando:

EXEC master..xp_regdeletevalue
     @rootkey='HKEY_LOCAL_MACHINE',
     @key='SOFTWARE\Test',
     @value_name='TestValue'

xp_regread

O procedimento armazenado estendido xp_regread é usado para ler do registro. Para ler o valor “TestValue” para a chave “SOFTWARE\Test” do registro “HKEY_LOCAL_MACHINE”, execute o seguinte comando:

DECLARE @test varchar(20)
EXEC master..xp_regread
     @rootkey='HKEY_LOCAL_MACHINE',
     @key='SOFTWARE\Test',
     @value_name='TestValue',
     @value=@test OUTPUT
SELECT @test

xp_regwrite

O procedimento armazenado estendido xp_regwrite é usado para escrever no registro. Para escrever a variável “Test” no valor “TestValue” para a chave “SOFTWARE\Test” no registro “HKEY_LOCAL_MACHINE”, execute o seguinte comando:

EXEC master..xp_regwrite
     @rootkey='HKEY_LOCAL_MACHINE',
     @key='SOFTWARE\Test',
     @value_name='TestValue',
     @type='REG_SZ',
     @value='Test'

xp_subdirs

O procedimento armazenado estendido xp_subdirs é usado para obter uma lista de subdiretórios para um determinado diretório. Ao contrário do xp_dirtree, xp_subdirs retorna apenas diretórios com uma profundidade de 1. Para recuperar a lista de subdiretórios do diretório “C:MSSQL7”, execute o seguinte comando:

EXEC master..xp_subdirs 'C:MSSQL7'

Esses são apenas alguns exemplos dos procedimentos armazenados estendidos não documentados disponíveis no SQL Server. Embora possam não ser oficialmente suportados, eles ainda podem ser úteis em determinadas situações. No entanto, é importante usá-los com cautela e testá-los completamente antes de implementá-los em um ambiente de produção.

Obrigado por ler!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.