Acceder a tablas fox como servidor vinculado

30/08/2006 - 15:19 por Hugo Gsell | Informe spam
Hola... tengo unas tablas fox locales en el servidor
Utilizando la herramienta administrativa de sql server 2000 creo un servidor
vicnulado lloamado JET4.
Inclusive puedo desde el arbol de dicho servidor ver las tablas del
directorio...
Luego desde el analizador de consultas de sql server 2000 escribo el
siguiente comando>
SELECT * FROM openquery(JET4,'select * FROM Afiliado WHERE
LEFT(NOMBRE,6)="ZURITA"')
como para probar y ohhh buenisimo... me devuelve las filas de mi tabla fox
con la condicion especificada.
Ahora viene el problema, decido crear un proc. almacenado para que a traves
de parametros logre que me devuelva los datos que necesito.
Pero como para probar COPIO LA CONSULTA QUE ESTA ARRIBA (que funciona desde
el analizador), hago comprobar sintaxis y me da ok... hago aceptar (para
gurdar) y da el siguiente error:
Error 7405> Las consultas heterogeneas requieren que se establezcan las
opciones ANSI?NULLS y ANSI_WARNIGS de la conexion. Asi se asegura una
semantica de consulta coherente. Active estas opciones y ejecute de nuevo la
consulta.
Entonces desde el administrador corporativo voy a propiedades de mi base de
datos... hago boton derecho => propiedades ... luego en la pestaña
conexiones y en la lista tildo las opciones ANSI WARNING y ANSI nulls,
obteniendo similares resultados al intentar grabar el procedimiento
almacenado. abajo adnunto copia textual de mi procedimiento alamacenado
QUE HAGO? COMO LO HAGO?
Desde ya muchas gracias

PROCEDIMIENTO ALAMACENADO

CREATE PROCEDURE [dbo].[RecuperaAfiliados]
@pNroAfiliado nvarchar,
@pNombreAfiliado nvarchar,
@NroRegsEncontrados smallint output
AS
SET NOCOUNT ON

DECLARE @error int
DECLARE @Ejecutar nvarchar
BEGIN
SET NOCOUNT ON;
IF @pNroAfiliado!=''
BEGIN
select * from openquery(JET4,'select * FROM Afiliado WHERE
LEFT(NOMBRE,6)="ZURITA"')
SELECT @error = @@ERROR, @NroRegsEncontrados = @@ROWCOUNT
END
END
RETURN @error
GO


Hugo A. Gsell
Sgo del Estero
Argentina
 

Leer las respuestas

#1 Maxi
31/08/2006 - 01:59 | Informe spam
Hugo, esos SET no los pongas en el servidor sino dentro del SP, dime si te
funciona :)



Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker
www.sqlgururs.org
Email:


"Hugo Gsell" wrote in message
news:
Hola... tengo unas tablas fox locales en el servidor
Utilizando la herramienta administrativa de sql server 2000 creo un
servidor vicnulado lloamado JET4.
Inclusive puedo desde el arbol de dicho servidor ver las tablas del
directorio...
Luego desde el analizador de consultas de sql server 2000 escribo el
siguiente comando>
SELECT * FROM openquery(JET4,'select * FROM Afiliado WHERE
LEFT(NOMBRE,6)="ZURITA"')
como para probar y ohhh buenisimo... me devuelve las filas de mi tabla fox
con la condicion especificada.
Ahora viene el problema, decido crear un proc. almacenado para que a
traves de parametros logre que me devuelva los datos que necesito.
Pero como para probar COPIO LA CONSULTA QUE ESTA ARRIBA (que funciona
desde el analizador), hago comprobar sintaxis y me da ok... hago aceptar
(para gurdar) y da el siguiente error:
Error 7405> Las consultas heterogeneas requieren que se establezcan las
opciones ANSI?NULLS y ANSI_WARNIGS de la conexion. Asi se asegura una
semantica de consulta coherente. Active estas opciones y ejecute de nuevo
la consulta.
Entonces desde el administrador corporativo voy a propiedades de mi base
de datos... hago boton derecho => propiedades ... luego en la pestaña
conexiones y en la lista tildo las opciones ANSI WARNING y ANSI nulls,
obteniendo similares resultados al intentar grabar el procedimiento
almacenado. abajo adnunto copia textual de mi procedimiento alamacenado
QUE HAGO? COMO LO HAGO?
Desde ya muchas gracias

PROCEDIMIENTO ALAMACENADO

CREATE PROCEDURE [dbo].[RecuperaAfiliados]
@pNroAfiliado nvarchar,
@pNombreAfiliado nvarchar,
@NroRegsEncontrados smallint output
AS
SET NOCOUNT ON

DECLARE @error int
DECLARE @Ejecutar nvarchar
BEGIN
SET NOCOUNT ON;
IF @pNroAfiliado!=''
BEGIN
select * from openquery(JET4,'select * FROM Afiliado WHERE
LEFT(NOMBRE,6)="ZURITA"')
SELECT @error = @@ERROR, @NroRegsEncontrados = @@ROWCOUNT
END
END
RETURN @error
GO


Hugo A. Gsell
Sgo del Estero
Argentina

Preguntas similares