Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Întrebare:
Am un access DB și un tabel SQL tabel care stochează informații. Sub caracteristicile Linked Server ale SQL 7.0, am permis ca SQL access DB ca doar o altă bază de SQL date. De asemenea, am scris o procedură stocată care copiază înregistrările din baza de date Access în SQL tabel. Rulând din ISQL/Analizorul de interogare, procedura stocată rulează și funcționează corect. Apelarea procedurii stocate din Dexteritate generează următorul mesaj de eroare din SQL Server: Interogările eterogene necesită setarea opțiunilor ANSI_NULLS și ANSI_WARNINGS pentru
conexiune. Acest lucru asigură o semantică unitară a interogărilor. Activați aceste opțiuni, apoi reimiți interogarea. Pot chiar să rulez această procedură stocată din Dexteritate?


Răspuns:
Da, dar va trebui să modificăm ușor procedura stocată. Motivul pentru care nu reușește este că, pentru SQL citi corect tabelele din Dexteritate, aceste opțiuni trebuie să fie dezactivate, astfel încât procedurile stocate de apelare din Dexteritate să dea acele comenzi înainte de a rula procedura stocată. Utilizatorul trebuie să se asigure că datele care încalcă aceste reguli nu sunt introduse în SQL tabel. În eșantionul de mai jos, table_access este tabelul de acces. Tabelul table_test este 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



Putem modifica procedura stocată pentru a seta avertismentele cu privire la astfel:

          
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



În acest caz, procedura stocată moștenește atributele a ceea ce îl numește. Pentru această situație, Dexteritate apelează theaccess_tableprocedure care activează ANSI_NULLS & ANSI_WARNINGS, apoi apelează procedura stocată reală și transmite parametrii noștri.


Acest articol a fost TechKnowledge Document ID:10011

Conținut TechKnowledge

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×