Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

Pregunta:
Tengo una base de datos de Access y una SQL que almacenan información. En las características de Linked Server de SQL 7.0, he permitido SQL la base de datos de Access como otra base SQL datos. También he escrito un procedimiento almacenado que copia los registros de la base de datos de Access a la SQL tabla. Al ejecutarse desde ISQL/Query Analyzer, el procedimiento almacenado se ejecuta y funciona correctamente. Llamar al procedimiento almacenado desde Dexterity genera el siguiente mensaje de error desde SQL Server: Las consultas heterogéneos requieren que se establezcan las opciones ANSI_NULLS y ANSI_WARNINGS para la
conexión. Esto garantiza una semántica de consulta coherente. Habilite estas opciones y, a continuación, vuelva a emitir la consulta. ¿Puedo incluso ejecutar este procedimiento almacenado desde Dexterity?


Respuesta:
Sí, pero tendremos que modificar ligeramente el procedimiento almacenado. El motivo por el que se produce un error es que, para leer correctamente SQL tablas en Dexterity, esas opciones deben desactivarse, por lo que llamar a procedimientos almacenados en Dexterity emite esos comandos antes de ejecutar el procedimiento almacenado. El usuario debe asegurarse de que los datos que infringen estas reglas no se introducen en la SQL tabla. En el ejemplo siguiente, el table_access es la tabla de access. El table_test es la SQL tabla.

          
if exists (select * from sysobjects where id =

object_id('dbo.access_update') and sysstat & 0xf = 4)

drop procedure dbo.access_update

GO


create procedure dbo.access_update @O_SQL_Error_State int = NULL output


as


INSERT INTO access_table ( DOCNUMBR, DOCAMNT )

SELECT access_test.DOCNUMBR, access_test.DOCAMNT

FROM access_test


GO



Podemos modificar el procedimiento almacenado para establecer nuestras advertencias de esta forma:

          
if exists (select * from sysobjects where id =

object_id('dbo.access_update') and sysstat & 0xf = 4)

drop procedure dbo.access_update

GO


create procedure dbo.access_update @O_SQL_Error_State int = NULL output


as


set ANSI_NULLS ON

SET ANSI_WARNINGS ON


exec access_table2 ( DOCNUMBR, DOCAMNT )


GO



En este caso, el procedimiento almacenado hereda los atributos de lo que lo llama. Para esta situación, Dexterity llama theaccess_tableprocedure activa el ANSI_NULLS & ANSI_WARNINGS y, a continuación, llama al procedimiento almacenado real y pasa en nuestros parámetros.


Este artículo fue TechKnowledge Document ID:10011

Contenido de TechKnowledge

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×