Visualizações: 2.068 views
Tempo de Leitura: 6 minutosOlá 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:
|
EXEC master.dbo.sp_helpextendedproc |

sp_MSgetversion
Visualizar informações
Essa procedure pode ser utilizada para retornar a versão corrente do SQL Server.
Exemplo de uso:
|
EXEC master..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:
|
EXEC master..xp_dirtree 'C:\' |

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:
|
EXEC master.dbo.xp_subdirs 'C:\Users\' |

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:
|
EXEC master..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:
|
EXEC master.dbo.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:
|
EXEC master..xp_readerrorlog -- Log atual EXEC master..xp_readerrorlog 1 -- Log #1 EXEC master..xp_readerrorlog 0, 1, N'Starting up', 'master', NULL, NULL, N'asc' |

xp_logevent
Visualizar informações
Essa procedure pode ser utilizada para gravar mensagens de eventos no log do sistema operacional.
Exemplo de uso:
|
EXEC master..xp_logevent 50001, 'Teste de mensagem no Event Viewer', 'INFORMATIONAL' -- INFORMATIONAL, WARNING, ERROR |

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:
|
EXEC master..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:
|
EXEC master.dbo.xp_fileexist 'C:\Teste.html' |

xp_create_subdir
Visualizar informações
Essa procedure pode ser utilizada para criar diretórios no seu servidor SQL Server.
Exemplo de uso:
|
EXEC master.dbo.xp_create_subdir 'C:\Dirceu\Teste' |

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:
|
EXEC master.dbo.xp_delete_file 0, -- (0 = Arquivo de backup, 1 = Arquivo de report) 'C:\Backups\', -- diretório (terminando com "\") 'bak', -- extensão do arquivo (sem o ".") '2015-08-31', -- data de corte para deletar 1 -- flag para subdiretórios (1 = incluir sub-diretórios, 0 = não incluir) |

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:
|
EXEC master.dbo.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:
|
EXEC master.dbo.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:
|
EXEC master..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:
|
EXEC master.dbo.xp_regdeletekey @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE\Teste_Dirceu' |



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:
|
EXEC master.dbo.xp_regdeletevalue @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE\Teste_Dirceu', @value_name = 'Oracle Database' |



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:
|
DECLARE @Retorno VARCHAR(4000) EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\Teste_Dirceu', @value_name = 'Campeão Carioca 2015', @value = @Retorno OUTPUT SELECT @Retorno |


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:
|
EXEC master..xp_regwrite @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE\Teste_Dirceu', @value_name = 'Flamengo na Copa do Brasil 2015', @type = 'REG_SZ', @value = 'Eliminado pelo Vasco' |


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:
|
EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'xp_cmdshell', 1 -- 0 para desativar GO RECONFIGURE GO |
Exemplo de uso:
|
EXEC master.dbo.xp_cmdshell 'dir C:\' EXEC master.dbo.xp_cmdshell 'ping localhost' |


sql server clr xp extended procedures native dll
sql server clr xp extended procedures native dll