Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

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

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

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!

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.