Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Recuperar programaticamente a origem do procedimento armazenado do SQL Server que é idêntica à origem retornada pela gui do SQL Server Management Studio?

EXEC sp_helptext 'your procedure name';

Isso evita o problema com a abordagem INFORMATION_SCHEMA em que o procedimento armazenado é interrompido se for muito longo.

Atualização:David escreve que isso não é idêntico ao seu sproc... talvez porque ele retorna as linhas como 'registros' para preservar a formatação? Se você quiser ver os resultados em um formato mais 'natural', você pode usar Ctrl-T primeiro (saída como texto) e deve imprimi-lo exatamente como você digitou. Se você estiver fazendo isso em código, é trivial fazer um foreach para reunir seus resultados exatamente da mesma maneira.

Atualização 2:Isso fornecerá à fonte um "CREATE PROCEDURE" em vez de um "ALTER PROCEDURE", mas não conheço nenhuma maneira de fazê-lo usar "ALTER". Uma coisa meio trivial, porém, não é?

Atualização 3:veja os comentários para obter mais informações sobre como manter seu SQL DDL (estrutura de banco de dados) em um sistema de controle de origem. Essa é realmente a chave para esta pergunta.