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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Diego Uribe
07/03/2005 - 20:19 | Informe spam
ok, y de donde puedo bajar esos drivers?
Se pueden bajar verdad?

"Gustavo Larriera [MVP]" escribió en el mensaje
news:%
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

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida