Log på med Microsoft
Log på, eller opret en konto.
Hej
Markér en anden konto.
Du har flere konti
Vælg den konto, du vil logge på med.

Spørgsmål:
Jeg har en Access DB og en SQL, der lagrer oplysninger. Under linked server-funktionerne i SQL 7.0 har jeg tilladt SQL at se Access DB som en anden SQL-database. Jeg har også skrevet en gemt procedure, der kopierer poster fra Access DB til SQL tabel. Den lagrede procedure kører og fungerer korrekt, når den kører fra ISQL/Query Analyzer. Når du kalder den gemte procedure fra Dexterity, vises følgende fejlmeddelelse fra SQL Server: Heterogene forespørgsler kræver, at indstillingerne ANSI_NULLS og
ANSI_WARNINGS angives for forbindelsen. Dette sikrer ensartet forespørgselssemantik. Aktivér disse indstillinger, og affrys derefter forespørgslen igen. Kan jeg endda køre denne lagrede procedure fra Dexterity?


Svar:
Ja, men vi er nødt til at ændre den lagrede procedure en smule. Problemet skyldes, at for at kunne læse SQL tabeller korrekt i Dexterity skal disse indstillinger være slået fra, så opkald med lagrede procedurer i Dexterity udsteder disse kommandoer, før du kører den lagrede procedure. Brugeren skal sørge for, at data, der overtræder disse regler, ikke introduceres i SQL tabel. I eksemplet nedenfor er table_access adgangstabellen. Tabellen table_test den 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



Vi kan ændre den lagrede procedure for at indstille vores advarsler på denne måde:

          
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



I dette tilfælde nedarver den lagrede procedure attributterne for det, der kalder den. I denne situation ringer Dexterity til theaccess_tableprocedure, der slår skærmen ANSI_NULLS & ANSI_WARNINGS og derefter kalder den rigtige gemte procedure og passerer i vores parametre.


Denne artikel var TechKendt dokument-id:10011

TechKendt indhold

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.

Communities hjælper dig med at stille og besvare spørgsmål, give feedback og høre fra eksperter med omfattende viden.

Var disse oplysninger nyttige?

Hvor tilfreds er du med kvaliteten af sproget?
Hvad påvirkede din oplevelse?
Når du trykker på Send, bliver din feedback brugt til at forbedre Microsoft-produkter og -tjenester. Din it-administrator kan indsamle disse data. Erklæring om beskyttelse af personlige oplysninger.

Tak for din feedback!

×