Ich versuche, eine Sandbox für unsere Berichtsentwickler einzurichten, in der sie arbeiten können. Mein aktueller Plan ist es, die Datenbank jeden Abend zurückzusetzen, aber ich bin mir nicht sicher, wie ich das machen soll. Mit Zurücksetzen meine ich, dass ich im Wesentlichen alle Benutzertabellen, Ansichten, gespeicherten Prozeduren usw. aus allen außer einer Datenbank auf dem Server löschen möchte. Ich nehme an, eine andere Option wäre, die Datenbank ebenfalls zu löschen und neu zu erstellen, aber ich bin mir ziemlich sicher, dass dies bedeuten würde, den Zugriff auf alle geeigneten AD-Gruppen / Personen erneut zu bereichern.
Ich weiß wirklich nicht, wie ich das am besten machen könnte, also hoffe ich, dass einige von Ihnen in der Lage sind, einige gute Ideen / Vorschläge zu machen. Vielen Dank.
Aus Gründen der Übersichtlichkeit möchten wir dies im Wesentlichen mit unserer Datenbank tun: http://try.discourse.org/t/this-site-is-a-sandbox-it-is-reset-every-day/57 . Der einzige Unterschied besteht darin, dass wir unsere Benutzer nicht jeden Tag neu erstellen möchten.
Version: SQL Server 2008
Edition: Entwickler und Unternehmen
quelle
Da Sie eine Instanz mit der Enterprise Edition-Engine haben, würde ich Datenbank-Snapshots verwenden .
Auf diese Weise können Sie alle während des Tages vorgenommenen Änderungen schnell und einfach rückgängig machen, ohne die gesamte Datenbank wiederherstellen zu müssen.
Beachten Sie, dass dies möglicherweise nicht angemessen ist, wenn die Entwickler große Datenmengen laden möchten (klingt so, als wären sie es nicht?).
quelle
Lassen Sie mich meine paar Cent hinzufügen, um zu sehen, ob es Ihnen hilft:
In meinem Unternehmen haben wir die gleiche Situation, dass die Entwickler jede Nacht die Datenbanken aktualisieren möchten, die sie den ganzen Tag über verwendet haben. Dies bedeutet , dass wir eine Reihe von Datenbanken haben , dass Devs nicht berühren - sagen wir mal A und ein anderer Satz von Datenbanken , die exakte Kopie A sind , aber sie haben ihre Sachen aber wollen jede Nacht aktualisiert bekommen - sagen wir mal B . Dies geschieht auf einer einzelnen Serverinstanz.
Was ich implementiert habe, ist ein NIGHTLY RESTORE-PROZESS, um dies zu erreichen. Unten ist, wie es funktioniert:
Erstellen Sie eine Treibertabelle mit einer Liste von Datenbanken, die jeden Abend wiederhergestellt werden müssen (wie bereits erwähnt).
Tabelle: nightly_restore (OriginalDB, RestoreDB, Backuplocation, enabled_YN, Ergebnisse, PASS_FAIL)
Dann können Sie eine TSQL schreiben, die die Liste der Datenbanken aus der obigen Tabelle durchläuft, dann die Wiederherstellungen durchführt und alle Erfolge oder Fehler in den Ergebnissen protokolliert und ein Bit 1 = Bestanden oder 0 = Nicht bestanden. Enabled_YN bestimmt, ob diese Datenbank wiederhergestellt werden muss oder nicht.
Wenn in Zukunft weitere Datenbanken hinzugefügt werden, müssen Sie diese nur in die Tabelle einfügen und das Bit enabled_YN auf Y (enabled) setzen.
Auf diese Weise wird der Prozess flexibler und überschaubarer.
Wenn Sie das SQL möchten, das ich geschrieben habe (ich bin sicher, Sie können es schreiben :-)), pingen Sie mich einfach an oder fügen Sie einen Kommentar hinzu, und ich werde es teilen.
HTH
quelle