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
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
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!
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!
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
@spleen:
Im Managementstudio rechtsclick auf die Tabelle "Script für Tabelle in" und von da findest du es dann schon.