# MS SQL Server 2008 Express - Datenbankabfrage funktioniert nur an einer Instanz



## Bänch (14. Juni 2010)

Hallo,

ich habe folgendes Problem.
Auf meinem Computer befinden sich 2 SQL Server Instanzen. Einmal die *Instanz "SQL" *und einmal die* Instanz "KUNDEN".*
Die beiden Instanzen sind mit der gleichen Installationsdatei installiert wurden.

An beiden Instanzen hängt die gleiche *Datenbank "XYZ".*

Folgende Abfrage soll aufgeführt werden:


```
SELECT [KalkulationAufträge].[ID], Satz, Art, ArtNr,  Bezeichnung, Menge, a , b, c, f, MEinheit, Barcode,
		 IsNull([a]*[f], 1) * IsNull([a]*[f], 1 ) as GesPos
		--*IsNull([b],1)*[f]*isNull([ c],1)*[f]
	FROM KalkulationAufträge LEFT JOIN Wertetabelle ON [KalkulationAufträge].[Art] = [Wertetabelle].[ID]
	WHERE [KalkulationAufträge].[Art] > 150 And Satz = 2144
```

Auf der ersten Instanz "SQL" funktioniert die Abfrage *nicht* aber auf der Instanz "KUNDEN".

An der Instanz "SQL" erscheint folgende Meldung: _Arithmetischer Überlauffehler beim Konvertieren von numeric in den numeric-Datentyp._

Woran kann es liegen ?

Habe schon Versionsnummern und andere Einstellungen im SQL Server Studio verglichen und keine Unterschiede gefunden.

Wenn ich aber die Abfrage verändere und ein _"convert"_ einbaue funktioniert es. (folgend)

```
SELECT [KalkulationAufträge].[ID], Satz, Art, ArtNr,  Bezeichnung, Menge, a , b, c, f, MEinheit, Barcode,
		 convert(float,IsNull([a]*[f], 1)) * IsNull([a]*[f], 1 ) as GesPos
		--*IsNull([b],1)*[f]*isNull([ c],1)*[f]
	FROM KalkulationAufträge LEFT JOIN Wertetabelle ON [KalkulationAufträge].[Art] = [Wertetabelle].[ID]
	WHERE [KalkulationAufträge].[Art] > 150 And Satz = 2144
```

Ich suche nach einer anderen Lösung, da ich nicht bei 120 Abfragen jedes mal das _"convert"_ einfügen will.

Danke schon mal im voraus.

Bänch...


##EDIT##

Ich habe aus Neugier einfach noch eine Instanz *"VERSION"* Installiert und die Datenbank angehangen.

Die Abfrage funktioniert auch bei der neuen Instanz aber warum nicht bei der Instanz*"SQL" *?


----------



## Thomas Darimont (15. Juni 2010)

Hallo,

enthalten die Instanzen wirklich die gleichen Daten? Wurden die Daten auf die gleiche Weise aus der gleichen Quelle eingespielt?
Sieht so aus, als gäbe es in der "SQL" Instanz andere Daten als in den anderen Instanzen oder die Typen der Spalten sind anders. 

Gruß Tom


----------



## Bänch (15. Juni 2010)

Hey,

ja sind die gleichen Daten, habe jeweils an den Instanzen eine Sicherung der Orginaldatenbank wiederhergestellt.

Habe die Felder auch schon verglichen. Sind beides Numeric Felder. Das erste Feld [ a ] ist numeric(18,6) und das zweite Feld [ f ] ist numeric(18,6).

Grüße

PS: Erstaunlicher Weise lief die Datenbank schon 2 Jahre auf einem SQL Server 97 (glaube) und und jetzt kommt der Fehler bei der Instanz "SQL"  (SQL Server 2008)


----------



## Thomas Darimont (15. Juni 2010)

Hallo,

was kommt den raus wenn du auf beiden Instanzen dieses Statement (reduziert auf den kritischen Ausdruck) ausführst?

```
select [a]*[f] as test, IsNull([a]*[f], 1) as test2 from xxxx
```

Unterscheiden sich die beiden Instanzen in Irgendeiner Form? Unterschiedliche Versionen? 32-Bit, 64-Bit Variante?

Gruß Tom


----------



## Bänch (15. Juni 2010)

Hey,

also er gibt mir bei allen 3 Instanzen eine Tabelle aus mit 2 Spalten ( test1 , test2 ), wobei in der ersten Spalte alles "NULL" ist und in der anderen Spalte alles "1.0000000".

Zu deiner Frage, die Instanzen unterscheiden sich nicht. ( Aber irgendwie muss es ja einen Unterschied geben.) Ich habe alle Instanzen mit der gleichen Installationsdatei auf dem gleichen System Installiert.

Der einzige Unterschied dabei ist, das sich das MSSQL10- Verzeichnis bei der Instanz "VERSION" und "KUNDEN" auf einer anderen Festplatte befindet. ( Platzproblem  )

Grüße =)


----------

