Error en OPENQUERY con servidores vinculados

09/12/2004 - 21:59 por Alejandro Flores Ocaña | Informe spam
Que tal comunidad, tengo un problema, tengo varios Store Procedures
trabajando, pero tengo problemas en este, me manda lo siguiente:

UPDATE bitacora_proceso SET concentro = (SELECT * FROM OPENQUERY(t001,
'SELECT concentro = case isnull(cve_sucursal,0) when 0 then 0 else 1 end
FROM OPERACION_CAJA where CONCENTRO_CAJA = 0 group by cve_sucursal')) WHERE
cve_sucursal = '001'

Servidor: mensaje 7405, nivel 16, estado 1, línea 1
Las consultas heterogéneas requieren que se establezcan las opciones
ANSI_NULLS y ANSI_WARNINGS de la conexión. Así se asegura una semántica de
consulta coherente. Active estas opciones y ejecute de nuevo la consulta.

Ya puse lo siguiente:

SET ANSI_NULLS on
SET ANSI_PADDING on
SET ANSI_WARNINGS on
SET QUOTED_IDENTIFIER on

T001 > son servidores vinculados, estos los configure con una cadena de
conección tipo OLEDB

Desde el Query Analizer corre sin problemas, pero cuando lo meto a un Store
manda el error que les muestro. El Store que se ejecuta armando de una
cadena y es así:

SET @strSQL = 'UPDATE bitacora_proceso SET concentro = '
SET @strSQL = @strSQL + '(SELECT * '
SET @strSQL = @strSQL + " FROM OPENQUERY(t" + @idtienda + ", 'SELECT
concentro = case isnull(cve_sucursal,0) when 0 then 0 else 1 end FROM
OPERACION_CAJA where CONCENTRO_CAJA = 0 group by cve_sucursal'))"
SET @strSQL = @strSQL + ' WHERE cve_sucursal = ' + "'" + @idtienda + "'"
print @strSQL

EXEC (@strSQL)

Alguna idea de como solucionar esto.

gracias de antemano.
 

Leer las respuestas

#1 Maxi
09/12/2004 - 22:07 | Informe spam
Hola, eso sucede porque estas usando SQL-dinamico :( en principio tratariaq
de evitar el uso de Sql-Dinamico, pero si no tenes otra opcion vas a tener
que mandar los SET dentro de la cadena del SQL dinamico mas el query


Salu2
Maxi


"Alejandro Flores Ocaña" escribió en el mensaje
news:%
Que tal comunidad, tengo un problema, tengo varios Store Procedures
trabajando, pero tengo problemas en este, me manda lo siguiente:

UPDATE bitacora_proceso SET concentro = (SELECT * FROM OPENQUERY(t001,
'SELECT concentro = case isnull(cve_sucursal,0) when 0 then 0 else 1 end
FROM OPERACION_CAJA where CONCENTRO_CAJA = 0 group by cve_sucursal'))
WHERE
cve_sucursal = '001'

Servidor: mensaje 7405, nivel 16, estado 1, línea 1
Las consultas heterogéneas requieren que se establezcan las opciones
ANSI_NULLS y ANSI_WARNINGS de la conexión. Así se asegura una semántica de
consulta coherente. Active estas opciones y ejecute de nuevo la consulta.

Ya puse lo siguiente:

SET ANSI_NULLS on
SET ANSI_PADDING on
SET ANSI_WARNINGS on
SET QUOTED_IDENTIFIER on

T001 > son servidores vinculados, estos los configure con una cadena de
conección tipo OLEDB

Desde el Query Analizer corre sin problemas, pero cuando lo meto a un
Store
manda el error que les muestro. El Store que se ejecuta armando de una
cadena y es así:

SET @strSQL = 'UPDATE bitacora_proceso SET concentro = '
SET @strSQL = @strSQL + '(SELECT * '
SET @strSQL = @strSQL + " FROM OPENQUERY(t" + @idtienda + ", 'SELECT
concentro = case isnull(cve_sucursal,0) when 0 then 0 else 1 end FROM
OPERACION_CAJA where CONCENTRO_CAJA = 0 group by cve_sucursal'))"
SET @strSQL = @strSQL + ' WHERE cve_sucursal = ' + "'" + @idtienda + "'"
print @strSQL

EXEC (@strSQL)

Alguna idea de como solucionar esto.

gracias de antemano.


Preguntas similares