Comment identifier rapidement les dernières procédures stockées modifiées dans SQL Server

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

Question

J'ai besoin de migrer manuellement les procédures stockées modifiées d'une instance de base de données DEV SQL Server 2005 vers une instance TEST. À l'exception des modifications que je migre, les bases de données ont les mêmes schémas. Comment identifier rapidement les procédures stockées modifiées dans la base de données DEV pour la migration vers l'instance TEST?

Je suppose que je peux écrire une requête sur certaines des tables système pour afficher les objets de base de données de type procédure stockée, en effectuant un tri en fonction des dernières données modifiées ou compilées, mais je ne suis pas sûr. Peut-être y a-t-il une sorte d'utilitaire gratuit que quelqu'un peut m'indiquer.

Merci d'avance,

Bob

Était-ce utile?

La solution

au lieu d'utiliser sysobjects, ce qui n'est plus recommandé, utilisez sys.procedures

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

vous pouvez faire la clause where vous-même mais cela la listera par ordre de date de modification décroissant

Autres conseils

Bob OMalley a probablement résolu son problème il y a longtemps, mais espérons que les nouveaux lecteurs le trouveront utile.

Dans certains cas particuliers, les scripts peuvent ne pas donner des résultats optimaux.

On est en train de supprimer des procédures stockées ou d'autres objets dans un environnement de développement & # 8211; vous n'aurez pas & # 8217; ne remarquerez pas cela à l'aide des vues système, car l'objet & # 8217; n'existera plus.

De plus, je & # 8217; je ne suis pas vraiment sûr que cette approche puisse fonctionner avec des modifications telles que les autorisations et les modifications similaires.

Dans de tels cas, il est préférable d’utiliser un outil tiers pour vérifier que rien ne manque.

J'ai & # 8217; utilisé avec succès ApexSQL Diff dans le passé pour des tâches similaires et cela a très bien fonctionné sur les grandes bases de données contenant plus de 1 000 objets, mais vous ne pouvez & n ° 8217; ne pas vous tromper en comparant SQL. Comparez le fait que & n ° 8217; soit déjà mentionné ici ou tout autre outil existant sur le marché.

Clause de non-responsabilité: & # 8217; je ne suis affilié à aucun des fournisseurs que je & # 8217; je mentionne ici, mais j'utilise les deux outils (Apex et RG) dans l'entreprise pour laquelle je travaille.

Vous pouvez exécuter cette requête pour rechercher toutes les procédures stockées modifiées au cours des x derniers jours:

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

Bien que ce ne soit pas gratuit, j’ai eu une bonne expérience d’utilisation de Red-Gates outil de comparaison SQL . Cela a fonctionné pour moi dans le passé. Ils ont un essai gratuit disponible qui peut être assez bon pour résoudre votre problème actuel.

vous pouvez également utiliser l'extrait de code suivant

USE AdventureWorks2008;

GO

SELECT SprocName=name, create_date, modify_date

FROM sys.objects

WHERE type = 'P' 

AND name = 'uspUpdateEmployeeHireInfo'

GO

Vous pouvez utiliser le type de requête suivant pour trouver des procédures stockées modifiées. Vous pouvez utiliser n'importe quel nombre puis 7 selon vos besoins

SELECT nom     FROM sys.objects     O type = 'P'         AND DATEDIFF (D, modify_date, GETDATE ()) & Lt; 7

Il existe plusieurs outils de comparaison de bases de données. SQLCompare, que j’ai toujours aimé, est Red Gate .

Vous pouvez également essayer d'utiliser:

SELECT name
FROM sys.objects
WHERE modify_date > @cutoffdate

En SQL 2000, cela n’aurait pas toujours fonctionné, car ALTER n’a pas correctement mis à jour la date, mais en 2005, ce problème est résolu.

J'utilise moi-même un outil de comparaison SQL, je ne peux donc pas me porter garant pour cette méthode à 100%

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top