![]() |
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:
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.
INSERT INTO ab SELECT c FROM d WHERE e NOT IN (SELECT f FROM g)
Hat jemand das selbe Problem, oder weiß jemand, wie man den SQL Server dazu bringen kann, das "alte" Verhalten wieder zu aktivieren?? Gruß |
Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
Das Problem liegt in
SQL-Code:
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 *.
WHERE e NOT IN (SELECT f FROM g)
|
Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
Zitat:
|
Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
Hallo,
SQL-Code:
getestet gegen SQL-Server 2005 und Postgres 8.3: funktioniert.
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 Sieht schwer nach einem Fehler im Hotfix aus :x. Stephan PS: War der Hotfix erforderlich? Wenn nein, rückgängig machen (Never touch...) |
Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
Zitat:
|
Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
Zitat:
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 ![]() Stephan |
Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
Zitat:
"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... :? ) |
Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
Nur zur Info: Wir reden von diesem Hotfix:
![]() |
Re: INSERT INTO SELECT mit Subselect funktioniert nicht mehr
Hallo Heiko,
Zitat:
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 ![]() Stephan |
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. |
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