Viiiiel googeln löste dann plötzlich mein Problem...
Es lag am Connectionstring, den ich im Parameter @provstr bei sp_addlinkedserver übergebe. Ist wohl ein AS400 typisches Problem. Durch Setzen von BLOCKSIZE=0 (anstatt 32 = 32kB) werden ALLE Zeilen zurückgeliefert...
Hier nochmals das Ganze vervollständigt:
SQL-Code:
EXEC sp_addlinkedserver
@server = '
Servername',
@srvproduct = '
AS400 Client Access',
@provider = '
MSDASQL',
@provstr = '
Driver={iSeries Access ODBC Driver};SYSTEM=AS400;CMT=0;DBQ=DBNAME_ON_AS400;NAM=0;DFT=5;DSP=1;TFT=0;TSP=0;DEC=0;XDYNAMIC=0;RECBLOCK=2;BLOCKSIZE=0;SCROLLABLE=0;TRANSLATE=0;LAZYCLOSE=1;LIBVIEW=0;REMARKS=0;CONNTYPE=0;SORTTYPE=0;PREFETCH=0;DFTPKGLIB=QGPL;LANGUAGEID=ENU;SORTWEIGHT=0;MAXFIELDLEN=32;COMPRESSION=0;ALLOWUNSCHAR=0;SEARCHPATTERN=1;MGDSN=0'
EXEC sp_serveroption
@server = '
DBNAME_ON_AS400',
@optname = '
data access',
@optvalue =
TRUE
EXEC sp_addlinkedsrvlogin
@rmtsrvname = '
DBNAME_ON_AS400',
@useself =
false,
@rmtuser = '
username',
@rmtpassword = '
password'
Abfragen kann man das Ganze dann mit
select m.* from OpenQuery(DBNAME_ON_AS400, 'select * from Medecinn order by nommed') m