Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

Pergunta:
tenho um Access DB e uma SQL que armazenam informações. Nos recursos do Servidor Vinculado do SQL 7.0, permiti que SQL o Access DB como apenas outro banco de dados SQL. Também redigi um procedimento armazenado que copia registros do Access DB para a SQL. Em execução do ISQL/Analisador de Consultas, o procedimento armazenado é executado e funciona corretamente. Chamar o procedimento armazenado de Destreza produz a seguinte mensagem de erro SQL Server: as consultas heterogêneas exigem que as opções ANSI_NULLS e ANSI_WARNINGS sejam definidas para a
conexão. Isso garante uma semântica de consulta consistente. Habilita essas opções e reemita sua consulta. Posso até mesmo executar esse procedimento armazenado de Destreza?


Resposta:
Sim, mas vamos ter que modificar ligeiramente o procedimento armazenado. O motivo pelo qual ele falha é que, para ler SQL tabelas adequadamente em Destreza, essas opções devem ser desligadas para que os procedimentos armazenados em Destreza emitam esses comandos antes de executar o procedimento armazenado. O usuário deve certificar-se de que os dados que violam essas regras não são introduzidos na SQL tabela. No exemplo abaixo, o table_access é a tabela de acesso. O table_test é a SQL.

          
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 o procedimento armazenado para definir nossos avisos desta 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



Nesse caso, o procedimento armazenado herda os atributos do que o chama. Para essa situação, a Destreza chama theaccess_tableprocedure que aciona o ANSI_NULLS & ANSI_WARNINGS e, em seguida, chama o procedimento armazenado real e passa em nossos parâmetros.


Este artigo foi TechKnowledge Document ID:10011

Conteúdo techknowledge

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×