Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Änderungen an der DB durch die GUI als SQL-Befehle ausgeben
Spleen
myCSharp.de - Member



Dabei seit:
Beiträge: 12

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.999

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Viper78
myCSharp.de - Member



Dabei seit:
Beiträge: 162
Herkunft: Dortmund

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Spleen
myCSharp.de - Member



Dabei seit:
Beiträge: 12

Themenstarter:

beantworten | zitieren | melden

Hey, und wie kann ich mir den aktuellen Stand ausgeben lassen?
private Nachricht | Beiträge des Benutzers
Viper78
myCSharp.de - Member



Dabei seit:
Beiträge: 162
Herkunft: Dortmund

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
deerhunter
myCSharp.de - Member



Dabei seit:
Beiträge: 91

beantworten | zitieren | melden

Zitat von Viper78
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
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.999

beantworten | zitieren | melden

@spleen:
Im Managementstudio rechtsclick auf die Tabelle "Script für Tabelle in" und von da findest du es dann schon.
private Nachricht | Beiträge des Benutzers