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.

Preguntas similare

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.


Respuesta Responder a este mensaje
#2 Isaías
10/12/2004 - 01:34 | Informe spam
Hola Maxi

Estoy lo he solucionado, generarando mi STORE PROCEDURE
dentro del Query Analyzer y como primeras lineas

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

CREATE PROCEDURE pr_MyProcedure..todo lo demas

Lo ejecuto y no hay problema.

Para posteriores modificaciones sobre el mismo
procedimiento, lo hago mediante ALTER PROCEDURE y no he
tenido problema alguno.
Respuesta Responder a este mensaje
#3 MAXI
10/12/2004 - 01:40 | Informe spam
Sip, eso puede ser una solucion, pero el Sql-Dinamico en el medio puede
tirar todo :(




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"Isaías" escribió en el mensaje
news:2a4f01c4de4f$f6e9da00$
Hola Maxi

Estoy lo he solucionado, generarando mi STORE PROCEDURE
dentro del Query Analyzer y como primeras lineas

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

CREATE PROCEDURE pr_MyProcedure..todo lo demas

Lo ejecuto y no hay problema.

Para posteriores modificaciones sobre el mismo
procedimiento, lo hago mediante ALTER PROCEDURE y no he
tenido problema alguno.
Respuesta Responder a este mensaje
#4 Alejandro Flores Ocaña
11/12/2004 - 00:31 | Informe spam
Gracias Maxi. lo voy a probar y les informo el resultado

"Maxi" escribió en el mensaje
news:
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.
>
>


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