Nico27 0 Geschrieben 27. Juni 2014 Melden Teilen Geschrieben 27. Juni 2014 Hallo zusammen, habe mich gestern in diesem Forum angemeldet und freue mich darauf mit euch gemeinsam interessanten Problemen und Lösungen auf den Grund zu gehen. Bin ziemlich neu auf dem Gebiet SQL und habe eine Frage. Thema: MS SQL Server Management Studio - Betroffenen Tabellen bzw. Einträgen auf die Spur kommen. Meine Vorgehensweise: Ich habe eine Insert-Anweisung im Management Studio ausgeführt. Im Fenster Meldungen wird dann angegeben ob eine Zeile betroffen ist oder nicht. Meldungen: (0 Zeile(n) betroffen)(1 Zeile(n) betroffen) Anfrage: Leider kann ich nicht sehen welche die zugehörige Tabelle ist. Kann das irgendwie eingestellt werden damit die Information mit angezeigt wird, oder gibt es ein Fenster, das diese Information ausgibt? Bin schon gespannt auf eure Antworten. :) Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 27. Juni 2014 Melden Teilen Geschrieben 27. Juni 2014 Beim Insert gibst du doch die Tabelle an. Zitieren Link zu diesem Kommentar
Nico27 0 Geschrieben 27. Juni 2014 Autor Melden Teilen Geschrieben 27. Juni 2014 Hallo Board Veteran, danke für deine schnelle Reaktion, das stimmt, aber ich gehe davon aus, das diese Tabelle irgendwelche Abhängigkeiten hat, die ich nicht einsehen kann. Die Datenbank wurde nicht von mir geschrieben, d.h. ich kenne die Abhängigkeiten nicht, die notwendig sind, um das Programm funktionstüchtig zu machen. Es wurden von mir beim Insert alle Tabellen angegeben, die auch im Programm-Logbuch stehen, jedoch wird nach dem Ausführen der Anweisung im Fenster "Meldungen" (0 Zeile(n) betroffen) angezeigt. Das bedeutet doch, dass Zeilen vorhanden sind, die ich in meinem Insertbefehl nicht beachtet habe, oder es eben Verknüpfungen gibt, die ich nicht kenne, oder? Zitieren Link zu diesem Kommentar
Nico27 0 Geschrieben 30. Juni 2014 Autor Melden Teilen Geschrieben 30. Juni 2014 Hallo Forummitglieder, weiß denn niemand etwas darüber? Oder zumindest eine Informationsquelle wo ich etwas darüber in Erfahrung bringen kann. Wäre euch super dankbar... Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 30. Juni 2014 Melden Teilen Geschrieben 30. Juni 2014 Moin, poste doch bitte mal dein Kommando. Normalerweise wirkt ein INSERT exakt auf die angegebene Tabelle. Zwar gibt es die Möglichkeit, abhängige Datensätze zu manipulieren (z.B. Löschweitergabe), bei einem INSERT wäre das aber sehr unüblich. Das würde dann i.d.R. per Trigger gesteuert. Allgemein ist es aber, wenn du auf Datenbankebene manipulierst, durchaus sinnvoll und je nach Situation erforderlich, sich ausgiebig mit der Datenbank selbst und mit der dahinterliegenden Geschäftslogik zu befassen. Das kann auch schon mal sehr viel Zeit in Anspruch nehmen. Gruß, Nils Zitieren Link zu diesem Kommentar
Nico27 0 Geschrieben 1. Juli 2014 Autor Melden Teilen Geschrieben 1. Juli 2014 Hallo Nils, danke für Deine Antwort, hier mal die komplette Importanweisung inkl. betroffene Zeilen, die per Update angesprochen werden. Gibt es im SQL Server Management Studio eine Option die betroffenen Zeilen anzuzeigen? Z.B. in einem bestimmten Fenster. INSERT INTO dbo.tm_stueckliste_pos(stlp_gueltig_ab,stlp_typ,stlp_member_id,stlp_member_sub_id,stlp_gruppe,stlp_nummer,stlp_alternative,stlp_menge,me_id,stlp_gueltig_bis,stlp_plan_anteil_proz,stlp_plan_nicht_relevant,stlp_druck_kz,stlp_kalkulation_kz,stlp_anl_dat,stlp_anl_sbkz,stlp_id)VALUES(convert(Datetime2,SYSDATETIME()),1, --***Stücklistentyp: 1 = Material***(select tm_artikel.ast_idfrom tm_artikelwhere ast_nummer = '0100099-0442-059'),(select avar_idfrom tm_artikel_varinner join tm_artikel on tm_artikel.ast_id = tm_artikel_var.ast_idwhere ast_nummer = '0100099-0442-059'),10,10,0,0.000000,(select me_idfrom ta_mengeneinheitwhere me_kuerzel = 'm'), --***Mengeneinheit: m***convert(Datetime2,'9999-12-31 05:00:00'),1,0,1,1,convert(Datetime2,SYSDATETIME()),'nico',(Select MAX(stlp_id)+1 from tm_stueli_posvers));INSERT INTO dbo.tm_stueli_posvers(stl_id,stl_version,stlp_id)VALUES((Select stl_id from tm_stueckliste inner join tm_artikel on tm_stueckliste.ast_id = tm_artikel.ast_id where tm_artikel.ast_nummer = '0100099-0441-010Y'),'00000',(Select MAX(stlp_id)+1 from tm_stueli_posvers));--****************************Memofeld einfügen*************************************************************************INSERT INTO dbo.tm_stueckliste_pos_memo(stlp_id,stlp_memo)VALUES((Select MAX(stlp_id) from tm_stueli_posvers),'Materialtest');--****************************Formel einfügen***************************************************************************INSERT INTO dbo.tm_konfig_formel(fm_ref_id,fm_ref_id2,fm_typ,fm_sort,fm_zielfeld,fm_beschreibung)VALUES((select tm_stueli_posvers.stlp_id from tm_stueli_posvers inner join tm_stueckliste_pos on tm_stueli_posvers.stlp_id = tm_stueckliste_pos.stlp_id inner join tm_stueckliste on tm_stueli_posvers.stl_id = tm_stueckliste.stl_id inner join tm_artikel on tm_stueckliste.ast_id = tm_artikel.ast_id where tm_artikel.ast_nummer = '0100099-0441-010Y' and tm_stueckliste_pos.stlp_typ = 1), --Dieser Typ steht für ein Material, (select avar_id from tm_artikel_var inner join tm_artikel on tm_artikel.ast_id = tm_artikel_var.ast_id where ast_nummer = '0100099-0441-010Y'),1, --***fm_typ: 1 = Stückliste, 3 = Artikelformel10,'aint_pos_sollmenge_basis','TestformelStückliste');UPDATE dbo.tm_konfig_formel SET fm_formel='@LG*22.33'WHERE tm_konfig_formel.fm_typ = 1AND tm_konfig_formel.fm_ref_id = ( Select tm_stueli_posvers.stlp_id from tm_stueli_posvers inner join tm_stueckliste_pos on tm_stueli_posvers.stlp_id = tm_stueckliste_pos.stlp_id inner join tm_stueckliste on tm_stueli_posvers.stl_id = tm_stueckliste.stl_id inner join tm_artikel on tm_stueckliste.ast_id = tm_artikel.ast_id where ast_nummer = '0100099-0441-010Y' and tm_stueckliste_pos.stlp_typ = 1) --Dieser Typ steht für das MaterialAND tm_konfig_formel.fm_ref_id2 = ( select avar_id from tm_artikel_var inner join tm_artikel on tm_artikel.ast_id = tm_artikel_var.ast_id where ast_nummer = '0100099-0441-010Y')AND tm_konfig_formel.fm_zielfeld LIKE 'aint_pos_sollmenge_basis';--*********************************************************************************************INSERT INTO dbo.tm_stueckliste_pos(stlp_gueltig_ab,stlp_typ,stlp_member_id,stlp_member_sub_id,stlp_gruppe,stlp_nummer,stlp_alternative,stlp_menge,me_id,stlp_anz_maschinen,stlp_anz_personen,stlp_zeit_ind_min,stlp_gueltig_bis,stlp_plan_anteil_proz,stlp_plan_nicht_relevant,stlp_druck_kz,stlp_kalkulation_kz,stlp_anl_dat,stlp_anl_sbkz,stlp_id)VALUES(convert(Datetime2,SYSDATETIME()),3, 1, --***stlp_member_id0, --***stlp_member_sub_id10,20,0,0.000000,(select me_idfrom ta_mengeneinheitwhere me_kuerzel = 'min'), --***Mengeneinheit: min***1,1,1.666667,convert(Datetime2,'9999-12-31 05:00:00'),1,0,1,1,convert(Datetime2,SYSDATETIME()),'nico',(Select MAX(stlp_id)+1 from tm_stueli_posvers));INSERT INTO dbo.tm_stueli_posvers(stl_id,stl_version,stlp_id)VALUES((select tm_stueckliste.stl_id from tm_stueckliste inner join tm_artikel on tm_stueckliste.ast_id = tm_artikel.ast_id where tm_artikel.ast_nummer = '0100099-0441-010Y'),'00000',(Select MAX(stlp_id)+1 from tm_stueli_posvers));--*************************Handarbeitsplatz Memo einfügen***************************************************************INSERT INTO dbo.tm_stueckliste_pos_memo(stlp_id,stlp_memo)VALUES((Select MAX(stlp_id) from tm_stueli_posvers),'Handarbeitstest');--**************************Formel einfügen************************************************************INSERT INTO dbo.tm_konfig_formel(fm_ref_id,fm_ref_id2,fm_typ,fm_sort,fm_zielfeld,fm_beschreibung,fm_formel)VALUES((select tm_stueli_posvers.stlp_id from tm_stueli_posvers inner join tm_stueckliste_pos on tm_stueli_posvers.stlp_id = tm_stueckliste_pos.stlp_id inner join tm_stueckliste on tm_stueli_posvers.stl_id = tm_stueckliste.stl_id inner join tm_artikel on tm_stueckliste.ast_id = tm_artikel.ast_id where tm_artikel.ast_nummer = '0100099-0441-010Y' and tm_stueckliste_pos.stlp_typ = 3), --Dieser Typ steht für den Handarbeitsplatz (select avar_id from tm_artikel_var inner join tm_artikel on tm_artikel.ast_id = tm_artikel_var.ast_id where ast_nummer = '0100099-0441-010Y'),1,10,'aint_pos_sollmenge_basis','Arbeitszeitberechnung','@LG*11.22');--***********Update Änderungsdatum************************************************************************************UPDATE dbo.tm_stuecklisteSET stl_aen_dat=convert(Datetime2,SYSDATETIME()),stl_aen_sbkz='nico',stl_version='00000'WHERE tm_stueckliste.stl_id = ( select tm_stueckliste.stl_id from tm_stueckliste inner join tm_artikel on tm_stueckliste.ast_id = tm_artikel.ast_id where tm_artikel.ast_nummer = '0100099-0441-010Y')AND tm_stueckliste.stl_version LIKE '00000';UPDATE dbo.tm_artikel_vkSET astv_aen_dat=convert(Datetime2,SYSDATETIME()),astv_aen_sbkz='nico'WHERE tm_artikel_vk.ast_id = ( select tm_stueckliste.stl_id from tm_stueckliste inner join tm_artikel on tm_stueckliste.ast_id = tm_artikel.ast_id where tm_artikel.ast_nummer = '0100099-0441-010Y')AND tm_artikel_vk.avar_id = (select tm_artikel_vk.avar_idfrom tm_artikel_vk inner join tm_artikel on tm_artikel.ast_id = tm_artikel_vk.ast_idwhere tm_artikel.ast_nummer = '0100099-0441-010Y'); Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 1. Juli 2014 Melden Teilen Geschrieben 1. Juli 2014 Moin, okay, und was genau ist jetzt deine Frage? Das Skript enthält ja eine ganze Reihe von Update- und Insert-Anweisungen. Jeweils hinter dem Kommando siehst du, welche Tabelle (oder View) dadurch bearbeitet wird. Wenn das ganze Skript ausgeführt wird, solltest du pro Statement eine Ergebniszeile ("47 rows affected") sehen. Da du von zwei Ergebniszeilen sprichst, ist wohl nicht das ganze Skript ausgeführt worden. Die Ausgabe, welche Tabelle betroffen ist, ist nicht vorgesehen. Wenn du das für Debuggingzwecke brauchst, müsstest du selbst Textausgaben in das Skript einbauen. Gruß, Nils Zitieren Link zu diesem Kommentar
Nico27 0 Geschrieben 1. Juli 2014 Autor Melden Teilen Geschrieben 1. Juli 2014 Hallo Nils, meine Frage ist die Folgende. Im Meldungen-Fenster sehe ich das verschiedene Zeilen betroffen sind (siehe Ausgabe im Meldungen-Fenser: weiter unten). Ich würde jetzt gerne wissen welche Zeilen bzw. Tabellen das genau sind. Einige Zeilen sind ja betroffen obwohl kein Eintrag vorgenommen wird (Ausgabe: (0 Zeile(n) betroffen)). Ich vermute dahinter stehen irgendwelche Tabellen, die ich noch nicht kenne. Kann man die zugehörge Tabelle irgendwie auslesen? Ausgabe im Meldungen-Fenser: (1 Zeile(n) betroffen) (1 Zeile(n) betroffen) (1 Zeile(n) betroffen) (1 Zeile(n) betroffen) (1 Zeile(n) betroffen) (1 Zeile(n) betroffen) (0 Zeile(n) betroffen) (0 Zeile(n) betroffen) (0 Zeile(n) betroffen) (1 Zeile(n) betroffen) (0 Zeile(n) betroffen) Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 1. Juli 2014 Melden Teilen Geschrieben 1. Juli 2014 Für jedes Insert / Update gibt es ein Ergebnis. Das erste "(1 Zeile(n) betroffen)" ist von INSERT INTO dbo.tm_stueckliste_pos(stlp_gueltig_ab,stlp_typ,stlp_member_id,stlp_member_sub_id,stlp_gruppe,stlp_nummer,stlp_alternative,stlp_menge,me_id,stlp_gueltig_bis,stlp_plan_anteil_proz,stlp_plan_nicht_relevant,stlp_druck_kz,stlp_kalkulation_kz,stlp_anl_dat,stlp_anl_sbkz,stlp_id)VALUES(convert(Datetime2,SYSDATETIME()),... Einfach mitzählen ;) Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 1. Juli 2014 Melden Teilen Geschrieben 1. Juli 2014 (bearbeitet) Moin, Dukel hat völlig Recht: Dein Skript wird von oben bis unten abgearbeitet (es gibt darin ja keine Verzweigungen). Da du insgesamt elf Insert- bzw. Update-Statements hast, von denen jedes eine Ergebniszeile erzeugt, bekommst du auch elf Meldungen zurück. Die Meldung "1 Zeile betroffen" heißt, dass das betreffende Statement in der Tabelle, auf die es sich bezieht, eine Tabellenzeile hinzugefügt bzw. geändert hat. In Dukels Beispiel ist die Tabelle oder View "dbo.tm_stueckliste_pos" um eine neue Zeile erweitert worden. Das ist hier also relativ einfach zuzuordnen, indem du durchzählst. Gruß, Nils bearbeitet 1. Juli 2014 von NilsK Zitieren Link zu diesem Kommentar
Nico27 0 Geschrieben 1. Juli 2014 Autor Melden Teilen Geschrieben 1. Juli 2014 (bearbeitet) Hi, danke für eure Antwort. Ich dachte da wären noch andere abhängige Tabellen davon betroffen. Jetzt hat sich auch der Gedankenjungel etwas gelüftet. :) Wünsche euch noch einen angenehmen Mittag. bearbeitet 1. Juli 2014 von Nico27 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.