RAST 0 Geschrieben 7. Juni 2021 Melden Teilen Geschrieben 7. Juni 2021 Problem ich habe in vielen views einen Datenbanknamen angegeben. z.B. select * from peter_lustig.dbo.Auftrag select * from peter_lustig.dbo.Anschrift Gibt es eine Möglichkeit in allen views den Datenbanknamen zu ändern per SQL. z.B von peter_lustig in peter_traurig Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 7. Juni 2021 Melden Teilen Geschrieben 7. Juni 2021 (bearbeitet) Hallo In einem Schritt die Definitionen zu ändern wird schwierig. Aber du kannst sie mittels Cursor auslesen, die View droppen und neu erstellen select *, REPLACE(view_definition, 'peter_lustig', 'peter_traurig') from INFORMATION_SCHEMA.VIEWS where view_definition like '%peter_lustig%' Mittels des Namens kannst du die alte View löschen und dann neu anlegen. Die Definition kannst du dann wieder mit sp_sqlexec ausführen und damit die View neu anlegen. Ich denke das sollte gehen. Gruß MDD bearbeitet 8. Juni 2021 von MDD % am Schluss beim Where-Kriterium angefügt 1 Zitieren Link zu diesem Kommentar
RAST 0 Geschrieben 8. Juni 2021 Autor Melden Teilen Geschrieben 8. Juni 2021 Erstmal danke MDD für deine Antwort. Aber leider funktioniert dies so nicht. Die view heißt z.B. view_auftrag in der view steht select * from peter_lustig.dbo.Auftrag. Und der name in der view muss geändert werden. Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 8. Juni 2021 Melden Teilen Geschrieben 8. Juni 2021 Mir ist gerade aufgefallen dass ich am Schluss das % vergessen habe. Mit "Aber leider funktioniert das nicht" ist es ein wenig schwierig weiter zu kommen. Was funktioniert nicht? Funktioniert das Statement nicht oder weißt du nicht wie du es umsetzen musst? Versuch noch mal das mal das Statement und pass die Datenbanknamen entsprechend an. select *, REPLACE(view_definition, 'peter_lustig', 'peter_traurig') AS Neues_Create from INFORMATION_SCHEMA.VIEWS where view_definition like '%peter_lustig%' Schau ob in der letzten Spalte "Neues_Create" die View so richtig definiert wäre. Gruß MDD 1 Zitieren Link zu diesem Kommentar
RAST 0 Geschrieben 8. Juni 2021 Autor Melden Teilen Geschrieben 8. Juni 2021 Ja bei dem Select Befehl "Neues_Create" wird es mir dann richtig angezeigt. Allerdings findert er nur eine View und nicht zwei Views die in der Testdatenbank sind. Wenn ich dies mit einem update Befehl machen möchte kommt folgende Fehlermeldung. Ad-hoc-Updates von Systemkatalogen sind nicht zulässig. Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 8. Juni 2021 Melden Teilen Geschrieben 8. Juni 2021 vor einer Stunde schrieb RAST: Allerdings findert er nur eine View und nicht zwei Views die in der Testdatenbank sind. Dann steht bei der zweiten View das peter_lustig nicht drinnen. Ein Update würde dir vermutlich auch nicht viel bringen, selbst wenn es ginge. Immerhin ist das nur die Definition und nicht die View selbst. Was du machen kannst ist vor noch eine Spalte zusammenstellen und dort vor jede View ein Drop dazuschreiben. select TABLE_name, REPLACE(view_definition, 'peter_lustig', 'peter_traurig') AS Neues_Create, 'DROP VIEW IF EXISTS ' + TABLE_NAME as Drops, * from INFORMATION_SCHEMA.VIEWS where view_definition like '%peter_lustig%' Dann kopierst den Inhalt der Spalten "Drops" ins Abfrage-Fenster und gleich dahinter das die Create Abfrage aus der Spalte "Neues_create" und führst es Miteinander aus. Womöglich braucht es zwischen den Drops und den Creates ein "GO" damit zuerst die Alten Views weg sind und dann die neuen erstellt werden können. Würde dann in etwa so ausschauen DROP VIEW IF EXISTS view1 DROP VIEW IF EXISTS view2 DROP VIEW IF EXISTS ... go Create view view1 as Select ... from Peter_traurig.dbo.tabelle1 .... Create view view2 as Select ... from Peter_traurig.dbo.tabelle4711 .... Create view .... 1 Zitieren Link zu diesem Kommentar
RAST 0 Geschrieben 10. Juni 2021 Autor Melden Teilen Geschrieben 10. Juni 2021 Sorry habe gerade ziemlich viel zutun. Aber das was du schreibst hört sich gut an. Werde es in der nächsten freien Zeit ausprobieren. Vielen Dank Zitieren Link zu diesem Kommentar
RAST 0 Geschrieben 6. Juli 2021 Autor Melden Teilen Geschrieben 6. Juli 2021 vielen Dank für deine Mühe es funktioniert. Leider ist es zu Aufwendig. Werde das mit einem Script lösen. Da ich die ganzen views ja eh noch schreiben muss. Dann kann ich hinterher mit suchen und ersetzten arbeiten. Ich glaube damit kommen dann alle klar. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.