Kérdés:
Van egy Access-adatbázisom és egy SQL, amely adatokat tárol. A SQL 7.0 Linked Server-funkciói között SQL az Access adatbázist más adatbázisként SQL látni. Ezenkívül egy tárolt eljárást is megírtam, amely a rekordokat az Access adatbázisból a SQL táblába másolja. Az ISQL/Query Analyzer eszközről futtatva a tárolt eljárás megfelelően fut és működik. A tárolt eljárás Dexteritásból való hívása a következő hibaüzenetet adja SQL Server: A ANSI_NULLS és a ANSI_WARNINGS beállításait meg kell állítani a
kapcsolathoz. Ez konzisztens lekérdezési szemantikai adatokat biztosít. Engedélyezze ezeket a beállításokat, majd újraadja a lekérdezést. Futtatható még ez a Dexterity-alkalmazásból tárolt eljárás?
Válasz: Igen, de a tárolt eljárást kissé
módosítani kell. Ennek az az oka, hogy az SQL-táblázatok megfelelő Dexteritásban való felolvasása érdekében ezeket a beállításokat ki kell kapcsolva, így a Dexterrel kapcsolatos híváseljárások a tárolt eljárást a tárolt eljárás futtatása előtt hibásan árolják. A felhasználónak meg kell győződnie arról, hogy a szabályokat megsértő adatokat nem vezették be a SQL táblába. Az alábbi példában a table_access access-tábla látható. A table_test a SQL táblázat.
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
Módosíthatjuk a tárolt eljárást, hogy az alábbihoz hasonló figyelmeztetéseket állítsunk be:
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
Ebben az esetben a tárolt eljárás annak az attribútumait örökli, amit az alkalmazásnak hív. Ilyen helyzetben a Dexterity felhívja theaccess_tableprocedure, amely bekapcsolja a ANSI_NULLS & ANSI_WARNINGS majd felhívja a valós tárolt eljárást, és továbbítja a paramétereket.
Ez a cikk a következő volt: TechKnowledge Document ID:10011