Se connecter avec Microsoft
S'identifier ou créer un compte.
Bonjour,
Sélectionnez un autre compte.
Vous avez plusieurs comptes
Choisissez le compte avec lequel vous voulez vous connecter.

Question :
J’ai une table de données Access et une table SQL qui stockent des informations. Sous les fonctionnalités du serveur lié SQL 7.0, j’ai autorisé SQL à voir la base de données Access comme n’SQL données. J’ai également rédigé une procédure stockée qui copie les enregistrements de la table de données Access vers la table SQL données. S’exécutant à partir d’ISQL/Query Analyzer, la procédure stockée s’exécute et fonctionne correctement. L’appel de la procédure stockée à partir de Dextérité produit le message d’erreur suivant de SQL Server : les requêtes hétérogènes nécessitent que les options ANSI_NULLS et ANSI_WARNINGS soient définies pour la
connexion. Cela garantit une sémantique de requête cohérente. Activez ces options, puis réissuez votre requête. Puis-je même exécuter cette procédure stockée à partir de Dextérité ?


Réponse :
Oui, mais nous allons devoir modifier légèrement la procédure stockée. La raison pour laquelle l’opération échoue est que pour lire correctement les tables de dextérité, ces options doivent être désactivées de sorte que l’appel des procédures stockées dans la dextérité exécute ces commandes avant d’utiliser la procédure stockée. SQL L’utilisateur doit s’assurer que les données qui enfreignent ces règles ne sont pas introduites dans la table SQL données. Dans l’exemple ci-dessous, la table_access est la table Access. La table_test est la table SQL tableau.

          
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



Nous pouvons modifier la procédure stockée pour définir nos avertissements comme ceci :

          
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



Dans ce cas, la procédure stockée hérite des attributs de ce qu’elle appelle. Dans ce cas, la dextérité appelle theaccess_tableprocedure qui met en ANSI_NULLS & ANSI_WARNINGS puis appelle la procédure stockée réelle et passe dans nos paramètres.


Cet article était TechKnowknow Document ID:10011

Contenu TechKnow en ligne

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?
En cliquant sur Envoyer, vos commentaires seront utilisés pour améliorer les produits et services de Microsoft. Votre administrateur informatique sera en mesure de collecter ces données. Déclaration de confidentialité.

Nous vous remercions de vos commentaires.

×