sp_addlinkedserver - Urgente

04/03/2005 - 21:38 por Diego Uribe | Informe spam
Hola todos

Resulta que tengo un SQLServer 2000 SP3 y un AS/400.
Quiero ejecutar una sentencia de insercion en SQLServer que inserte un
registro en una tabla en el AS/400.
Ya pude crear el servidor vinculado, pero me arroja error al tratar de
insertar.
Aqui va lo que tengo y funciona:

EXEC sp_dropserver @server = 'AS400', @droplogins = 'droplogins' ;
GO
EXEC sp_addlinkedserver
@server = 'AS400',
@srvproduct = 'AS400 Client Access',
@provider = 'MSDASQL',
@provstr = 'DRIVER=Client Access ODBC Driver
(32-bit);COMPRESSION=0;SEARCHPATTERN=0;SIGNON=2;SSL=0;REMARKS=1;LIBVIEW=1;TR
ANSLATE=1;XDYNAMIC=0;PKG=QGPL/DEFAULT(IBM),2,0,1,0,512;LANGUAGEID=ENU;DFTPKG
LIB=QGPL;DBQ=;SYSTEM=<ELAS/400>;';
GO
sp_addlinkedsrvlogin @rmtsrvname = 'AS400', @useself = false, @locallogin null, @rmtuser = '<USUARIO400>', @rmtpassword = '<PASSWORD>';
GO
SELECT * FROM AS400.<ELAS/400>.<LALIBRERIA>.<ELARCHIVO_O_TABLA>

********************* Hasta aqui funciona!!!!
*******************************
Esto es lo que NO me funciona, y dejo de una vez validado los errores que ya
revise:
Tengo permisos en ambas partes, en SqlServer estoy probando con el "sa",
en el 400 con un usuario con demasiados permisos.
La tabla esta libre y solo para mi uso
Se puede insertar registros
El mismo sql lo ejecute en el 400 y funciona
Tiene llave primaria (en varias páginas decia que daba error sin llave
primaria)
El mismo SQL lo ejecuto desde visual basic con objetos ADODB y la misma
cadena de conexión y FUNCIONA

insert into AS400.<ELAS/400>.<LALIBRERIA>.<ELARCHIVO_O_TABLA>
(campo1,campo2,campo3) values (1,150,'PRUEBAS DEL SISTEMA DESDE SQLSERVER')

Retorna el error:

Servidor: mensaje 7399, nivel 16, estado 1, línea 1
El proveedor OLE DB 'MSDASQL' informa de un error. El proveedor no
proporcionó información acerca del error.
Traza de error de OLE DB [OLE/DB Provider 'MSDASQL' IRowsetChange::InsertRow
returned 0x80004005: El proveedor no proporcionó información acerca del
error.].

No se por donde atacar este error.
¿Alguien podria ayudarme?

Saludos y desde ya muchas gracias

Diego
 

Leer las respuestas

#1 Gustavo Larriera [MVP]
04/03/2005 - 22:43 | Informe spam
He visto problemas similares y se solucionaron actualizando/patcheando
los drivers DB2 o usando los de Microsoft incluidos en el Host
Integration Server 2000.

Me temo que por alli viene el problema.

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and
confers no rights.



"Diego Uribe" wrote in message news::
Hola todos

Resulta que tengo un SQLServer 2000 SP3 y un AS/400.
Quiero ejecutar una sentencia de insercion en SQLServer que inserte un
registro en una tabla en el AS/400.
Ya pude crear el servidor vinculado, pero me arroja error al tratar de
insertar.
Aqui va lo que tengo y funciona:

EXEC sp_dropserver @server = 'AS400', @droplogins = 'droplogins' ;
GO
EXEC sp_addlinkedserver
@server = 'AS400',
@srvproduct = 'AS400 Client Access',
@provider = 'MSDASQL',
@provstr = 'DRIVER=Client Access ODBC Driver

(32-bit);COMPRESSION=0;SEARCHPATTERN=0;SIGNON=2;SSL=0;REMARKS=1;LIBVIEW=1;TR


ANSLATE=1;XDYNAMIC=0;PKG=QGPL/DEFAULT(IBM),2,0,1,0,512;LANGUAGEID=ENU;DFTPKG

LIB=QGPL;DBQ=;SYSTEM=<ELAS/400>;';
GO
sp_addlinkedsrvlogin @rmtsrvname = 'AS400', @useself = false, @locallogin
> null, @rmtuser = '<USUARIO400>', @rmtpassword = '<PASSWORD>';
GO
SELECT * FROM AS400.<ELAS/400>.<LALIBRERIA>.<ELARCHIVO_O_TABLA>

********************* Hasta aqui funciona!!!!
*******************************
Esto es lo que NO me funciona, y dejo de una vez validado los errores que
ya
revise:
Tengo permisos en ambas partes, en SqlServer estoy probando con el
"sa",
en el 400 con un usuario con demasiados permisos.
La tabla esta libre y solo para mi uso
Se puede insertar registros
El mismo sql lo ejecute en el 400 y funciona
Tiene llave primaria (en varias páginas decia que daba error sin
llave
primaria)
El mismo SQL lo ejecuto desde visual basic con objetos ADODB y la
misma
cadena de conexión y FUNCIONA

insert into AS400.<ELAS/400>.<LALIBRERIA>.<ELARCHIVO_O_TABLA>
(campo1,campo2,campo3) values (1,150,'PRUEBAS DEL SISTEMA DESDE
SQLSERVER')

Retorna el error:

Servidor: mensaje 7399, nivel 16, estado 1, línea 1
El proveedor OLE DB 'MSDASQL' informa de un error. El proveedor no
proporcionó información acerca del error.
Traza de error de OLE DB [OLE/DB Provider 'MSDASQL'
IRowsetChange::InsertRow
returned 0x80004005: El proveedor no proporcionó información acerca del
error.].

No se por donde atacar este error.
¿Alguien podria ayudarme?

Saludos y desde ya muchas gracias

Diego

Preguntas similares