2009-06-12 7 views
2

L'inspiration pour cette question est un proc stocké s'est cassé sur moi parce qu'il a appelé un autre proc stocké qui a inséré des données dans une table dont le schéma a été complètement changé.Quel type d'informations d'audit est stocké par le serveur SQL lors de l'exécution d'une opération CREATE TABLE ou ALTER TABLE?

La question est 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 aucun déclencheur DDL en place pour les informations d'audit personnalisées et il n'existe aucun enregistrement dans le référentiel de contrôle source des tables DDL. En utilisant uniquement SQL Server, quelles données légales pouvez-vous obtenir sur la table.

Moi-même, et quiconque trébuche sur cette question dans une situation similaire, ne sera pas aidé par des suggestions concernant le contrôle de version et les déclencheurs DDL. Ce sont d'excellentes solutions pour aller de l'avant, et il y a beaucoup d'informations sur ce sujet sur ce blog, si la politique d'entreprise nous permet de mettre en œuvre ces solutions. Ce que moi, et les personnes dans ma situation, avons vraiment besoin, c'est de pouvoir rassembler autant de fragments de données que possible à partir du serveur SQL, pour les combiner avec d'autres données que nous pouvons trouver.

Répondre

3

Malheureusement, vous avez aucun moyen de reconstruire 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 y a la trace "blackbox", mais ils sont utilisés pour savoir ce qui s'est passé juste avant un crash

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

  • 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 les erreurs "d'autorisation", vous pouvez voir quand il a démarré. Ou la personne qui a fait le changement peut avoir généré d'autres exceptions qui sont enregistrées

  • vous pourriez demander à ceux avec des droits. Cela pourrait être une véritable erreur (par exemple, ils pensaient qu'ils étaient en dév)

0

Vous devriez être capable de trouver la création de la table dans le transaction log. Je n'ai jamais utilisé aucun des outils de visionneuse ici, et je ne pourrais pas vous dire comment chercher à temps pour cela, mais tout se passe dans un transaction, il doit donc être connecté - même les tables système ...

+0

J'ai été capable de créer et de modifier l'heure à partir de sys.objects. Je doute que le journal des transactions pour cela est toujours là car il a plus d'un mois, mais je vais demander à notre administrateur système s'il existe. –

+0

Sauf si c'est un modèle de récupération SIMPLE ... – gbn

1

La requête suivante m'a fait créer et modifier l'heure.

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