Announcement

Collapse
No announcement yet.

Datenbank durchsuchen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenbank durchsuchen

    Hallo

    Wie kann man eine ganze Datenbank nach einer Zahl durch suchen.
    Dabei kann die Zahl in allen Datentypen gespeichert werden INT, FLOAT, VARCHAR, TEXT, ....

    Es sollen alle Tabellen und Spalten einer Datenbank durchsucht werden. Dabei müsste die Zahl immer auf den Spaltentyp konvertiert werden und bei Zeichenketten und Texten mit dem LIKE Befehl verglichen werden. Denn in einem Text, könnte die Zahl mitten im Text vorkommen.
    Es sollte die Tabelle mit Spalte zurückkommen.
    Leider geht mein SQL Wissen nicht über eine select und update Befehle nicht hinaus.
    Mir ist bewusst, dass eine solche suche sehr lange dauern kann.
    Danke für eure Hilfe.

    Es wird Microsoft SQL 2008 benutzt.

    Gruß
    Squicky

  • #2
    Hallo,

    eine reine SQL-Lösung gibt es dafür nicht.
    Du mußt dir aus den Metadaten der DB alle Tabellen zusammensuchen, für jede Tabelle die Metadaten aller Spalten abrufen und dann daraus die passenden Statements per dynamischem SQL erzeugen.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Metadaten ???

      Wie könnte ich da ansetzen?

      Comment


      • #4
        Schau mal unter "Catalog Views" in der MS-Hilfe nach...

        Comment


        • #5
          Hallo,
          Metadaten ???
          Wie könnte ich da ansetzen?
          Auf die Schnelle: Suchmaschine @ "Server 2008" +Metadaten site:microsoft.com
          Im Zusammenhang mit SQL Server 2005 und höher braucht der angemeldete Nutzer auch die Leseberechtigung für Metadaten.
          MfG
          Cheat-Sheets for Developers / Programming Quotes

          Comment


          • #6
            Hallo

            Ich bin schon ein gutes Stück weiter.
            Ich habe aber noch zwei Fragen:

            Ich durchlaufe alle Tabellen und Spalten mit der "DECLARE CURSOR" und "fetch next" Möglichkeit. Man/Ich sehe diese Lösung als eine Schleife, die bei jedem Durchlauf eine Spalte von einer Tabelle nach dem gesuchten Wert prüft. Dabei wird immer eine Tabelle mit zwei Spalten (Tabelle, Spalte) zurückgegeben. Fall der gesucht Wert gefunden wurde, hat die Tabelle einen Zeile als inhalt, sonst wird eine leere Spalte zurückgegeben.
            Dies war sehr nachteilig, denn ich musste dann mehrere 1000 Tabellen durchscrollen. Wobei die meisten leer waren.
            Ist es möglich, dass alle "DECLARE CURSOR" und "fetch next" Durchläufe ihre Daten in eine Ergebnistabelle schreiben?
            Die Rückgabewerte sollen nicht in eine echte Tabelle geschrieben werden.


            like für XML:
            Mit "like" kann man varchar oder text Spalten nach einer bestimmen Zeichenkette durchsuchen ( ... where Spalte like '%text%').
            Gibt es einen solchen like Befehl für Spalten vom Typ XML ?

            Danke

            Comment


            • #7
              Originally posted by Squicky View Post
              Hallo

              Ist es möglich, dass alle "DECLARE CURSOR" und "fetch next" Durchläufe ihre Daten in eine Ergebnistabelle schreiben?
              Die Rückgabewerte sollen nicht in eine echte Tabelle geschrieben werden.
              Temporäre tabelle
              [QUOTE=Squicky;225674
              like für XML:
              Mit "like" kann man varchar oder text Spalten nach einer bestimmen Zeichenkette durchsuchen ( ... where Spalte like '%text%').
              Gibt es einen solchen like Befehl für Spalten vom Typ XML ?[/QUOTE]

              Caste die xmls auf NVARCHAR(MAX)...

              Comment


              • #8
                Der Tipp mit "Caste die xmls auf NVARCHAR(MAX)... " funktioniert super.

                Was genau meinst du aber mit "Temporäre tabelle"?

                Comment


                • #9
                  http://technet.microsoft.com/de-de/l.../ms174979.aspx
                  und
                  http://technet.microsoft.com/de-de/l.../ms177399.aspx

                  Comment

                  Working...
                  X