Accedi con Microsoft
Accedi o crea un account.
Salve,
Seleziona un altro account.
Hai più account
Scegli l'account con cui vuoi accedere.

Domanda: Ho un database di Access e una tabella SQL
in cui sono archiviate le informazioni. Nelle caratteristiche di Linked Server di SQL 7.0, ho consentito a SQL di vedere il database di Access come un altro database SQL database. È stata anche scritta una stored procedure che copia i record dal database di Access alla SQL tabella. In esecuzione da ISQL/Query Analyzer, la stored procedure viene eseguita e funziona correttamente. La chiamata della stored procedure da Dexterity genera il messaggio di errore seguente da SQL Server: Le query eterogenee richiedono l'impostazione delle opzioni ANSI_NULLS e ANSI_WARNINGS per
la connessione. In questo modo si garantisce una semantica delle query coerente. Abilitare queste opzioni e quindi riemettere la query. È anche possibile eseguire questa stored procedure da Dexterity?


Risposta:
Sì, ma sarà necessario modificare leggermente la stored procedure. Il motivo per cui non riesce è che per leggere correttamente le tabelle di SQL in Dexterity, queste opzioni devono essere disattivate in modo che la chiamata alle stored procedure in Dexterity esegni questi comandi prima di eseguire la stored procedure. L'utente deve assicurarsi che i dati che violano queste regole non siano introdotti nella SQL tabella. Nell'esempio seguente l'table_access è la tabella di Access. La table_test è la SQL tabella.

          
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



È possibile modificare la stored procedure per impostare gli avvisi in questo modo:

          
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 questo caso, la stored procedure eredita gli attributi di ciò che la chiama. In questo caso, Dexterity chiama theaccess_tableprocedure che attiva il ANSI_NULLS & ANSI_WARNINGS quindi chiama la stored procedure reale e passa i parametri.


Questo articolo è stato ID documento TechKnowledge:10011

Contenuto techknowledge

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?
Premendo Inviare, il tuo feedback verrà usato per migliorare i prodotti e i servizi Microsoft. L'amministratore IT potrà raccogliere questi dati. Informativa sulla privacy.

Grazie per il feedback!

×