Como posso identificar rapidamente mais recentemente modificado procedimentos armazenados no SQL Server

StackOverflow https://stackoverflow.com/questions/85036

Pergunta

Eu preciso migrar manualmente modificado procedimentos armazenados a partir de uma instância do banco 2005 DEV SQL Server a uma instância de teste. Exceto para as mudanças que eu estou migrando, as bases de dados têm os mesmos esquemas. Como posso identificar rapidamente quais procedimentos armazenados foram modificados no banco de dados DEV para a migração para a instância de teste?

Eu suponho que eu posso escrever uma consulta em relação a algumas das tabelas do sistema para objetos de banco de vista do tipo de procedimento armazenado, a triagem por algum tipo de últimas dados modificados ou compilados, mas eu não tenho certeza. Talvez haja algum tipo de alguém utilitário gratuito pode apontar-me a.

Agradecemos antecipadamente,

Bob

Foi útil?

Solução

em vez de usar sysobjects que não é recomendado mais utilizar sys.procedures

select name,create_date,modify_date
from sys.procedures
order by modify_date desc

Você pode fazer o onde cláusula de si mesmo, mas isso vai listá-lo em ordem de data de modificação descendente

Outras dicas

Bob OMalley provavelmente resolvido o seu problema há muito tempo, mas esperamos que novos leitores vão encontrar este útil.

Há alguns casos especiais onde os scripts pode não dar os melhores resultados.

Um está excluindo procedimentos armazenados ou outros objetos em dev ambiente - você não vai pegar isso usando visões do sistema, porque objeto não existirá lá por mais tempo

.

Além disso, eu realmente não estou certo esta abordagem pode trabalhar em mudanças como permissões e similar.

Em tais casos, a sua melhor usar alguma ferramenta de terceiros apenas para verifique nada está perdido.

Eu tenho usado com sucesso ApexSQL Diff no passado para tarefas semelhantes e funcionou muito bem em grandes bancos de dados com 1000 objetos, mas você não pode dar errado com SQL Compare isso já mencionado aqui ou basicamente qualquer outra ferramenta que existe no mercado.

Disclaimer:. Não estou filiado a nenhum dos fornecedores que eu estou mencionando aqui, mas eu uso tanto conjunto de ferramentas (Apex e RG) no trabalho da empresa I para

Você pode executar essa consulta para localizar todos os procedimentos armazenados modificados nos últimos x número de dias:

SELECT name
FROM sys.objects
WHERE type = 'P'
    AND DATEDIFF(D,modify_date, GETDATE()) < X

Apesar de não libertar Tenho tido uma boa experiência com Red-Gates SQL Compare ferramenta . Ela trabalhou para mim no passado. Eles têm uma versão gratuita disponível que pode ser bom o suficiente para resolver o seu problema atual.

Você também pode usar o seguinte código snipet

USE AdventureWorks2008;

GO

SELECT SprocName=name, create_date, modify_date

FROM sys.objects

WHERE type = 'P' 

AND name = 'uspUpdateEmployeeHireInfo'

GO

Você pode usar o seguinte tipo de consulta para encontrar procedimentos armazenados modificados, você pode usar qualquer número, em seguida, 7 como por suas necessidades

SELECT nome DE sys.objects Onde type = 'P' E DATEDIFF (D, modify_date, GETDATE ()) <7

Existem várias ferramentas comparar banco de dados lá fora. Um que eu sempre como é SQLCompare por Red Gate .

Você também pode tentar usar:

SELECT name
FROM sys.objects
WHERE modify_date > @cutoffdate

No SQL 2000 que não teria sempre trabalhou, porque usar ALTER não atualizar a data corretamente, mas em 2005 eu acredito que problema seja corrigido.

Eu uso uma ferramenta SQL comparar-me embora, então eu não posso garantir que o método 100%

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top