Laden...

Änderungen an der DB durch die GUI als SQL-Befehle ausgeben

Erstellt von Spleen vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.260 Views
S
Spleen Themenstarter:in
12 Beiträge seit 2010
vor 13 Jahren
Änderungen an der DB durch die GUI als SQL-Befehle ausgeben

Hey,

ich verwende das Microsoft SQL Server Management Studio 2008 und würde mir gerne zu jeder Änderung an meiner Datenbank (änderung an Datensätzen, Spalten, Tabellen) welche ich durch die GUI des Programms mache den jeweiligen SQL-Befehl dazu ausgeben lassen. Ist das möglich?

Danke im Voraus

F
10.010 Beiträge seit 2004
vor 13 Jahren

Nein.

Du kannst dir nur den aktuellen Stand ausgeben lassen.

Aber das Thema ( DB Versionierung ) wird gerade diskutiert, warum schaust du da nicht mal rein, ist wahrscheinlich eher was Du machen willst.

[erledigt] Automatisiert Datenbank beim Kunden erstellen - ohne externe Tools

V
162 Beiträge seit 2010
vor 13 Jahren

Wenn du eine Profiler mitlaufen läst,
kannst du alle SQL bekommen.

Frag mich nun aber nicht nach einem Programm.
Bei MSSQL 2000 war es dabei.

MfG
Björn

Das Leben ist schön!

S
Spleen Themenstarter:in
12 Beiträge seit 2010
vor 13 Jahren

Hey, und wie kann ich mir den aktuellen Stand ausgeben lassen?

V
162 Beiträge seit 2010
vor 13 Jahren

Ahm,

mir stellt sich die Frage was willst du erreichen am ende?
Beschäftige dich mit den System-Tabellen vom MSSQL und du kannst die Tabellen-Scripte etc auslesen.

Das Leben ist schön!

D
91 Beiträge seit 2005
vor 13 Jahren

Ahm,

mir stellt sich die Frage was willst du erreichen am ende?
Beschäftige dich mit den System-Tabellen vom MSSQL und du kannst die Tabellen-Scripte etc auslesen.

Das geht mitunter auch eleganter mit .net-Mitteln. Suche mal nach SMO (Server Management Objects). Ich habe damit schon einiges erreichen können.

Hier eine kleine Starthilfe.


      Server srv = new Server(SERVERNAME);
      srv.ConnectionContext.SqlExecutionModes = SqlExecutionModes.CaptureSql;

      Database db = srv.Databases[DATENBANKNAME];


Wenn du beim Serverobjekt den SqlExecutionMode auf CaptureSql stellst, dann kannst du auf Objektebene Operationen durchführen und diese mit bspw. table.Alter() an den Server schicken. (wird ja durch obige Option nicht zum Server geschickt, sondern nur aufgezeichnet.)

Anschließend kannst du den Sql-Befehl auslesen, der diese Operationen auf dem Server durchführen würde.


    //------------------------------------------------------------------------------------------------------------------------------------------------------------
    private static void InsertCapturedSqlCommandToStringbuilder(Server srv, StringBuilder sb)
    {
      sb.AppendLine();
      foreach (string s in srv.ConnectionContext.CapturedSql.Text)
      {
         sb.AppendLine(s);
      }

      srv.ConnectionContext.CapturedSql.Clear();
    }


Ich habe leider keine Zeit, meine Anwendung zu verfremden, so dass unsere Interna nicht mehr sichtbar sind. Aber mit diesen Stichwörtern solltest du arbeiten können.

Grüße, Florian

F
10.010 Beiträge seit 2004
vor 13 Jahren

@spleen:
Im Managementstudio rechtsclick auf die Tabelle "Script für Tabelle in" und von da findest du es dann schon.