Zum Inhalt springen

2 abfragen 2 server = unterschiedliches erg.


Gast alexC++

Empfohlene Beiträge

Hallo,

habe 2 identische mssql-datenbanken auf 2 unterschiedlichen servern

und 2 gleiche abfragen, die ich auf

den beiden servern laufen lasse.

siehe hier:


-- Nummer 1

Select NextVar129=case when (max(var129) + 1) is null then '300000000' else max(var129) + 1 end

from sysadm.hi0 

where var129 between 300000000 and 399999999


-- Nummer 2

Select NextVar129=case when (max(var129) + 1) is null then '300000000' else max(var129) + 1 end

from sysadm.hi0 

where var129 between '300000000' and '399999999'

Einmal mit Hockomme und einmal ohne.

var129 ist ein varchar(30) (natürlich auch auf beiden servern(datenbanken)

ich bekomme auf dem einen server für beide abfragen den selben wert

und auf dem anderen server 2 unterschiedliche werte.

es muss dann wohl an einer server-einstellung liegen, da ja sonst die beiden abfragen auf beiden servern dasgleiche ergebnis liefern müssten.

liege ich da richtig, wenn ja was für eine einstellung ist das!

bitte um hilfe!!

Gruß Alex

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oha, sollen wir nun wieder die Glaskugeln rausholen?

Du hast ja noch nichtmal gesagt, ob es die gleichen Serverversionen sind, ob es die gleichen Datenbestaende sind und welche Werte du im einzelnen erhaeltst.

Abgesehen davon hast auch noch nicht erzaehlt, was du erreichen willst.

Vielleicht mags ja viel schoenere Loesungen geben :)

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

auf beiden sql server 2005 ( der 1ste hat service pack 1 und der andere service pack 2)

service pack 1 gleich

und service pack 2 unterschiedlich

es sind auf den beiden servern unterschiedlich viele datensätze vorhanden.

was aber keine rolle spielt, da ja die beiden werte für die 2 abfragen beim einen server gleich sind und beim anderen nicht.

ich will erreichen, dass der max-wert um 1 addiert wird

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann jetzt das nur aus Postgres sagen, da gibt es "max" um den maximalen Wert einer Spalte zu bekommen oder wenn es eine Sequenz ist "current_id", die für die aktuelle Session die ID liefert bzw "next_id", die eine eindeutige ID (currid+1) liefert, so dass sich die Benutzer gegenseitig nicht in die Quere kommen.

Aber SQL / Datenbanken sind bei so etwas durchaus unterschiedlich, ich gehe mal von einem MS SQL (-> Handbuch lesen)

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na gut, erstens hoert sich das fuer mich an als wuerdest du eine Autoinkrementspalte selbst erzeugen wollen.

Dazu solltest dann vielleicht mal unter Identity Columns in den BOL nachlesen.

Weshalb du bei deinen Statements durchaus unterschiedliche Werte erhalten kannst ist schnell erklaert.

Du hast Zahlen in einer varchar Spalte stehen und vergleichst diese auf unterschiedliche Arten. Beim ersten wird dein var129 implizit nach int gecastet und dann mit der 300000000 und der 399999999 verglichen.

Beim zweiten Beispiel machst du einen alphanumerischen Vergleich.

Dort fallen dir also evtl. auch Werte in den Bereich, die rein numerisch betrachtet dort nicht hingehoeren.

Abgesehen von alledem bekommst du Fehler sobald in der var129 Spalte mal kein nach int castbarer Wert enthalten ist.

Dein Design ist an der Stelle also nuja, sagen wir mal etwas suboptimal.

Falls du wirklich etwas in der Art machen willst, dann mach bitte falls irgendwie moeglich aus var129 eine int, oder bigint Spalte.

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

das feld wird mittels programm befüllt.

es sollten dann nur zahlen drin stehen. :D

ich weiß nicht, warum dieses feld benutzt wurde, habe damit nix zu tun.

ich werde aber mal darauf hinweisen.

danke für die Hilfe!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...