Pitanje:
Imam Access DB i SQL koja skladišti informacije. Ispod funkcija povezanog servera u sistemu SQL 7.0 dozvolio sam da SQL Access DB vidi kao još SQL bazu podataka. Naveo sam i uskladištenu proceduru koja kopira zapise iz Access DB-a u SQL tabelu. Pokrećući iz ISQL/Query Analyzer, uskladištena procedura se pokreće i ispravno funkcioniše. Pozivanje uskladištene procedure iz funkcije Dexterity daje sledeću poruku o grešci od sistema SQL Server: Heterogeni upiti zahtevaju ANSI_NULLS i ANSI_WARNINGS opcije
povezivanja. Ovim se osigurava dosledna semantika upita. Omogućite ove opcije, a zatim ponovo koristite upit. Mogu li čak i da pokrenem ovu uskladištenu proceduru iz raznolikosti?
Odgovor:
Da, ali moramo neznatno da izmenimo uskladištenu proceduru. Razlog za neuspešno funkcionisanje je to što te opcije moraju da se isključe da bi se te opcije pravilno čitale SQL tako da procedure uskladištene u razmetljivosti te komande moraju da se isključe da bi one funkcionisale pre nego što se uskladišti procedura. Korisnik mora da se uverite da se podaci koji krše ova pravila ne uvode u SQL tabelu. U uzorku ispod, polje table_access je access tabela. Tabela table_test je SQL tabela.
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
Možemo da izmenimo uskladištenu proceduru da bismo postavili upozorenja na ovaj način:
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
U ovom slučaju, uskladištena procedura nasleđuje atribute onoga što je naziva. U ovoj situaciji, deteritet poziva theaccess_tableprocedure koji uključuje ANSI_NULLS & ANSI_WARNINGS a zatim poziva realnu uskladištenu proceduru i dodaje naše parametre.
Ovaj članak je techKnowledge Document ID:10011