Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Fehlermeldung beim Zugriff auf einen Verbindungsserver

390 views
Skip to first unread message

Volker Wrede

unread,
Sep 20, 2004, 11:06:18 AM9/20/04
to
Hallo Alle zusammen,

ich brauche mal Eure Hilfe!
Folgendes Problem tritt auf, wenn ich auf eine AS400
zugreifen möchte.
Die AS400 ist als Verbindungsserver eingerichtet
( incl. ODBC ).

Im EM kann ich auf die AS400 zugreifen und mir alle
Tabellen und Sichten anzeigen lassen. Über den Query-
Analyzer kann ich folgendes SQL-Statement ausführen und
bekomme auch ein Ergebnis dazu:

SELECT * FROM AS400.AS0050.KRAFT.BEW_BRUCHR


Nun möchte ich dieses Statement in einer Prozedur einbinden
und ausführen, die sieht erstmal nur so aus:

CREATE PROCEDURE Test
AS
SELECT *
FROM AS400.AS0050.KRAFT.BEW_BRUCHR

GO

und dabei erhalte ich folgende Fehlermeldung und zwar
schon dann, wenn ich die Prozedur speichern will:


Fehler 7405: Heterogene Abfragen erfordern, dass die
Optionen ANSI_NULLS und ANSI_WARNINGS für die Verbindung
festgelegt werden. So wird eine konsistente
Abfragesemantik sichergestellt. Aktivieren Sie diese
Optionen, und wiederholen Sie dann die Abfrage.

Und dann noch mit der Meldungsüberschrift:
Microsoft SQL-DMO ( ODBC SQL-Sate: 42000 )

Die Datenbankoptionen sehen folgendermaßen aus:

sp_dboption @dbname = 'test2'

Ergebnis:
The following options are set:
-----------------------------------
torn page detection
ANSI null default
auto create statistics
auto update statistics

hier habe ich auch schon alles andere probiert, d.h.

ANSI NULLS TRUE
ANSI WARNINGS TRUE

Leider ohne Erfolg! Ich weiss im Moment nicht weiter!
Vielen Dank schon mal im Voraus!

Gruß Volker

Elmar Boye

unread,
Sep 21, 2004, 3:53:25 AM9/21/04
to
Hallo Volker,

Volker Wrede <volker...@onlinehome.de> schrieb ...


> Folgendes Problem tritt auf, wenn ich auf eine AS400
> zugreifen möchte.
>

> Nun möchte ich dieses Statement in einer Prozedur einbinden
> und ausführen, die sieht erstmal nur so aus:
>
> CREATE PROCEDURE Test
> AS
> SELECT *
> FROM AS400.AS0050.KRAFT.BEW_BRUCHR
>
> GO
>
> und dabei erhalte ich folgende Fehlermeldung und zwar
> schon dann, wenn ich die Prozedur speichern will:
>
> Fehler 7405: Heterogene Abfragen erfordern, dass die
> Optionen ANSI_NULLS und ANSI_WARNINGS für die Verbindung
> festgelegt werden. So wird eine konsistente
> Abfragesemantik sichergestellt. Aktivieren Sie diese
> Optionen, und wiederholen Sie dann die Abfrage.

Stelle vor dem Erstellen der Prozedur diese
Verbindungsoptionen ein. Also in etwa:
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
GO
CREATE PROC Test ...

>
> Die Datenbankoptionen sehen folgendermaßen aus:
>
> sp_dboption @dbname = 'test2'
>
> Ergebnis:
> The following options are set:
> -----------------------------------
> torn page detection
> ANSI null default
> auto create statistics
> auto update statistics
>
> hier habe ich auch schon alles andere probiert, d.h.
>
> ANSI NULLS TRUE
> ANSI WARNINGS TRUE
>
> Leider ohne Erfolg!

Die Server und Datenbankoptionen haben da leider immer wenig
Auswirkungen. Denn bei diesen Einstellung handelt es sich
um Sitzungseinstellungen und die ODBC wie OLEDB Treiber überschreiben
diese Einstellungen in der Regel.
Die aktuellen Einstellungen sind den @@OPTIONS zu entnehmen sind.
Und für den Query Analyzer gilt, dass sie über den Optionsdialog
eingestellt werden können.

Wenn Du ganz sicher gehen willst, solltest Du Dir zu eigen
machen, immer die Einstellungen zu verwenden wie sie auch für
berechnete Spalten, indizierte Sichten erforderlich sind.
Denn das sind die favorisierten Einstellungen des SQL Servers
von denen man möglichst nie abweichen sollte.

SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET NUMERIC_ROUNDABORT OFF

Näheres dazu steht unter "SET-Optionen mit Auswirkungen auf Ergebnisse"
in der SQL Server Dokumentation.

Gruss
Elmar

anon...@discussions.microsoft.com

unread,
Sep 21, 2004, 6:41:35 AM9/21/04
to
Hallo Elmar

danke für Deinen Hinweis, Knoten ist geplatzt.
Das Problem waren gar nicht die Einstellungen, sondern der
Enterprise-Manager. Ich habe versucht diese Prozedur
direkt auf dem EM zu erstellen und das war der Fehler.
Scheinbar gibt es hier ein Problem.
Aber Dein Hinweis:


SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
GO
CREATE PROC Test ...

das zu machen hat dann funktioniert, dadurch bin ich da
erst drauf gekommen.

Vielen Dank dafür

Gruß Volker

>-----Originalnachricht-----

>.
>

0 new messages