Jump to content

Brauche Hilfe zu MS SQL Server Management Studio - Meldungen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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. :)

 

Link zu diesem Kommentar

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?

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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_id
from tm_artikel
where ast_nummer = '0100099-0442-059'),
(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-0442-059'),
10,10,0,0.000000,
(select me_id
from ta_mengeneinheit
where 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 = Artikelformel
10,'aint_pos_sollmenge_basis','TestformelStückliste');


UPDATE dbo.tm_konfig_formel SET fm_formel='@LG*22.33'
WHERE tm_konfig_formel.fm_typ = 1
AND 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 Material
AND 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_id
0,    --***stlp_member_sub_id
10,20,0,0.000000,
(select me_id
from ta_mengeneinheit
where 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_stueckliste
SET 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_vk
SET 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_id
from tm_artikel_vk inner join tm_artikel on tm_artikel.ast_id = tm_artikel_vk.ast_id
where tm_artikel.ast_nummer = '0100099-0441-010Y');
 

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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)

Link zu diesem Kommentar

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 ;)

Link zu diesem Kommentar

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 von NilsK
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...