Benutzer mit den meisten Antworten
Testversion einer Livedatenbank anlegen (sicherung einspielen aber bestimmte Veiws nicht überschreiben)

Frage
-
Hallo,
leider weiß ich nicht wie ich die Überschrift gestallten soll, für folgendes Problem:
Wir haben eine Umgebung, in der die User Live arbeiten. Es gibt Leute die dürfen auf dem SQL Server views anlegen um auswertungen zu machen und zu testen. Die Views fangen z.b. immer mit test_ an und haben dann den Viewname. z.B. test_Artikelauswertung.
Nun möchten wir nicht, das diese Leute in der Liveumgebung damit hantieren. Logisch. also baue ich eine Testdatenbank, in der jede nacht die Lievedaten einfliesen. Auch die Views die nicht von den Analysten kommen sollen eingespielt werden. die haben dann kein Test_ vorangestellt.
Wenn ich jetzt jede nacht die Daten überspiele, sind die test_ Views ja wech. Was kann ich am besten tun? Kann man beim einspielen irgendwo mitgeben das die test_ views nicht überschrieben werden sollen bzw. gelöscht werden sollen, oderm uß ich die views vorher sichern, dann die Datenbank einspielen, und dann die views wieder einspielen?
Antworten
-
Wenn es nur um Views geht, die Definition kannst Du (sofern nicht encrypted) so abfragen:
SELECT QUOTENAME(SCHEMA_NAME(VW.schema_id)) + '.' + QUOTENAME(VW.name) AS ViewName ,MD.definition FROM sys.views as VW INNER JOIN sys.sql_modules AS MD ON VW.object_id = MD.object_id WHERE VW.name LIKE 'test%'
Du könntest auch ein PowerShell Skript + SMO verwenden, um die Definition bestimmter Objekte zu exportieren.
Oder ... Du legst eine neue Datenbank an, in der nur diese Views zum Testen angelegt werden, dann entfällt das ganze Problem. Die Views müssen nur so angepasst werden, das sie auf die andere Datenbank verweisen, also so:
SELECT * FROM [Datenbank2].dbo.TabelleX WHERE ...
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 10. Juli 2012 09:07
- Als Antwort markiert Oliver Dithmer Dienstag, 10. Juli 2012 09:13
Alle Antworten
-
Hallo Oliver,
ein Backup erfolgt immer für die komplete Datenbank, ebenso ein Restore. Man kann nicht einzelne Objekte sichern/rücksichern oder diese davon ausschließen.
Wenn Objekte wie Views angelegt wurden, die nicht in der letzten Sicherung enthalten sind, müssen die halt wieder neu angelegt werden. In der Regel sollte man eh Skripte für die Objekte zur Anlage haben und nicht Views o.ä. per Designer anlegen. Und selbst wenn, man kann von allem ja in SSMS sich Skripte generieren lassen.
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing -
ok, klingt logisch und vernünftig.
Was mir helfen würde, wäre, wenn ich irgendwie mit einer gebauten funktion z.b. ein skript erzeugen kann für alles views die mit test_ anfangen. dann kann ich nach dem restore dieses script ausführen umd die views wieder herstellen. dann hab ich den analysten diesen teil abgenommen.
meinst du sowas geht ?
Oliver Dithmer
-
Wenn es nur um Views geht, die Definition kannst Du (sofern nicht encrypted) so abfragen:
SELECT QUOTENAME(SCHEMA_NAME(VW.schema_id)) + '.' + QUOTENAME(VW.name) AS ViewName ,MD.definition FROM sys.views as VW INNER JOIN sys.sql_modules AS MD ON VW.object_id = MD.object_id WHERE VW.name LIKE 'test%'
Du könntest auch ein PowerShell Skript + SMO verwenden, um die Definition bestimmter Objekte zu exportieren.
Oder ... Du legst eine neue Datenbank an, in der nur diese Views zum Testen angelegt werden, dann entfällt das ganze Problem. Die Views müssen nur so angepasst werden, das sie auf die andere Datenbank verweisen, also so:
SELECT * FROM [Datenbank2].dbo.TabelleX WHERE ...
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 10. Juli 2012 09:07
- Als Antwort markiert Oliver Dithmer Dienstag, 10. Juli 2012 09:13