Aanmelden met Microsoft
Meld u aan of maak een account.
Hallo,
Selecteer een ander account.
U hebt meerdere accounts
Kies het account waarmee u zich wilt aanmelden.

Vraag:
Ik heb een Access DB en een SQL tabel met gegevens. Onder de Linked Server-functies van SQL 7.0 heb ik SQL Access DB als gewoon een andere database SQL zien. Ik heb ook een opgeslagen procedure geschreven die records kopieert van de Access DB naar de SQL tabel. De opgeslagen procedure wordt uitgevoerd vanuit ISQL/Query Analyzer en werkt correct. Als u de opgeslagen procedure belt vanuit Dexterity, wordt het volgende foutbericht van SQL Server weergegeven: Voor heterogene query's moeten de ANSI_NULLS- en ANSI_WARNINGS-opties voor de verbinding worden
ingesteld. Dit zorgt voor consistente query-semantiek. Schakel deze opties in en pas de query opnieuw uit. Kan ik deze opgeslagen procedure zelfs uitvoeren vanuit Dexterity?


Antwoord:
Ja, maar we moeten de opgeslagen procedure enigszins wijzigen. De reden waarom het mislukt, is dat als u SQL tabellen goed wilt lezen in Dexterity, deze opties moeten worden uitgeschakeld, zodat het bellen van opgeslagen procedures in Dexterity deze opdrachten uitstelt voordat u de opgeslagen procedure uitstelt. De gebruiker moet ervoor zorgen dat gegevens die in strijd zijn met deze regels, niet in de tabel SQL worden ingevoerd. In het onderstaande voorbeeld is de table_access de access-tabel. De table_test is de SQL tabel.

          
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



We kunnen de opgeslagen procedure wijzigen om onze waarschuwingen zo in te stellen:

          
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



In dit geval neemt de opgeslagen procedure de kenmerken over van wat deze procedure noemt. Voor deze situatie wordt dexterity theaccess_tableprocedure waarmee de ANSI_NULLS & ANSI_WARNINGS wordt in- en gebeld en vervolgens de echte opgeslagen procedure wordt aanroepen en in onze parameters wordt doorgeslagen.


Dit artikel was TechKnowledge Document ID:10011

TechKnowledge-inhoud

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.

Was deze informatie nuttig?

Hoe tevreden bent u met de taalkwaliteit?
Wat heeft uw ervaring beïnvloed?
Als u op Verzenden klikt, wordt uw feedback gebruikt om producten en services van Microsoft te verbeteren. Uw IT-beheerder kan deze gegevens verzamelen. Privacyverklaring.

Hartelijk dank voor uw feedback.

×