luke198224
Goto Top

query gibt 2 einträge wieder, aber es gibt nur einen eintrag

Hallo folgendes seltsame problem:
Auf ms sql Server 2005 führe ich folgenden befehl aus:
Select * from xxx where xy='abc'
Im result zeigt er mir zwei völlig identische einträge an.

Result:

prim key xy
123 abc
123 abc

Der eintrag 123, abc ist in der tabelle xxx aber nur einmal vorhanden.
Wie kann das sein??

HAbe die komplette bin datenbank auf einen anderen MS SQL Server kopiert und den völlig identischen select befehl ausgeführt.
Und siehe da, es gibt nur ein eintrag im result.

Beide sind windows Server 2003 SP2
MS SQL Server 2005

Ist das vielleicht ein known bug??
Hat jemand eine Idee wie ich den select vielleicht "analysieren" kann, damit ich weiss warum der mir 2 mal den eintrag im result ausgibt.

Content-ID: 81117

Url: https://administrator.de/contentid/81117

Ausgedruckt am: 18.11.2024 um 03:11 Uhr

Musor
Musor 19.02.2008 um 14:20:25 Uhr
Goto Top
Hallo,

versuche die Tabelle einfach zu reparieren.
Was mich aber noch intersiert:
gibt er bei select * from xxx where key=123 auch zwei Einträge?
Und was ist mit select count(*) from xxx...
Luke198224
Luke198224 19.02.2008 um 15:08:23 Uhr
Goto Top
bei select * from xxx where key=123 gibt er mir ebenfalls 2 Einträge wieder.
Wie kann ich die Datenbank reparieren?
Und warum ist der result korreckt wenn ich doch diese Datenbank auf einen anderen Server kopiere? Ist dann eine reperatur damit nicht ausgeschlossen,?
rubberduck
rubberduck 19.02.2008 um 15:34:49 Uhr
Goto Top
Da Du ja mit Select * from alle Spalten ausgibst, ist wirklich nichts anders?
Keine Spalte TimeStamp z.Bsp., die andere Werte hat?

Oder wird mit einem StoredProcedure was gerechnet oder umgewandelt?
Luke198224
Luke198224 19.02.2008 um 16:19:28 Uhr
Goto Top
Da Du ja mit Select * from alle
Spalten ausgibst, ist wirklich nichts
anders?
Keine Spalte TimeStamp z.Bsp.,
die andere Werte hat?

Oder wird mit einem StoredProcedure
was gerechnet oder umgewandelt?

Kein Wert ist anders, es werden alle spalten ausgegeben und alle werte sind exakt gleich.
Wegen stored procedure und result von select count(*) kann ich jetzt nicht beantworten.
geben nur support für den server und muss das abklären mit dem kunden.
Luke198224
Luke198224 19.02.2008 um 16:22:05 Uhr
Goto Top
Besonders interesant ist,
wenn ich die den EINEN eintrag in der tabele komplett entferne und neu anlege mit den gleichen Werten, bekomme ich beim gleichen select befehl nur EINEN eintrag angezeigt, so wie es richtig ist.
rubberduck
rubberduck 19.02.2008 um 19:54:50 Uhr
Goto Top
Wenn Du nur select * from Tabelle ohne where machst, siehst Du in der Auflistung Deinen gesuchten Record ein- oder zweimal?
Und wenn Du Dein where auf was anderes als den PK abfragst, gibt das Teil auch zweimal den gleichen Record aus?
Fragst Du direkt auf der Tabelle ab, oder auf einem View?

Der Timestamp, hab ich irgendwie so im Kopf, wird "normalerweise" nicht angezeigt.
(Vielleicht verwechsle ich da ja auch was...)

Aber ob's einen hat oder nicht, siehst Du ja im Design-Modus der Tabelle.
Luke198224
Luke198224 21.02.2008 um 08:39:32 Uhr
Goto Top
Wenn Du nur select * from Tabelle
ohne where machst, siehst Du in der
Auflistung Deinen gesuchten Record ein- oder
zweimal?
Und wenn Du Dein where auf was anderes als
den PK abfragst, gibt das Teil auch
zweimal den gleichen Record aus?
Fragst Du direkt auf der Tabelle ab, oder
auf einem View?

Der Timestamp, hab ich irgendwie so im Kopf,
wird "normalerweise" nicht
angezeigt.
(Vielleicht verwechsle ich da ja auch
was...)

Aber ob's einen hat oder nicht, siehst
Du ja im Design-Modus der Tabelle.

ohne where sehe ich den record auch zweimal.
auch wenn ich was anderes abfrage z.b den eindeutigen Namen, bekomme ich auch zwei ergebnisse. Ich frage immer direkt im sql managment tool von ms ab. es gibt auch keine UDF/StoredProcedure. Der Timestamp ist auch identisch.. lol. Also der eintrag is defintiv einmal vorhanden, gibt aber sobald man select benutzt den eintrag zweimal aus.
Sehr komisch ist aber auch die tatsache das Wndows Server 64bit installiert ist aber SQL auf 32bit läuft.. kann das damit zusammenhängen??
rubberduck
rubberduck 21.02.2008 um 08:48:21 Uhr
Goto Top
Wer weiss...Der andere Server auf den Du die DB exportiert hast, ist der nicht 64Bit?

Bekommst Du nur einen Eintrag, wenn Du
SELECT distinct * FROM [DeineTabelle]
eingibst (oder meinetwegen auch ein Goup By)

Spannend wäre ebenfalls zu Wissen, ob das schon immer war, oder nach einem bestimmten Ereignis aufgetaucht ist.

Wenn Du die Lösung hast, dann lass es uns Wissen.
Biber
Biber 21.02.2008 um 10:28:42 Uhr
Goto Top
Moin,

wenn der Datensatz physikalisch nur einmal da ist, aber zweimal angezeigt wird, dann liegt die Ursache logischerweise nicht in der Datentabelle selbst, sondern an einem fehlerhaften Index.
Indextabellen droppen, neu anlegen, fertig.

Grüße
Biber
SvenGuenter
SvenGuenter 21.02.2008 um 12:01:42 Uhr
Goto Top
Biber war schneller. Genau das würde ich auch sagen.


Gruß

Sven
Biber
Biber 03.03.2008 um 06:42:00 Uhr
Goto Top
Moin Luke198224,

magst Du mal einen Zwischenstatus liefern bitte?

Danke
Biber
Luke198224
Luke198224 06.03.2008 um 08:06:56 Uhr
Goto Top
hallo leute,
Danke für die Hilfe,
hab die index table neu erstellt und schon wieder 2 einträge bekommen.
habe nochmal genau die tabelle gecheckt und musste feststellen das doch ein unterschied zwischen den beiden einträgen besteht.
Aufgrund der grösse habe ich das übersehen face-smile
prblem muss ich jetzt bei der software suchen die die einträge macht.
Biber
Biber 06.03.2008 um 08:32:53 Uhr
Goto Top
Moin Luke198224,

musste feststellen das doch ein unterschied zwischen den beiden einträgen besteht.

???? Ich dachte, da ist ein PrimaryKey definiert???

Kannst Du bitte nochmal einen klärenden Satz dazu schreiben?
Wird ein nicht sichtbares Zeichen da hineingeschrieben oder war das mit dem PK nur Wunschdenken?

Grüße
Biber