Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Cómo hacer un Insert a un LiskServer por OpenQuery?

Estas en el tema de Cómo hacer un Insert a un LiskServer por OpenQuery? en el foro de Bases de Datos General en Foros del Web. Estoy trabajando en SQL Server y tengo un Link Server con Oracle. Antes ejecutaba los select, insert, update, delete asi: Código: Select * from LINKSERVER..USUARIO.TABLA ...
  #1 (permalink)  
Antiguo 11/10/2004, 16:50
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Cómo hacer un Insert a un LiskServer por OpenQuery?

Estoy trabajando en SQL Server y tengo un Link Server con Oracle.

Antes ejecutaba los select, insert, update, delete asi:

Código:
Select * from LINKSERVER..USUARIO.TABLA
Pero asi es muy lento porque de esa forma SQL Server no utiliza los índices. AHora lo hago asi:

Código:
Select * from OpenQuery(LINKSERVER,'Select * from TABLA')
Pero he intentado asi lo siguiete:
Código:
Select * from OpenQuery(LINKSERVER,'Insert Into TABLA (Campo) Values(Valor)')
Pero me da error, como puedo hacer un insert con openquery?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 11/10/2004, 17:26
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Ya te aseguraste de haber linkeado previamente el server.. que en éste caso es Oracle??

Sería algo como ésto:

Cita:
EXEC sp_addlinkedserver
@server = 'NombreServer',
@srvproduct = 'Oracle',
@provider = 'MSDAORA',
@datasrc = 'MyServer'
Despues ya puedes hacer ésto:

Cita:
SELECT *
FROM OPENQUERY('NombreServer', 'SELECT ....')
Pruebalo y nos avisas que tal..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 11/10/2004, 18:37
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Si, el server está linkiando, y los select los hace bien, lo que no puedo hacer es los insert con openquery.
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #4 (permalink)  
Antiguo 12/10/2004, 09:37
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
quiza el error este no en el insert, sino que en la cadena del OPENQUERY no acepta parametros.

Si tienes algo del tipo:

Código:
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles WHERE campo = ''abc''')
Funciona, pero en cambio algo del tipo:
Código:
DECLARE @filtro VARCHAR(10)
SET @filtro = 'abcd'
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles WHERE campo = ''' + @filtro + ''')
No funcionará por el parámetro que intentas agregar
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #5 (permalink)  
Antiguo 12/10/2004, 10:55
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Mithrandir, las variables si funcionan.
Vuelvo y repido, mi problema no son los select, pues estos, con variables o sin ellas, funcionan perfectamente, el problema está cuando intento hacer un insert, update, etc. Osea cuando intento hacer algo que no sea select.

Esto me funciona perfectamente:
Select * from openquery(LINKSERVER,'Select * from Tabla')

Pero esto no me funciona para nada:
Select * from openquery(LINKSERVER,'Delete from Tabla')

Me tira el siguiente error:
Cita:
Server: Msg 7357, Level 16, State 2, Line 1
Could not process object 'Delete from TABLA'. The OLE DB provider 'MSDAORA' indicates that the object has no columns.
OLE DB error trace [Non-interface error: OLE DB provider unable to process object, since the object has no columnsProviderName='MSDAORA', Query=Delete from TABLA'].
Me parece que no es nada que ver con los servidores de SQL ni de Oracle, sino que no estoy utilizando la sintaxis correcta para hacer el Delete, o el insert, etc.

Intenté haciendo esto:
Código:
Delete from  openquery(SAP,'Delete from ZHORASEXTRAS')
Y nada de nada.
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #6 (permalink)  
Antiguo 12/10/2004, 11:58
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Creo que ya ví el fallo rsoft.., lo que pasa es que estas colocando un select antes de tu openquery y lo que deseas hacer es un delete..

Deberías hacer algo como ésto:

Cita:
DELETE OPENQUERY(LINKSERVER, 'SELECT * FROM oracle.Tabla')
Pruebalo y nos avisas que tal te fue..
  #7 (permalink)  
Antiguo 12/10/2004, 12:14
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Bueno, el delete del select lo hizo

Pero Cómo sería para el Insert y el Update?

Insenté poniendolo asi:
Insert Into OpenQuery(LINKSERVER,'Select '''VALOR1'',VALOR2)

Y me da error...
Donde le especifico la tabla?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #8 (permalink)  
Antiguo 13/10/2004, 16:54
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Viendo lo que te funcionó se me ocurre algo del tipo:

INSERT INTO OpenQuery(LINKSERVER,'SELECT * FROM tabla') AS tabla VALUES ('jeje', 'juju')

Aunque nunca lo he intentado (los linked servers los hago unicamente para SELECTs)

Por otro lado... Para que necesitas acceso a indices en un Insert?. Puedes usar el nombre qualificado tradicional (server.db.dueño.tabla)
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #9 (permalink)  
Antiguo 14/10/2004, 06:03
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Cita:
Por otro lado... Para que necesitas acceso a indices en un Insert?. Puedes usar el nombre qualificado tradicional (server.db.dueño.tabla)
Es que hace los insert muy, muy lento. Aunque tengo entendido que para los insert no se necesitan índices, porque es solo agregar uno o varios registros. Pero, como dije anteriormente, lo hace muy lento el insert, bueno todo con server.db.dueño.tabla es super archi lento.

Ahora pruebo la idea que enviaste, y en un rato te cuento.
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #10 (permalink)  
Antiguo 14/10/2004, 06:24
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Estuve probando:

Código:
INSERT INTO OpenQuery(SAP,'Select COD_IND,DIRECCION,DESCRIPCION,DIA,MES,NOMBRE_MES,ANO,STANDARD,MALO,REGULAR,BUENO from zIndicador 
as values (8,''OPERACIONES'',''HORAS,EXTRAS,(%,DE,LA,NÓMINA)'',30,09,''SEP'',2004,16.00,16.88,16.24,15.76)')
Server: Msg 170, Level 15, State 1, Line 2
Line 2: Incorrect syntax near ')'.



Código:
INSERT INTO OpenQuery(SAP,'Select COD_IND,DIRECCION,DESCRIPCION,DIA,MES,NOMBRE_MES,ANO,STANDARD,MALO,REGULAR,BUENO from zIndicador') 
as values  ('8,''OPERACIONES'',''HORAS,EXTRAS,(%,DE,LA,NÓMINA)'',30,09,''SEP'',2004,16.00,16.88,16.24,15.76)')
Server: Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'as'.



Código:
INSERT INTO OpenQuery(SAP,'Select COD_IND,DIRECCION,DESCRIPCION,DIA,MES,NOMBRE_MES,ANO,STANDARD,MALO,REGULAR,BUENO
from zIndicador') as  zIndicador values  ('8,''OPERACIONES'',''HORAS,EXTRAS,(%,DE,LA,NÓMINA)'',30,09,''SEP'',2004,16.00,16.88,16.24,15.76)')
Server: Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'as'.



Código:
INSERT INTO OpenQuery(SAP,'Select * from zIndicador') 
as  zIndicador values  ('8,''OPERACIONES'',''HORAS,EXTRAS,(%,DE,LA,NÓMINA)'',30,09,''SEP'',2004,16.00,16.88,16.24,15.76)')
Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'as'.

Yo creo que estamos más cerca de la solución, pero aún no caigo que le está faltando ?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #11 (permalink)  
Antiguo 14/10/2004, 08:55
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Prueba ahora de ésta manera:

Cita:
INSERT INTO OPENQUERY(SAP,'SELECT * FROM oracle.Tabla')
(Field1, Field2,...)
SELECT Field1, Field2,...
FROM Tabla
  #12 (permalink)  
Antiguo 14/10/2004, 09:47
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Funciona!!!, Funciona!!!

El único que nos falta es el Update. A ver Rootk, cómo lo pongo?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #13 (permalink)  
Antiguo 14/10/2004, 15:14
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Hmmm, como ejercicio yo tambien participo:
Código:
UPDATE query
SET query.field1 = tabla.field1,
	query.field2 = tabla.field2
FROM OPENQUERY(SAP,'SELECT * FROM oracle.Tabla') AS query
	INNER JOIN tabla
		ON query.id = tabla.id
Que tal me fue?
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #14 (permalink)  
Antiguo 16/10/2004, 07:08
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Mithrandir, no lo logro adaptar para ver si me funciona. me da error.
Cómo le especifico el Where Condition?

__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #15 (permalink)  
Antiguo 18/10/2004, 15:04
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Segun yo sería con algo como:
Código:
UPDATE query
SET query.field1 = tabla.field1,
	query.field2 = tabla.field2
FROM OPENQUERY(SAP,'SELECT * FROM oracle.Tabla') AS query
	INNER JOIN tabla
		ON query.id = tabla.id
WHERE tabla.campo = 'filtro' OR query.otrocampo = 'otro_filtro'
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #16 (permalink)  
Antiguo 19/10/2004, 06:18
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Ese INNER JOIN me confunde y el alias query.

Estoy intentando hacerlo un poco más sencillo y puse:

Código:
UPDATE query SET query.Cod_Ind = 7.5 FROM OPENQUERY(DESARROLLO,
'Select * from ZINDICADOR') AS query WHERE query.Cod_Ind = 7
Pero me da el siguiente error:
Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'query'.

Realmente no entiendo tu lógica Mithrandir...
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #17 (permalink)  
Antiguo 19/10/2004, 14:32
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Quiza no la entiendes por que no has utilizado nunca un UPDATE de esa manera, cuando yo lo vi tampoco lo hice, la idea en que se basa es:
Código:
UPDATE t1
SET t1.campo = t2.campo
FROM t1 INNER JOIN t2
ON t1.llave = t2.llave
WHERE t2.llave = 'algun filtro'
Analiza como se hace, el resto es simplemente reemplazar el "t1" por "OPENQUERY(....)"

Aunque si lo que yo puse funcionara tambien debería de funcionar lo que intentaste tu.... esperemos a ver si a RootK se le ocurre algo
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #18 (permalink)  
Antiguo 20/10/2004, 06:50
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Mi pregunta es, por qué utilizas INNER JOIN? solo para mostrar que se puede hacer un update entrelazando tablas o es así que tengo que hacerlo con el OpenQuery?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #19 (permalink)  
Antiguo 20/10/2004, 14:36
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Ahhh, sí, es por que en el ejemplo de RootK que dijiste que te funcionó él involucra otra tabla. Por eso yo traté de armar un ejemplo analogo para el Update.

Simplemente por eso.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #20 (permalink)  
Antiguo 20/10/2004, 15:15
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Entonces cómo lo harías para una sola tabla?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #21 (permalink)  
Antiguo 21/10/2004, 16:03
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Con algo como:
Código:
UPDATE OPENQUERY(DESARROLLO,'Select * from ZINDICADOR') AS query 
SET Cod_Ind = 7.5
WHERE Cod_Ind = 7
o quiza algo como:
Código:
UPDATE query 
SET query.Cod_Ind = 7.5 
FROM (SELECT * 
	FROM OPENQUERY(DESARROLLO,'Select * from ZINDICADOR') AS query 
	WHERE query.Cod_Ind = 7)
Pero no apostaría nada
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #22 (permalink)  
Antiguo 22/10/2004, 06:51
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Eureca!!! Funcionó!!!

Me funcionó el primero cuando le quité el AS:
Código:
UPDATE OPENQUERY(DESARROLLO,'Select * from ZINDICADOR') 
SET Cod_Ind = 7
WHERE Cod_Ind = 7.5


Muchas gracias!!!
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #23 (permalink)  
Antiguo 22/10/2004, 16:16
 
Fecha de Ingreso: diciembre-2003
Ubicación: WWW
Mensajes: 98
Antigüedad: 20 años, 4 meses
Puntos: 0
Wao!!! Qué chévere está esto. Sugiero que este post sea parte de un FAQ. Con openquery sólo había hecho selects y tal como dijo RsOFT, los openquery son más rápidos. Ahora con estas soluciones que han brindado de hacer updates, inserts y deletes, se le facilita la vida a una para cualquier otro proceso...

Muchísimas gracias por sus tan adecuados razonamientos caballeros ;)....
__________________
"No nos atrevemos a muchas cosas porque son difíciles, pero son difíciles porque no nos atrevemos a hacerlas" :si:

Séneca
  #24 (permalink)  
Antiguo 25/10/2004, 11:58
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Que bueno que funcionó

Felicidades por tu paciencia rSOft, es algo que no muchos tienen
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #25 (permalink)  
Antiguo 25/10/2004, 14:08
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Gracias!!!
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #26 (permalink)  
Antiguo 17/04/2008, 08:48
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Re: Cómo hacer un Insert a un LiskServer por OpenQuery?

Buenos días Foristas:

Este tema en particular me ayuda en varios aspectos, pero respecto al Insert con OpenQuery me arroja el siguiente error:
Código:
Mens. 7321, Nivel 16, Estado 2, Línea 1
An error occurred while preparing the query "SELECT * FROM ZURICHGC_DESAR.ZCC_USUARIO" for execution against OLE DB provider "MSDAORA" for linked server "ZURICHGC_DESAR".
Alguien sabe por que?
  #27 (permalink)  
Antiguo 26/11/2008, 14:52
 
Fecha de Ingreso: octubre-2007
Ubicación: Guatemala
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Cómo hacer un Insert a un LiskServer por OpenQuery?

Los Felicito!!! ...
la verdad es un post muy bueno ...
yo tambien soy primeriso en esto de los linked servers ...XD
pero ahora yo estoy tratando de ejecutar un store procedure que esta en el oracle ... mandandole los datos desde SQL con las variables que tengo ....

Les cuento:
yo necesito pasar unos datos contables de un sistema que esta en SQL a ORACLE ...
y lo que hice fue crear un cursor con los datos que necesito (para poder usar el fetch, ya que es de linea en linea que necesito mandar los datos.)

Porque mando los datos al store procedure de oracle ... y este lo ejecuta para ingresarlos a una tabla de ORACLE ...


Pero he buskdo en la web y no he encontrado nada parecido a lo que quiero hacer ... o mas bien a lo que debo hacer ...


Si alguien me puediera ayudar se lo agradeceria mucho ... GRACIAS.
  #28 (permalink)  
Antiguo 17/02/2010, 13:43
 
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 12
Antigüedad: 16 años
Puntos: 0
Exclamación Respuesta: Cómo hacer un Insert a un LiskServer por OpenQuery?

Hola a todos,

Necesito hacer un UPDATE pero con un campo variable algo mas o menos asi.
el servidor ya esta vinculado con conexion ya probada.. y tengo algo mas o menos asi.

Declare @ID_EXP numeric (18)
Declare @PLAZA varchar(50)
declare @PLACA varchar(10)
DECLARE @NUM_PLAZA_SGPT varchar(255)
DECLARE @NUM_MIC varchar(50)

DECLARE @sqlQuery VARCHAR(8000)
DECLARE @finalQuery VARCHAR(8000)

SET @ID_EXP = (Select codigo_activo From Inserted)
SET @PLAZA = (select REPLACE(plaza_activo,'-','') FROM inserted)
SET @PLACA = (select p_camion_activo FROM inserted)
SET @MIC = (select mic_activo FROM inserted)

SET @sqlQuery = 'SELECT ID_EXPEDIENTE_PUERTO FROM SGPT_PRODUCCION.SGPT_EXPEDIENTES_PUERTO WHERE NUM_MIC = ' +''''''''+ @MIC + +''''''''

SET @finalQuery = 'SELECT * FROM OPENQUERY(SGPT_TESTING,' + '''' + @sqlQuery + '''' + ')'

SELECT @finalQuery
EXEC(@finalQuery)


SELECT @QUERY_NUM_SGPT = 'SELECT * FROM OPENQUERY(SGPT_TESTING, ''SELECT ID_EXPEDIENTE_PUERTO FROM SGPT_PRODUCCION.SGPT_EXPEDIENTES_PUERTO WHERE NUM_MIC = ''''' + @MIC + ''''''')'
EXEC (@QUERY_NUM_SGPT)

BEGIN

SET NOCOUNT ON;

INSERT INTO tabla_sga
(id_expediente_sga, serie_plaza_sga, placa_tracto_sga, mic_sga, num_exp_sgpt)
VALUES (@ID_EXP, @PLAZA, @PLACA, @MIC, @QUERY_NUM_SGPT)


UPDATE OPENQUERY (SGPT_TESTING, 'SELECT
SET ID_EXPED_PUERTO = @NUM_EXP_SGPT
WHERE (NUM_PLAZA = @PLAZA))

END

El cuento es que si lo hago con valores 'Algo' me lo reconoce... el problema parecen ser las variables @algo

Cualquier ayuda se agradecerá!...

Saludos.
  #29 (permalink)  
Antiguo 22/04/2010, 18:35
 
Fecha de Ingreso: abril-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Respuesta: Cómo hacer un Insert a un LiskServer por OpenQuery?

Hola que tal, les comento que tengo un problema con la conexion de MySQL a SQL 2005, no puedo consumir registros de MySQL en SQL 2005, me arroja error cuando la consulta tiene datos, por ejemplo si en una tabla la consulta me devuelve "null" regresa todos los campos pero si tiene datos me manda un error de tipo-------->

Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "XXXXX".


el ODBC Data Source Administrator segun yo lo tengo bien me trae las consultas y todo, donde creo qque anda mal es en el tipo de datos de MySQL a SQL 2005 hay algun problema y no c que sea..........

saludos.......... ya me avente un rato en eso y no logro ver el error....
  #30 (permalink)  
Antiguo 16/08/2012, 16:02
 
Fecha de Ingreso: agosto-2012
Mensajes: 1
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Cómo hacer un Insert a un LiskServer por OpenQuery?

Hola.

hice la insersion desde sql para oracle y me funciono a la perfecion.

INSERT INTO OPENQUERY(conexion,'SELECT * FROM tablaoracle')
(codempresa,Cod_Cliente,GrupoFactura,NombreGrupo,N ombreCliente,Direccion,nit,telefono,EncabezadoGrup o,TipoDetalle,PieDetalle,Ciclo,Ejecutivo,TipoClien te,ClienteConta,GrupoContable,Activo,Leyenda)
SELECT codempresa,Cod_Cliente,GrupoFactura,NombreGrupo,No mbreCliente,Direccion,nit,telefono,EncabezadoGrupo ,TipoDetalle,PieDetalle,Ciclo,Ejecutivo,TipoClient e,ClienteConta,GrupoContable,Activo,Leyenda
FROM tablasql
where cod_cliente=12
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 05:34.