Quel type d'information d'audit est stocké par serveur sql lors d'une opération TABLE CREATE TABLE ou ALTER est effectuée?

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

  •  13-09-2019
  •  | 
  •  

Question

L'inspiration pour cette question est une procédure stockée a éclaté sur moi parce qu'il a appelé une autre procédure stockée qui a inséré des données dans une table dont le schéma a été complètement modifié.

La question est que vous avez une table dans une base de données SQL Server, et vous ne savez pas comment il est arrivé là. Vous n'avez pas en place des déclencheurs DDL pour les informations d'audit personnalisé, et il n'y a aucune trace dans votre référentiel de contrôle de code source des tables DDL. En utilisant seulement SQL Server, les données médico-légales que vous pouvez obtenir sur le tableau.

Moi-même, et celui qui tombe par hasard sur cette question dans une situation similaire, ne va pas être aidé par des suggestions concernant le contrôle des versions et des déclencheurs DDL. Ce sont d'excellentes solutions go vers l'avant, et il y a beaucoup d'informations sur ce blog sur ces sujets, si la politique d'entreprise nous permet de mettre en œuvre ces solutions. Ce que je, et les gens dans ma situation vraiment besoin est d'être capable de rassembler autant de fragments de données que possible à partir du serveur SQL, à combiner avec tout autre données que nous pouvons trouver.

Était-ce utile?

La solution

Malheureusement, vous avez aucun moyen de reconstituer ce qui est arrivé, sauf:

  • si les traces ont CBM en cours d'exécution et l'histoire. SQL Server 2005 a une trace par défaut et il est la trace « Blackbox », mais ceux-ci sont utilisées pour savoir ce qui est arrivé juste avant un accident

  • si vous avez le modèle de récupération complète, vous pouvez essayer un outil de visualisation de journal ( libre Red Gate un )

  • fonction de l'activité et votre modèle de sécurité, vous pouvez également consulter le journal de sécurité Windows pour voir qui connecté avec des privilèges DDL

  • les journaux d'événements SQL peuvent également avoir des informations. Par exemple, si vous avez activé l'indicateur de trace qui enregistre la « permission » des erreurs, vous pouvez le voir quand il a commencé. Ou la personne qui a fait le changement peut avoir généré d'autres exceptions qui sont connectés

  • vous pouvez demander à ceux qui ont des droits. Il pourrait être une véritable erreur (par exemple trouvé qu'elles étaient en dev)

Autres conseils

La requête suivante m'a le créer et modifier la dernière fois.

SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbTableInQuestion]') AND type in (N'U')

Vous devriez être en mesure de trouver la création de la table dans le . journal des transactions je ne l'ai jamais utilisé l'un des outils des spectateurs ici, et je ne pourrais pas vous dire comment rechercher dans le temps pour cela, mais tout se passe dans une transaction, il doit y avoir connecté - même la tables système ...

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