Bei Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Frage:
Ich habe eine Access DB und eine SQL, in der Informationen gespeichert werden. Unter den Linked Server-Features von SQL 7.0 habe ich zugelassen, dass SQL Access DB nur als eine andere Datenbank SQL kann. Außerdem habe ich eine gespeicherte Prozedur geschrieben, mit der Datensätze aus Access DB in die Tabelle SQL werden. Wird von ISQL/Query Analyzer ausgeführt, wird die gespeicherte Prozedur ausgeführt und funktioniert ordnungsgemäß. Das Aufrufen der gespeicherten Prozedur über Dexterity führt zu der folgenden Fehlermeldung von SQL Server: Für heterogene Abfragen müssen die ANSI_NULLS- und ANSI_WARNINGS-Optionen für die Verbindung
festgelegt werden. Dadurch wird eine konsistente Abfragesemantik sichergestellt. Aktivieren Sie diese Optionen, und wählen Sie dann Ihre Abfrage aus. Kann ich diese gespeicherte Prozedur sogar über Dexterity ausführen?


Antwort:
Ja, aber wir müssen die gespeicherte Prozedur geringfügig ändern. Der Grund dafür ist, dass diese Optionen deaktiviert werden müssen, damit SQL-Tabellen ordnungsgemäß in Dexterity gelesen werden können, sodass der Aufruf von gespeicherten Prozeduren in Dexterity diese Befehle vor dem Ausführen der gespeicherten Prozedur ausstellt. Der Benutzer muss sicherstellen, dass Daten, die gegen diese Regeln verstoßen, nicht in die Tabelle SQL werden. Im folgenden Beispiel ist die table_access die Access-Tabelle. Die table_test ist die SQL Tabelle.

          
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



Wir können die gespeicherte Prozedur ändern, um unsere Warnungen wie hier zu ändern:

          
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 diesem Fall erbt die gespeicherte Prozedur die Attribute des -Aufrufs. In diesem Fall ruft Dexterity theaccess_tableprocedure auf, wodurch das -ANSI_NULLS & ANSI_WARNINGS aktiviert wird, anschließend die echte gespeicherte Prozedur aufruft und die Parameter übergibt.


Dieser Artikel wurde unter TechKnownow document ID:10011 (Dokument-ID:10011) behandelt.

Bekannte Inhalte von TechKnow

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?
Wenn Sie auf "Absenden" klicken, wird Ihr Feedback zur Verbesserung von Produkten und Diensten von Microsoft verwendet. Ihr IT-Administrator kann diese Daten sammeln. Datenschutzbestimmungen.

Vielen Dank für Ihr Feedback!

×