Jump to content

Datenbankname in mehrern views ändern


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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

Geschrieben (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 von MDD
% am Schluss beim Where-Kriterium angefügt
Geschrieben

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.

 

Geschrieben

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

Geschrieben

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.

 

Geschrieben
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 ....

 

 

  • 4 Wochen später...
Geschrieben

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.

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...