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!