Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi INSERT INTO SELECT mit Subselect funktioniert nicht mehr (https://www.delphipraxis.net/121297-insert-into-select-mit-subselect-funktioniert-nicht-mehr.html)

HeikoAdams 25. Sep 2008 09:00

Datenbank: MS SQL • Version: 2000 SP4 • Zugriff über: ADO

INSERT INTO SELECT mit Subselect funktioniert nicht mehr
 
Hallo,
ich habe zur Zeit ein merkwürdiges Problem mit dem SQL Server 2000. In unserer Produktdatenbank wird in vielen Storedprocedures ein Insert-Statement der folgenden Art und Weise:
SQL-Code:
INSERT INTO ab SELECT c FROM d WHERE e NOT IN (SELECT f FROM g)
Bislang wurden diese Inserts vom SQL Server anstandslos ausgeführt. Jedoch ist es seit dem letzten Hotfix-Update so, das der SQL Server diese Prozeduren mit der Fehlermeldung "... Die Unterabfrage liefert mehr als ein Ergebnis zurück ..." abbricht.

Hat jemand das selbe Problem, oder weiß jemand, wie man den SQL Server dazu bringen kann, das "alte" Verhalten wieder zu aktivieren??

Gruß

Union 25. Sep 2008 09:10

Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
 
Das Problem liegt in
SQL-Code:
WHERE e NOT IN (SELECT f FROM g)
Die Fehlermeldung ist wohl aussagekräftig genug. Der Pseudocode f darf nur genau ein Feld bezeichnen, das typengleich mit e sein muss, also z.b. auf keinen Fall *.

HeikoAdams 25. Sep 2008 09:12

Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
 
Zitat:

Zitat von Union
Das Problem liegt in
SQL-Code:
WHERE e NOT IN (SELECT f FROM g)
Die Fehlermeldung ist wohl aussagekräftig genug. Der Pseudocode f darf nur genau ein Feld bezeichnen, das typengleich mit e sein muss, also z.b. auf keinen Fall *.

Das ist mir schon klar, nur ist es so, das dieser Code bislang Fehlerfrei ausgeführt wurde und nun auf einmal eine Fehlermeldung auslöst. Und solch eine Änderung im Programmverhalten erwarte ich absolut nicht bei einem Hotfix :wall:

nahpets 25. Sep 2008 09:39

Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
 
Hallo,

SQL-Code:
create table ab
( c int
);

create table d
( c int,
  e int
);

create table g
( f int
);

insert into g (f) values (1);
insert into g (f) values (2);
insert into g (f) values (3);
insert into g (f) values (4);
insert into g (f) values (5);
insert into g (f) values (6);

insert into d (c,e) values (1,2);
insert into d (c,e) values (3,4);
insert into d (c,e) values (5,6);
insert into d (c,e) values (7,8);
insert into d (c,e) values (9,10);
insert into d (c,e) values (11,12);
insert into d (c,e) values (17,14);

insert into ab select c from d where e not in (select f from g);

select * from ab

select * from d

select * from g
getestet gegen SQL-Server 2005 und Postgres 8.3: funktioniert.
Sieht schwer nach einem Fehler im Hotfix aus :x.

Stephan

PS: War der Hotfix erforderlich? Wenn nein, rückgängig machen (Never touch...)

HeikoAdams 25. Sep 2008 09:45

Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
 
Zitat:

Zitat von nahpets
War der Hotfix erforderlich? Wenn nein, rückgängig machen (Never touch...)

Soweit ich mich erinnere, war es ein Sicherheitsupdate, da der Hotfix über das automatische Update von Windows ausgeliefert wurde.

nahpets 25. Sep 2008 09:58

Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
 
Zitat:

Zitat von HeikoAdams
Zitat:

Zitat von nahpets
War der Hotfix erforderlich? Wenn nein, rückgängig machen (Never touch...)

Soweit ich mich erinnere, war es ein Sicherheitsupdate, da der Hotfix über das automatische Update von Windows ausgeliefert wurde.

Naja, das ist für mich kein Argument.
Das automatische Update von Windows ist bei mir immer ausgeschaltet, habe schon zu oft Systeme reparieren oder neu Aufsetzen müssen, weil da verschlimmbessert wurde. Da mach' ich mir lieber die Arbeit und prüfe, was ich brauche. Und das wird vorher an einem System getestet, dass ggfls. nach dem Test "weggeworfen" werden kann. Kann mir keinen Produktionsausfall wegen schiefgelaufener Sicherheitsupdates leisten.

Und in Bezug auf Hotfix sollte man immer das im Auge behalten: Schneider nennen das mit der heißen Nadel stricken :!:

Stephan

Elvis 25. Sep 2008 10:09

Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
 
Zitat:

Zitat von Union
Das Problem liegt in
SQL-Code:
WHERE e NOT IN (SELECT f FROM g)
Die Fehlermeldung ist wohl aussagekräftig genug. Der Pseudocode f darf nur genau ein Feld bezeichnen, das typengleich mit e sein muss, also z.b. auf keinen Fall *.

Nö, die Meldung macht absolut keinen SInn.
"not in" Soll ja selbst eine Erbnismenge liefern in der dein Wert nicht vorkommen soll. ;-)

Ansonsten ganz der Meinung von nahpet: kein Autoupdate auf einem Server. Erst recht nicht bei einem DB Server.

Wir werden hier in den nächsten Monaten komplett auf Virtualisierung setzen wodurch wir Updates immer in einem Clone testen können um dann eine sichere Entscheidung treffen zu können.
Das eine oder andere Update hat usn nämlich auch schon Kopfschmerzen bereitet. Manche Fixes waren nämlich nicht immer so leicht aus dem Weg zu gehen. (offene Scheunentore... äh Lücken im IIS zum Beispiel... :? )

HeikoAdams 25. Sep 2008 10:59

Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
 
Nur zur Info: Wir reden von diesem Hotfix: http://www.microsoft.com/technet/sec.../ms08-040.mspx

nahpets 25. Sep 2008 11:22

Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
 
Hallo Heiko,
Zitat:

Zitat von HeikoAdams
Nur zur Info: Wir reden von diesem Hotfix: http://support.microsoft.com/?scid=k...943677&x=5&y=9

hattet Ihr bei eurem System das dort beschriebene Problem?
Dort steht ausdrücklich, Hotfix nur auf solchen Systemen einsetzen, bei denen das Problem auftrat.
Hattet Ihr das Problem nicht, versucht den Hotfix wegzubekommen (oder System neu aufsetzen ohne den Hotfix).

Und Bittebitte: Hotfixe nur dann und wirklich nur dann, wenn das von den Hotfixen zu behebende Problem wirklich aufgetreten ist. Wir hatten schon zuviele Seiteneffekte und zerschossenen Systeme.

Eventuell frag' mal unter www.administrator.de, ob Dir dort jemand helfen kann, habe per Google und Co. keine Infos über Fehler oder Seiteneffekte zu dem Hotfix finden können.

Stephan

HeikoAdams 25. Sep 2008 13:46

Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
 
Mein Fehler. Ich hatte mein Posting anscheinend zuspät korrigiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz