none
Renomear Stored Procedures RRS feed

  • 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.
    terça-feira, 27 de janeiro de 2009 17:42

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
    terça-feira, 27 de janeiro de 2009 18:12
    Moderador
  • 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.procedures

    where 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
    terça-feira, 27 de janeiro de 2009 18:28

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
    terça-feira, 27 de janeiro de 2009 18:12
    Moderador
  • 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.procedures

    where 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
    terça-feira, 27 de janeiro de 2009 18:28
  • Maia,

     

    O Generate script eu não havia pensado, mas em excluir justamente pela necessidade de ter que recompilar as sp, eu acho que seria mais traumático.

     

     

    terça-feira, 27 de janeiro de 2009 18:37
    Moderador
  • 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
    quinta-feira, 5 de fevereiro de 2009 14:01