Access-o-Mania

Datenbanken (Deutsch/German) => MS SQL-Server => Thema gestartet von: FrankiLi am April 13, 2017, 10:26:03

Titel: Suchen/Ersetzen über mehrere Tabellen in SQL Management Studio
Beitrag von: FrankiLi am April 13, 2017, 10:26:03
Hallo zusammen,

ich möchte in einer SQL-Datenbank in sämtlichen Tabellen und Feldern einen Text "alterText" in einen Text "neuerText" ändern, quasi wie Suchen und Ersetzen (damit könnte ich das natürlich auch in Access mit den verknüpften Tabellen umsetzen, dauert aber bei SQL Azure ewig, deshalb suche ich eine elegante Lösung mit Direktzugriff auf den Server).

Danke für Tipps
Gruss
Frank
Titel: Re: Suchen/Ersetzen über mehrere Tabellen in SQL Management Studio
Beitrag von: omron2003 am April 13, 2017, 12:42:35
Hallo,
das sollte dir weiterhelfen.
http://www.sql-und-xml.de/sql-tutorial/update-aktualisieren-der-zeilen.html (http://www.sql-und-xml.de/sql-tutorial/update-aktualisieren-der-zeilen.html)



Gruß
Omron
Titel: Re: Suchen/Ersetzen über mehrere Tabellen in SQL Management Studio
Beitrag von: PhilS am April 13, 2017, 13:11:51
Zitat von: FrankiLi am April 13, 2017, 10:26:03ich möchte in einer SQL-Datenbank in sämtlichen Tabellen und Feldern einen Text "alterText" in einen Text "neuerText" ändern [...]
Dieses Anliegen deutet auf ein grundsätzliches Problem in deinem Datenmodell hin. In einem sinnvoll gestaltetem Datenmodell kann das eigentlich nicht vorkommen, da ein solcher Text nur in einer einzigen Tabelle, in einer einzigen Spalte vorkommen darf. In allen anderen Tabellen sollte es nur eine Referenz auf den Schlüssel der ursprünglichen Tabelle geben.

Diese DB-Designregeln haben einen guten Grund, denn ein globales "Suchen&Ersetzen" ist aufwendig zu implementieren und hat keine gute Performance, wie du in Access bereits festgestellt hast. - Letzteres wird zwar durch ein Azure-Backend noch verstärkt, ist aber ein grundsätzliches Problem.

Lösungsansatz:
Du kannst eine Abfrage auf die INFORMATION_SCHEMA-Views ausführen und damit alle Tabellen/Spalten ermitteln (alle *char-Spalten?), die berücksichtigt werden müssen. Aus den Ergebnissen kannst du dir dynamische SQL-Statements aufbauen, die entsprechende Aktualisierungsabfragen auf die Tabellen ausführen.