Benutzer mit den meisten Antworten
Änderungen von meiner Testdatenbank in die Produktivdatenbank übernehmen

Frage
-
Hallo,
Ich entwickle im Moment ein Silverlight Programm mit Visual Studio 2010 auf meinem lokalen Rechner.
Hier habe ich MS SQL Server 2008R2 Express installiert.
Die Produktivdatenbank befindet sich auf einem MS-SQL Server 2008R2, auf einem Hosting Server im Internet.
Bisher habe ich einfach die Felder die ich lokal verändert hatte auf dem Server im Internet ebfalls manuell nachgetragen und danach meine Silverlight Anwendung aktualisiert.
Aktuell habe ich aber mehrere Tabellen hinzugefügt mit einigen Indexen, das wäre sehr aufwendig/fehleranfällig.
Wie ist denn das beste/einfachste Vorgehen, um die Produktivdatenbank im Internet an meine Testdatenbank lokal anzugleichen?
Hierbei sollten neue Tabellen, gelöschte Tabellen, geänderte Felder, gelöschte Felder, ... angeglichen werden.
Ich kann mit dem SQL-Server Management Studio auf meinen lokalen SQL-Server als auch auf den SQL-Server im Internet zugreifen.
Wobei ich auf dem Server im Internet nur Zugriff auf die jeweilige Datenbank habe, lokal auf alles.
LG Volker
Volker Busch
Antworten
-
Hallo Volker,
wenn Du immer alles über die SSMS GUI "zusammenklickst", statt mit T-SQL Skripten für Änderungen zu arbeiten, ist es im nachhinein schwierig und fehleranfällig alles auf einem anderem System nachzufahren.
Es gibt (kommerzielle) Tools wie RedGate SQL Compare, mit denen man es automatisieren kann.
In SSMS gibt es die Option bei jeder Änderung diese als T-SQL Script zu speichern, die man später wieder verwenden kann, siehe z.B. http://www.mssqltips.com/sqlservertip/1723/auto-generate-change-scripts-in-sql-server-management-studio-ssms-for-tables/
Neuanlage und Löschung betrifft das aber nicht.Wie gesagt, am besten immer alles per Skript erledigen und nicht zusammenklicken.
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- Bearbeitet Olaf HelperMVP Freitag, 23. Dezember 2011 16:41
- Als Antwort vorgeschlagen Falk Krahl Dienstag, 27. Dezember 2011 10:11
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 28. Dezember 2011 12:26
Alle Antworten
-
Hallo Volker,
wenn Du immer alles über die SSMS GUI "zusammenklickst", statt mit T-SQL Skripten für Änderungen zu arbeiten, ist es im nachhinein schwierig und fehleranfällig alles auf einem anderem System nachzufahren.
Es gibt (kommerzielle) Tools wie RedGate SQL Compare, mit denen man es automatisieren kann.
In SSMS gibt es die Option bei jeder Änderung diese als T-SQL Script zu speichern, die man später wieder verwenden kann, siehe z.B. http://www.mssqltips.com/sqlservertip/1723/auto-generate-change-scripts-in-sql-server-management-studio-ssms-for-tables/
Neuanlage und Löschung betrifft das aber nicht.Wie gesagt, am besten immer alles per Skript erledigen und nicht zusammenklicken.
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- Bearbeitet Olaf HelperMVP Freitag, 23. Dezember 2011 16:41
- Als Antwort vorgeschlagen Falk Krahl Dienstag, 27. Dezember 2011 10:11
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 28. Dezember 2011 12:26
-
Hallo Volker,
eine möglichkeit wäre noch mit DDL Triggern alle Events aufzunehmen + einer VersionsID. Wenn der Deploy alle SQLCommandos auf dem gespielten Server absetzen.
http://sqlandme.com/2011/07/15/sql-server-auditing-schema-changes-using-ddl-triggers/
viel spaß :)
Grüße
- Bearbeitet repolevedlqs Samstag, 24. Dezember 2011 11:46
- Bearbeitet Robert BreitenhoferModerator Mittwoch, 28. Dezember 2011 12:26 Formatierung
-
Hallo VolkerDennoch solltest Du Dir beim nächsten Projekt angewöhnen, keine händischen Anpassungen an DB Strukturen zu machen, sondern diese immer in Scripts zu verpacken (zusammen mit der Migration der betroffenen Daten). Dann kannst Du später auf der Produktionsdatenbank (und anderen Testdatenbanken, falls Du mehrere Entwickler und Testzyklen hast), die Scripts laufen lassen. Ist eine kurze Umgewöhnungszeit, dannach wirst Du nicht mehr zusammen klicken wollen, weil Du dann immer auch genau weisst, wo was geändert und allenfalls im Anwendungs-Code ebenfalls angepasst werden muss.GrussHenry<Volker Busch> wrote in message news:44d3b9b3-d1dc-41fe-b4eb-7770713e3624@communitybridge.codeplex.com...
Danke für die Antworten, dachte das geht einfacher.
Ich glaub dann lösche ich immer die Datenbank und kopiere die aktuelle Testdatenbank ins Internet....
LG Volker
Volker Busch -
Hallo Volker,
wie ich schon schrieb, kannst Du die Änderungsskripte von SSMS erstellen lassen.
Du klickst Dir Deine Änderungen zusammen, aber statt dann auf "Speichern" zu klicken, nutzt Du den Button "Skript erstellen". Das lässt Du in ein neues Abfragefenster erstellen, kontrollierst es noch mal, führst es aus und speicherst es ab, um eine Änderungshistorie zu erhalten.
In der nächsten SQL Server Version 2012 (RC0 ist aktuell verfügbar) gibt es die SSDT = SQL Server Data Tools, die Dich in dieser Hinsicht noch viel weiter unterstützen werden.
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 -
Am 23.12.2011 17:16, schrieb Volker Busch:> Hallo,>> Ich entwickle im Moment ein Silverlight Programm mit Visual Studio 2010> auf meinem lokalen Rechner.Es gibt doch für das Studio eine DB-Erweiterung welche auchSchema-Compare und Data-Compare beherrscht ... Database Edititon oder soähnlich.Ich kann dir aber nicht sagen wie welche VS-Version da vorausgesetztwird bzw. wie die Lizensierung da ist.
-
Falls es noch aktuell ist:
In der Premium und der Ultimate Version von VS2010 gibt es den von Lutz erwähnten Datenvergleich, der auch Änderungsskripte generiert:
[Gewusst wie: Vergleichen und Synchronisieren der Daten von zwei Datenbanken]
http://msdn.microsoft.com/de-de/library/aa833428.aspxRedGate Compare gibt es übrigens auch als Trial-Version.