Jump to content

Datenbankname in mehrern views ändern


Recommended Posts

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

Link to post

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

Edited by MDD
% am Schluss beim Where-Kriterium angefügt
  • Like 1
Link to post

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.

 

Link to post

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

  • Like 1
Link to post

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.

 

Link to post
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 ....

 

 

  • Like 1
Link to post
  • 4 weeks later...

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.

Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...