Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

As procedures estendidas não documentadas do SQL Server

Visualizações: 2.309 views
Tempo de Leitura: 6 minutos

Olá pessoal!
Boa noite!

Neste post, vou comentar sobre algumas procedures estendidas (extended procedures) do SQL Server e que são muito úteis. Até este post, não encontrei nenhuma documentação oficial da Microsoft sobre isso resolvi comentar sobre ela, além de demonstrar alguns exemplos.

Uma procedure estendida (XP) é um link para uma biblioteca dinâmica (DLL), programada utilizando a API SQL Server Open Data Services API e são utilizadas para estender as funcionalidades do SQL Server. Você pode utilizar das várias procedures que vem com o SQL Server ou criar as suas próprias procedures estendidas utilizando as linguagens de programação C ou C++.

Atualmente, não há um incentivo muito grande para a utilização dessas procedures, pois elas foram depreciadas e devem ser removidas em alguma versão futura do SQL Server. A alternativa mais viável para a substituição das XP Procedures é o uso de procedures SQL CLR.

Entretanto, não podia perder a oportunidade de comentar sobre essas SP’s, que sempre me auxiliaram em várias ocasiões e ainda vejo muitas rotinas as utilizando.

Para visualizar a lista de procedures estendidas presentes na sua instalação, basta executar o comando abaixo:

XP Procedures - sp_helpextendedproc

sp_MSgetversion

Visualizar informações

Essa procedure pode ser utilizada para retornar a versão corrente do SQL Server.

Exemplo de uso:

Procedures XP - sp_MSgetversion

Solução alternativa:

xp_dirtree

Visualizar informações
Essa procedure pode ser utilizada para listar todas as pastas e sub-pastas (recursivamente) a partir de um determinado diretório.

Exemplo de uso:

Procedures XP - xp_dirtree

xp_subdirs

Visualizar informações
Essa procedure pode ser utilizada para retornar os diretórios (não recursivos) a partir de um diretório informado. Em comparação com a procedure xp_dirtree, ela retorna apenas as linhas onde a profundidade do nó (depth) = 1.

Exemplo de uso:

Procedures XP - xp_subdirs

xp_enum_oledb_providers

Visualizar informações
Essa procedure pode ser utilizada para retornar todos os provedores de OLE DB disponíveis. Ela retorna o nome do provedor, o parse name e a descrição do provedor.

Exemplo de uso:

Procedures XP - xp_enum_oledb_providers

xp_enumerrorlogs

Visualizar informações
Essa procedure pode ser utilizada para retornar todos os arquivos de log de erro e as datas de alteração.

Exemplo de uso:

Procedures XP - xp_enumerrorlogs

xp_readerrorlog

Visualizar informações
Essa procedure pode ser utilizada para ler o arquivo de log de erro do SQL Server. Como parâmetro opcional, você pode informar o # do arquivo. Caso não seja informado, irá mostrar o log atual.

Lista de parâmetros:
1º parâmetro: Número do arquivo de log que você deseja visualizar (0 = Current, 1 = Archive #1, 2 = Archive #2)
2º parâmetro: Tipo do arquivo de log (1 ou NULL para log de erro, 2 para log do SQL Agent)
3º parâmetro: A string que você gostaria de buscar
4º parâmetro: Uma outra string para refinar o resultado já filtrado
5º parâmetro: Data inicial do log
6º parâmetro: Data final do log
7º parâmetro: Ordenação dos resultados (‘asc’ = ascendente, ‘desc’ = descendente)

Exemplo de uso:

Procedures XP - xp_readerrorlog

xp_logevent

Visualizar informações
Essa procedure pode ser utilizada para gravar mensagens de eventos no log do sistema operacional.

Exemplo de uso:

Procedures XP - xp_logevent

xp_enumgroups

Visualizar informações
Essa procedure pode ser utilizada para retornar todos os grupos da máquina e suas descrições.

Exemplo de uso:

Procedures XP - xp_enumgroups

xp_fileexist

Visualizar informações
Essa procedure pode ser utilizada para retornar todos os grupos da máquina e suas descrições.

Exemplo de uso:

Procedures XP - xp_fileexist

xp_create_subdir

Visualizar informações
Essa procedure pode ser utilizada para criar diretórios no seu servidor SQL Server.

Exemplo de uso:

Procedures XP - xp_create_subdir

xp_delete_file

Visualizar informações
Essa procedure pode ser utilizada para apagar arquivos de backup ou report. Apesar do nome parecer que ela pode apagar qualquer arquivo, ela é restrita para apenas arquivos de backup (BAK) e relatórios (RPT).

Exemplo de uso:

Procedures XP - sp_delete_file

xp_fixeddrives

Visualizar informações
Essa procedure pode ser utilizada para listar todas as unidades de disco físico ou drives mapeados, informando o espaço livre.

Exemplo de uso:

Procedures XP - xp_fixeddrives

xp_availablemedia

Visualizar informações
Essa procedure pode ser utilizada para listar todas as unidades de backup conectadas ao servidor. Caso não tenha nenhuma unidade, a SP irá retornar todos as unidades de disco.

Exemplo de uso:

Procedures XP - xp_availablemedia

xp_getnetname

Visualizar informações
Essa procedure pode ser utilizada para retornar o nome WINS da máquina onde sua sessão está conectada.

Exemplo de uso:

Procedures XP - xp_getnetname

xp_regdeletekey

Visualizar informações
Essa procedure pode ser utilizada para remover uma chave no Registro do Windows da instalação do SQL Server. Muito cuidado ao utilizar essa procedure, pois pode danificar a instalação do Windows nesse servidor.

Exemplo de uso:

Procedures XP - xp_regdeletekey_1

Procedures XP - xp_regdeletekey_2

Procedures XP - xp_regdeletekey_3

xp_regdeletevalue

Visualizar informações
Essa procedure pode ser utilizada para remover um valor específico de uma chave no Registro do Windows da instalação do SQL Server. Muito cuidado ao utilizar essa procedure, pois pode danificar a instalação do Windows nesse servidor.

Exemplo de uso:

Procedures XP - xp_regdeletevalue

Procedures XP - xp_regdeletevalue_2

Procedures XP - xp_regdeletevalue_3

xp_regread

Visualizar informações
Essa procedure pode ser utilizada para consultar um valor específico de uma chave no Registro do Windows da instalação do SQL Server.

Exemplo de uso:

Procedures XP - xp_regread_1

Procedures XP - xp_regread_2

xp_regwrite

Visualizar informações
Essa procedure pode ser utilizada para gravar um valor específico de uma chave no Registro do Windows da instalação do SQL Server. Muito cuidado ao utilizar essa procedure, pois pode danificar a instalação do Windows nesse servidor.

Exemplo de uso:

Procedures XP - xp_regwrite_1

Procedures XP - xp_regwrite_2

xp_cmdshell

Visualizar informações
Permite executar qualquer comando do Prompt de comando (DOS) no servidor. Muito cuidado ao utilizar essa procedure, pois pode danificar a instalação do Windows nesse servidor.

Para utilizar esse comando, é necessário habilitar esse recurso, uma vez que se mal utilizado, pode danificar seriamente a sua instalação:

Exemplo de uso:

XP Procedures - xp_cmdshell

XP Procedures - xp_cmdshell_2

sql server clr xp extended procedures native dll

sql server clr xp extended procedures native dll