Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
letzten Zugriff auf eine Tabelle oder View ermitteln
d.gierse
myCSharp.de - Member



Dabei seit:
Beiträge: 116

Themenstarter:

letzten Zugriff auf eine Tabelle oder View ermitteln

beantworten | zitieren | melden

verwendetes Datenbanksystem: SQL Server 2008

Hallo zusammen,

ich habe eine Datenbankanwendung übernommen, in der in der Vergangenheit viele Tabellen und Views angelegt wurden, die nun als Datenbankleichen ihr Dasein fristen, und möchte diese Leichen gerne los werden.

Kann ich irgendwie abfragen, wann die letzte Abfrage auf einer Tabelle oder auf einem View ausgeführt wurde?

Dazu habe ich noch die Situation, das sich ein View die Daten aus verschiedenen anderen Views sammelt und dann anzeigt. Leider ist auch da in der Vergangenheit ein großes Durcheinander entstanden.
Kann ich dazu irgendwie abfragen, auf welche Views und Tabellen sich ein bestimmter View bezieht?

Gruß Dominik
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7559
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,

afaik werden Zugriffszeitstempel nicht angelegt. Für Insert/Update ist es einfach wenn es Timestamp-Column gibt - sonst könnte es wie in Find Last Date Time Updated for Any Table beschrieben.

Lesend wird (wahrscheinlich) ein Problem.

Edit:
Schau mal When was my database / table last accessed? und When the table was last accessed (Unused Tables)- SQL Server Script

Zitat
Kann ich dazu irgendwie abfragen, auf welche Views und Tabellen sich ein bestimmter View bezieht?
Im SQL Server Management Studio kannst du auch von einer View per Reverse-Engineering das T-SQL-Skricpt für dessen Erzeugung erstellen lassen. Darin sind dann die Tabellen ersichtlich.
Das geht wenn du mit der rechten Maustaste auf die View klickst und dann im Kontextmenü Skript für View als -> CREATE in -> ... wählst.


mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
d.gierse
myCSharp.de - Member



Dabei seit:
Beiträge: 116

Themenstarter:

beantworten | zitieren | melden

Hallo,

danke für deine Antwort. Der Link zum last table access hilft mir schon einmal weiter.
Die Skripterstellung mit dem Management Studio kenne ich. Da die Views aber auch aus anderen Views und mehrfachen Subselects, die wiederum Views enthalten, gebildet wurden, ist das ganze auf diese Weise sehr aufwändig. Ich hätte da auf irgendein Helferlein gehofft, was mir die Arbeit da erleichtert.

Gruß Dominik
private Nachricht | Beiträge des Benutzers
spike24
myCSharp.de - Member



Dabei seit:
Beiträge: 451
Herkunft: Steiermark Österreich

beantworten | zitieren | melden

Ich kenne mich bei Serverdatenbank Systemen nicht so gut aus, aber könnte man nicht einen Trigger beim "GetRow" "Event" ranhängen? (zumindest gibt es ein BeforeUpdate)

Beim View-Problem würde ich mir die ganzen SqlStatements in ein File lassen und mit RegEx einen Parser schreiben der mir durchsieht wieviele Views es gibt und danach mit Find sucht wo sie überall verwendet werden.
mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen
private Nachricht | Beiträge des Benutzers
FreeGollum
myCSharp.de - Member



Dabei seit:
Beiträge: 5
Herkunft: NRW

beantworten | zitieren | melden

Tach zusammen...ist zwar schon was älter...bin aber eher zufällig auf diesen Post gestossen!

Wir arbeiten zwar mit einer ORACLE DB sollte aber dennoch gehen. Wir legen grundsätzlich in jeder Tabelle und View div. Spalten an mit CREATE_USER, CREATE_DATE, CHANGE_USER und CHANGE_DATE
Diese werden bei Zugriff per Trigger gefüllt mit den jeweiligen Infos. Die Frage ist natürlich wie Deine DB Anwendung gestrickt ist. Du hast sowohl die Möglichkeit DB Trigger zu hinterlegen oder über Deine Anwendung diese Infos zu generieren.
Einen Schritt weiter gehen wir dann noch bei speziellen Tabellen, die wichtige Infos enthalten und nur von bestimmten Usern beschrieben etc. werden dürfen. Hier nutzen zusätzlich einen Audittrail. Der schreibt ALLE Aktivitäten, wie auch das löschen von Datensätzen in eine seperate Tabelle. Hier wird dann eine Zuordnung zur Nachverfolgung per RECORD_ID/ROW_ID des DS hinterlegt.

Hoffe es hilft. Wie gesagt hier wird eine Anwendung programmiert die auf ORACLE Basis läuft. Wenn ich aber so an SQL Server denke sollten ähnliche Konstrukte auch dort möglich sein.
Wo sind denn die Bäume in diesem verflixten Wald?! ;-)
private Nachricht | Beiträge des Benutzers