it-swarm-pt.tech

Como identificar rapidamente os procedimentos armazenados modificados mais recentemente no SQL Server

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

Suponho que posso escrever uma consulta em algumas tabelas do sistema para exibir objetos de banco de dados do tipo procedimento armazenado, classificando por algum tipo de dados modificados ou compilados pela última vez, mas não tenho certeza. Talvez haja algum tipo de utilidade gratuita que alguém possa me indicar.

Desde já, obrigado,

Prumo

22
Bob OMalley

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

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

você mesmo pode fazer a cláusula where, mas ela será listada em ordem decrescente da data de modificação

59
SQLMenace

Bob OMalley provavelmente resolveu seu problema há muito tempo, mas espero que novos leitores achem isso útil.

Existem alguns casos especiais em que os scripts podem não fornecer os melhores resultados.

Um deles é a exclusão de procedimentos armazenados ou outros objetos no ambiente de desenvolvimento - você não pode capturar isso usando visualizações do sistema, porque o objeto não existe mais por lá.

Além disso, não tenho certeza se essa abordagem pode funcionar em alterações como permissões e similares.

Nesses casos, é melhor usar alguma ferramenta de terceiros apenas para verificar se nada está faltando.

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

Isenção de responsabilidade: não sou afiliado a nenhum dos fornecedores mencionados aqui, mas uso o conjunto de ferramentas (Apex e RG) na empresa em que trabalho.

11
Ron Biggs

Você pode executar esta consulta para encontrar todos os procedimentos armazenados modificados no último número x de dias:

DECLARE @X INT = 30
SELECT name
FROM sys.objects
WHERE type = 'P'
    AND DATEDIFF(D,modify_date, GETDATE()) < @X
10
Jason Stevenson

Embora não seja gratuito, tive uma boa experiência usando o Red-Gates ferramenta SQL Compare . Funcionou para mim no passado. Eles têm uma avaliação gratuita disponível, que pode ser boa o suficiente para resolver seu problema atual.

2
Craig

você também pode usar o seguinte snippet de código

USE AdventureWorks2008;

GO

SELECT SprocName=name, create_date, modify_date

FROM sys.objects

WHERE type = 'P' 

AND name = 'uspUpdateEmployeeHireInfo'

GO
1
RBS

Você pode usar o seguinte tipo de consulta para encontrar procedimentos armazenados modificados, você pode usar qualquer número, depois 7, conforme suas necessidades

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

Existem várias ferramentas de comparação de banco de dados por aí. Um que eu sempre gostei é o SQLCompare por Red Gate .

Você também pode tentar usar:

SELECT name
FROM sys.objects
WHERE modify_date > @cutoffdate

No SQL 2000, isso nem sempre funcionou, porque o uso do ALTER não atualizou a data corretamente, mas em 2005 acredito que o problema seja corrigido.

Eu mesmo uso uma ferramenta de comparação SQL, por isso não posso garantir esse método 100%

0
Tom H