Usuário com melhor resposta
Renomear Stored Procedures

Pergunta
-
Boa tarde à todos,
Senhores, tenho uma base de dados (SQL Server 2005), com aproximadamente 200 stored procedures de usuário, todas estas procedures estão com prefixo 'SP_' oque é uma má prática, esta base ainda não esta em produção.
Gostaria de saber se a melhor forma de renomear estas procedures é excluindo e recriando elas ou simplismente renomear elas pelo SSMS.
Att.
Respostas
-
JrSantos,
Se formos se basear na quantidade de stored procedures que você tem, não seria legal excluir e criar novamente.
Agora o que você teria que fazer é através das systems tables obter a relação das stored procedures que começam por sp, armazenar esta relação em algum table e depois criar um curso que estará varrendo esta table, fazendo uso da system stored procedure sp_rename você poderia criar um query dinamica para realizar o rename de cada sp.
- Marcado como Resposta jrsantos quinta-feira, 5 de fevereiro de 2009 13:53
-
Olá JRSantos,
Acho que excluir seria um caminho. Mesmo com uma quantidade muito grande, você poderia utilizar o GENERATE SCRIPT para gerar o script de todas e alterar o script substituindo sp_ por sp.
No caso de optar por renomear, lembre-se de recompilá-las posteriormente. Segue os comandos para gerar todos os renames e todos os recompiles.
Code Snippet-- Alterar e recompilar
select
'exec sp_rename ' + '''' + name + '''' + ',' + '''' + replace(name,'sp_','sp') + '''' + CHAR(10) + 'exec sp_recompile ' + '''' + replace(name,'sp_','sp') + ''''from
sys.procedureswhere
name like 'sp[_]%'[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
- Marcado como Resposta jrsantos quinta-feira, 5 de fevereiro de 2009 13:53
Todas as Respostas
-
JrSantos,
Se formos se basear na quantidade de stored procedures que você tem, não seria legal excluir e criar novamente.
Agora o que você teria que fazer é através das systems tables obter a relação das stored procedures que começam por sp, armazenar esta relação em algum table e depois criar um curso que estará varrendo esta table, fazendo uso da system stored procedure sp_rename você poderia criar um query dinamica para realizar o rename de cada sp.
- Marcado como Resposta jrsantos quinta-feira, 5 de fevereiro de 2009 13:53
-
Olá JRSantos,
Acho que excluir seria um caminho. Mesmo com uma quantidade muito grande, você poderia utilizar o GENERATE SCRIPT para gerar o script de todas e alterar o script substituindo sp_ por sp.
No caso de optar por renomear, lembre-se de recompilá-las posteriormente. Segue os comandos para gerar todos os renames e todos os recompiles.
Code Snippet-- Alterar e recompilar
select
'exec sp_rename ' + '''' + name + '''' + ',' + '''' + replace(name,'sp_','sp') + '''' + CHAR(10) + 'exec sp_recompile ' + '''' + replace(name,'sp_','sp') + ''''from
sys.procedureswhere
name like 'sp[_]%'[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
- Marcado como Resposta jrsantos quinta-feira, 5 de fevereiro de 2009 13:53
-
-
Olá Maia e Junior, obrigado pelas dicas.
Criei uma tabela e utilizando o script postado pelo Maia inseri nesta os comandos para rename e recompile, após criei uma procedure com cursor para executar os comandos inseridos na tabela.
Att.
jrsantos