PDA

View Full Version : IBMDA400 liefert keine Daten



JMH
15-01-14, 06:56
Hallo Zusammen,

ich sehr neu in diesem Forum. Seit Januar bin ich eine Wiedereinsteiger auf der guten alten AS400. Ich wollte meine DB2 mit meinem SQL Server verbinden. Klappt auch gut. Nur bekommen ich beim Select keine Daten zurück:
Es zeigt mir alle Libs und Tabellen an, aber leider keine Daten...
Die Verbindung läuft im Kontext des Qsecofr....

Vielen Dank für die Hilfe

Die Fehlermeldung des SQL Servers lautet:
"Der OLE DB-Anbieter 'IBMDA400' für den Verbindungsserver 'XXXX' enthält die BAUER-Tabelle nicht. Die Tabelle ist nicht vorhanden, oder der aktuelle Benutzer besitzt keine Berechtigungen für diese Tabelle."

anbei mein Script:

sp_dropserver 'XXXX', 'droplogins';
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'XXXX', @srvproduct=N'IBMDA400 for iSeries', @provider=N'IBMDA400', @datasrc=N'XXXX',@provstr=N'Default Collection=SCHWP'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'XXXX',@useself=N'False',@locallogin= NULL,@rmtuser=N'XXXX',@rmtpassword='XXXX'
GO
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'rpc out', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'collation name', @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO


EXEC master.dbo.sp_MSset_oledb_prop N'IBMDA400', N'AllowInProcess', 1
EXEC master.dbo.sp_MSset_oledb_prop N'IBMDA400', N'NonTransactedUpdates', 1
EXEC master.dbo.sp_MSset_oledb_prop N'IBMDA400', N'SqlServerLIKE', 1
GO
--select * from Server.Katalog.Bibliothek.Tabelle
SELECT * FROM XXXX...BAUER
SELECT * FROM XXXX.XXXX01.SCHWP.BAUER

Fuerchau
15-01-14, 07:39
Prüfe noch mal genau die Einstellungen der Verbindung:
http://www-01.ibm.com/support/docview.wss?uid=nas8N1017400
Besonders die Eigenschaften:
Initial Catalog (der Systemname/RDBname)
Library List
Naming Convention (0=SQL muss eingestellt sein)

Bedenke: ohne Journalisierung ist nur Lesen möglich!

Robi
15-01-14, 07:42
hast du das

Die Tabelle ist nicht vorhanden, oder der aktuelle Benutzer besitzt keine Berechtigungen für diese Tabelle."
geprüft?
Robi

JMH
15-01-14, 10:12
Hallo,

hab mir die Parameter mal angeschaut und in meinen Providerstring reingemacht.
Hat aber nix gebracht. Hab eich mich in der Syntax vertan?

Über den den Objekt Explorer im SQL Server sehe ich alle Tabellen, und kann mir sogar ein SQL generieren lassen. Allerdings bringt es dann bei der Ausführung wieder den Fehler.

Hast du noch nen Tip?

Hier der Providerstring:
@provstr=N'Default Collection=SCHWP;Library List = SFTD SCHWP;Naming Convention = 0;Initial Catalog = SCHWP '

JMH
15-01-14, 10:14
Hallo,

ja ich habe alle Berechtigung. Wenn ich über den I Navigator gehe bekomme ich den Inhalt der Tabellen angezeigt. Deswegen vermute ich, das mein Fehler in irgendeinem nicht gesetzten Parameter liegt

JMH
15-01-14, 11:56
Mahlzeit,

so jetzt klappt es schon mal mit dem Befehl
SELECT * FROM OpenQuery(XXXX,'Select * From SCHWP.BAUER')
Hier bekomme ich jetzt Daten.

Mit dem Befehl
SELECT * FROM [XXXX].[YYYYY].[SCHWP].[BAUER]
bekomme ich nach wie vor keine Daten
Es kommt immer noch die obere Meldung.

Fuerchau
15-01-14, 11:58
Das Problem ist der sog. Pfad für den SQL-Server:

NameDerVerbindung.DatenbankName.Bibliothek.Tabelle

Hierbei ist der DatenbankName entscheidend.
Dies ist entweder dein Systemname (DSPNETA) oder, wenn du deine lokale DB per WRKRDBDIRE eingetragen hast, dieser Name deiner datenbank.
Prüfe dieses noch mal genau.

Die Alternative ist die Funktion OpenQuery:

select * from OpenQuery(Verbindungsname, 'select * from MyLib.MyTable');
http://technet.microsoft.com/de-de/library/ms188427.aspx

JMH
15-01-14, 14:53
So, jetzt läufts so wie ich es mir vorgestellt habe.
Das Problem war wohl das ich IBMDA400 statt IBMDASQL verwendet habe.
Nachdem ich das umgestellt habe klappt es wie gewünscht.

Vielen Dank für die Tips, haben mich echt weitergebracht.

hier jetzt auch alle SQL Statements die ich ausgeführt habe und mit denen ich Erfolg hatte:

sp_dropserver 'XXXX', 'droplogins';
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'XXXX', @srvproduct=N'XXXX', @provider=N'IBMDASQL', @datasrc=N'XXXX',
@provstr=N'Default Collection=LIB1; catalog library list=LIB1,LIB2;Block Size=8192'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'XXXX',@useself=N'False',@locallogin= NULL,@rmtuser=N'XXXX',@rmtpassword='XXXX'
GO
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'rpc out', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'collation name', @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO

--Werte die am Treiber(Anbieter) eingestellt werden müssen
EXEC master.dbo.sp_MSset_oledb_prop N'IBMDASQL', N'AllowInProcess', 1
EXEC master.dbo.sp_MSset_oledb_prop N'IBMDASQL', N'NonTransactedUpdates', 1
EXEC master.dbo.sp_MSset_oledb_prop N'IBMDASQL', N'SqlServerLIKE', 1