Procedures Não Documentadas no SQL Server 2000. Existem diversas procedures não documentadas no SQL Server 2000. Por que não são documentadas? Boa pergunta. O que posso dizer com plena convicção é que são bastante úteis e costumo utilizá-las em várias rotinas administrativas que estão sob minha responsabilidade. Vale ressaltar que, como todo processo não documentado, sua utilização deve ser vista com cautela pelo fato de não existerem garantias concretas de que tais procedimentos continuarão existindo em novas versões do produto. Como a listagem dessas procedures é extensa, estarei periodicamente voltando a esse assunto. Seguem alguns exemplos. sp_MSForEachDb Utilize essa sp para executar um ou mais procedimentos em todos os databases de um servidor. Por exemplo, vamos imaginar uma rotina para checagem da integridade de databases. Você possui algumas opções: 1. Utilizando um script com linhas de comando fixas dbcc checkdb(‘northwind’) . ...
2. Utilizando um cursor para executar o comando DBCC em todos os databases: declare cr_Cursor cursor fast_forward select name from master.dbo.SysDatabases declare @database varchar(200) fetch next from cr_Cursor into @database close cr_Cursor
3. Utilizando a procedure sp_MSForEachDB, para realizar o mesmo procedimento exec sp_MSForEachDB @command1="print '?'" ,
Os parâmetros da procedure são:
Comparando a opção 3 com as anteriores, percebemos que, além de simples, é bastante eficiente. Prevê a criação de novos databases (ponto onde a opção 1 deixa a desejar) e faz a mesma coisa que a opção 2, porém de maneira mais simples e objetiva. sp_MSForEachTable Executa um procedimento para todas as tabelas pertencentes a um database. Para reindexar todas as tabelas de um database: EXEC sp_MSforeachTable @command1="print '>>>Tabela: ?' @command2="DBCC dbreindex ('?')" À exceção de @whereand (opcional para informar mais uma restrição a ser aplicada na tabela SysObjects), os outros parâmetros são os mesmos daqueles vistos na sp_MSForEachDB. Poderíamos utilizar o parâmetro @whereand para reindexar somente as tabelas cujo nome iniciasse por “or”: use NorthWind ------------------------------------------------------------------------------- >>>Tabela: [dbo].[Orders]
Bem pessoal por hoje é só. Forte abraço a todos e até a próxima! Paulo Ribeiro
|
|
||||||||||||||||||||||||||||||||||
Todos
os direitos reservados: DevMedia Group |