MSSQL durchsuchen
-
Hallo Forum,
mir ist nicht genau klar wohin eine Anwendung die Datensätze die in der GUI eingegeben werden hinschreibt. Die Daten gehen in eine MSSQL Server 2012 Datenbank auf die ich Vollzugriff habe. Bloß in welche Tabelle gehen sie genau?
Kann ich irgendwie die die komplette Datenbank als Flatfile exportieren, so dass ich sie per Cygwin/Grep durchsuchen lassen könnte? Die Backups des MSSQL Servers sind nicht Plaintext. Mit der Export Funktion wird nur eine Tabelle exportiert. Wie kann ich die gesamte Datenbank duchsuchen bzw als Flatfile exportieren?
Aktuelle behelfe ich mir indem ich die SQL Stmnts mit dem SQL Profiler logge. Außerdem benötige ich manchmal den Standort von Daten die auf Papier ausgedruckt sind. Ich weiß also wie die Daten lauten, ich hoffe bloß das ich sie irgendwo in der Datenbank finde und möchte hier Volltext suchen.
Vielen Dank
Peter
-
abcd schrieb:
mir ist nicht genau klar wohin eine Anwendung die Datensätze die in der GUI eingegeben werden hinschreibt. Die Daten gehen in eine MSSQL Server 2012 Datenbank auf die ich Vollzugriff habe. Bloß in welche Tabelle gehen sie genau?
Das ist Anwendungsspezifisch. Normalerweise sollte auch niemand frei auf eine Datenbank zugreifen können. Zudem werden Daten nicht zwangsweise in nur einer Tabelle, sondern auch mal verteilt über viele Tabellen geschrieben. Es ist nicht der Sinn eines Anwenders die Datenbank manuell zu durchsuchen.
abcd schrieb:
Kann ich irgendwie die die komplette Datenbank als Flatfile exportieren, so dass ich sie per Cygwin/Grep durchsuchen lassen könnte?
z.B. als SQL-Script (Export aus dem SQL Management Studio), aber wie gesagt keine Sache die für ein Anwender gedacht ist.
abcd schrieb:
Aktuelle behelfe ich mir indem ich die SQL Stmnts mit dem SQL Profiler logge. Außerdem benötige ich manchmal den Standort von Daten die auf Papier ausgedruckt sind. Ich weiß also wie die Daten lauten, ich hoffe bloß das ich sie irgendwo in der Datenbank finde und möchte hier Volltext suchen.
Wenn du eine solche Anforderung hast: Warum fragst du nicht die Anwendungsentwickler und bittest sie um eine entsprechende Suchfunktion (davon abgesehen das es in der Regel niemals sinnvoll ist eine Suche über alle Tabellen in einer Datenbank zu machen).
-
Wenn ich die Anwendungsentwickler kontaktiere wird meine Firma wohl ordentlich löhnen müssen. Das die Daten in unterschiedichen Tabellen gespeichert werden können ist mir klar, ich kann das ja dann mit JOINS wieder zusammensetzen. Mir geht es ja nur um Lesezugriff, ich sehe da kein Problem.
Du meinst die gesamte Datenbank als SQL Insert Stmnt exportieren? Muß ich dieses Skript erst schreiben? Oder gibt es eine One-Klick Lösung? Gibt es kein Skript mit dem ich jede Tabelle jeweils als ein CSV exportieren könnte?
-
abcd schrieb:
Wenn ich die Anwendungsentwickler kontaktiere wird meine Firma wohl ordentlich löhnen müssen.
Ach, und der Aufwand den du jetzt treibst ist kostenlos? Hast du wirklich so wenig zu tun das die Zeit frei ist? Tut mir Leid, aber ich bin solche Milchmädchenrechnungen inzwischen Leid (Ala: Wir müssen sparen, koste es was es wolle).
abcd schrieb:
Das die Daten in unterschiedichen Tabellen gespeichert werden können ist mir klar, ich kann das ja dann mit JOINS wieder zusammensetzen.
Wenn dir das DB-Schema wirklich bekannt ist. Die Statements mitzuschneiden reicht unter Umständen nicht (Bei uns werden z.B. einige Daten mit Triggern erzeugt, davon bekommst du auf deinen Weg nichts mit).
abcd schrieb:
Du meinst die gesamte Datenbank als SQL Insert Stmnt exportieren? Muß ich dieses Skript erst schreiben? Oder gibt es eine One-Klick Lösung? Gibt es kein Skript mit dem ich jede Tabelle jeweils als ein CSV exportieren könnte?
Im SQL Management Studio: Rechtsklick auf die konkrete Datenbank, Tasks, Skripts generieren.
Alternativ kann man bei vorhandenen Access eine Verbindung zu externen Daten (ODBC) herstellen (möglichst als Verknüpfung um das nicht jedesmal neu machen zu müssen) und die Mittel von Excel verwenden (wie z.B. Export nach Excel).
-
Wegen einer so kleinen Sache werde ich keinen externen Auftrag generieren oder einen Support Vertrag abschließen.
Der SQL Export per SELECT Smt Skript hat die Dateigröße gegenüber dem Backup File verzehnfacht. Aber immerhin kann ich jetzt Plaintext suchen. Vielen Dank
-
Wenns keine Express Version ist sollte man auch dem Profiler beibringen können alle SQL Statements aufzuzeichnen die die Anwendung absetzt.
Falls ein kompletter Dump als Textfile mal zu gross wird ist das eine gute Option.
Bzw. wenn man wissen möchte was ganz bestimmte Teile/Funktionen eines Programms so an Daten schreiben, und man das nicht mehr anhand eines statischen Abbilds der Daten ermitteln kann.
-
Mit dem Profiler arbeite ich ja bereits. Bloß muß ich dann die Daten in der GUI generieren. Ich habe ausgedruckte Daten die direkt aus der DB holen will.
Das Durchsuchen der Insert-Into Datei klappt einigermassen. Dann habe ich immer eine kurze Pause zum Ausspannen*g*
-
abcd schrieb:
Das Durchsuchen der Insert-Into Datei klappt einigermassen. Dann habe ich immer eine kurze Pause zum Ausspannen*g*
Wenn du weißt welche Tabellen betroffen sind, kannst du das SQL-Script auch auf diese Objekte beschränkten (dann dauert es vielleicht etwas weniger lang)...
-
Wo die Daten stehen weiß ich ja nicht immer genau. Die Suche geht, ich bin zufieden.
-
Ich hatte damals diese Tools der Reihe nach ausprobiert. Keines konnte das was ich wollte. Viele sind einfach abgestürtzt oder haben einfach nicht alle Tabellen exportiert. Ein Tool (Flyspeed Data Export for SQL Server Trail) lief halbwegs stabil, es hat von meinen 1800 Tabellen jedoch nur 1500 exportieren können. Ich habe daraufhin im dortigen Forum Kontakt aufgenommen. Die Tabellen bei denen der Export fehlschlug waren die wo XML Files in Feldern gespeichert wurden. (Vielleicht haben Enter oder Gänsefüßchen Zeichen die Fehler verursacht?) Die dortigen Devs meinten es läge an der verwendeten ODBC Connection, würde ich mich direkt verbinden, dann solle der Fehler nicht auftreten. Und Tada... es geht. Ich hab mein Tool gefunden*g*