Existe-t-il une méthode intégrée dans SQL Server 2005 pour auditer des éléments tels que la suppression d'une procédure stockée? Y a-t-il une table d'historique que je peux interroger? Nous avons un sproc mystérieux qui a disparu plusieurs fois maintenant.SQL Server 2005 Modifier l'audit
Répondre
Vous pouvez construire ce en utilisant des déclencheurs DDL:
uniquement si vous utilisez DDL triggers ou utilisez profileur pour tracer le texte "% DROP% PROC% procname%"
Vous pouvez configurer un profileur trace pour capturer l'événement Audit Schema Object Management et filtre en fonction du nom de la base de données qui vous intéresse. Chaque fois qu'un objet dans le schéma est créé, supprimé, édité, il lancera un événement dans profiler qui inclut la personne qui a fait la modification et le nom de la procédure stockée.
Vous voulez au moins ces colonnes profileurs: ApplicationName - nom de l'utilisateur de l'application a été en cours d'exécution quand ils ont fait changer DatabaseName - Databse contenant l'objet modifié EventSubClass - Type d'action montre Alter, Modifier, Drop, Créer etc LoginName - utilisateur effectuant la modification ObjectName - objet affecté
Notez que dans SQL Server 2008, ils ont également maintenant AUDIT pour remplacer les traces de profileur pour les activités d'audition. Il est similaire, mais a sa propre interface de configuration et l'interface utilisateur pour afficher les résultats
[fin une, mais ajoute des détails sur la façon de voir qui a fait le changement avant même système d'audit est mis en place]
D'autres ont déjà couvert différents vous pouvez commencer à auditer des données afin de surveiller les changements futurs, mais si vous n'aviez pas de système de vérification à l'origine, il est très difficile de savoir qui a fait quoi et quand, historiquement. Seule l'option consiste à essayer de lire le journal des transactions en supposant que la base de données est en mode de récupération complète. Le problème est que ceci n'est pas supporté par défaut. Les options sont:
- outils tiers tels que ApexSQL Log ou Quest Toad
- fonctions non documentées telles que DBCC LOG ou fn_dblog
Voir ces sujets pour plus de détails:
How to view transaction log in SQL Server 2008
Je suis d'accord. Il peut s'agir du profileur SQL Server avec des filtres. Les déclencheurs DDL existaient dans SQL Server. Vous pouvez créer quelque chose comme ceci:
CREATE TRIGGER ddl_drop_procedure
ON DATABASE
FOR DROP_PROCEDURE
AS
RAISERROR ('You deleted a stored procedure',10, 1)
GO
L'autre option est d'utiliser des outils tiers comme Auto audit de CodePlex ou d'un déclencheur ApexSQL.