Environnement d'exécution des lots d'instructions et MARS

Dans Microsoft SQL Server 2005, vous pouvez configurer les connexions de manière à prendre en charge MARS (Multiple Active Result Sets). Un environnement d'exécution de lot d'instructions est associé par défaut à ces connexions.

L'environnement d'exécution des lots d'instructions est constitué des composants suivants :

  • Valeurs de l'option SET (notamment ANSI_NULLS, DATE_FORMAT, LANGUAGE et TEXTSIZE)
  • Contexte de sécurité (rôle d'utilisateur ou d'application de l'environnement d'exécution des lots d'instructions)
  • Contexte de base de données (base de données actuelle de l'environnement)
  • Fonctions d'état d'exécution (notamment @@ERROR, @@ROWCOUNT, @@FETCH_STATUS et @@IDENTITY)
  • Tables temporaires de niveau supérieur

Chaque nouveau lot d'instructions dont l'exécution commence pour une connexion spécifique reçoit une copie de l'environnement par défaut. Chaque fois qu'un lot d'instructions est exécuté, toutes les modifications apportées à l'environnement d'exécution se limitent à ce lot spécifique. Une fois l'exécution achevée, les paramètres d'exécution sont copiés dans l'environnement par défaut. Dans le cas où un lot d'instructions unique émet plusieurs commandes à exécuter de façon séquentielle, le comportement observé est le même que celui exposé par les connexions impliquant des clients ou des serveurs dans les versions précédentes de SQL Server.

Dans les versions précédentes de SQL Server, seul un lot d'instructions pouvait être exécuté à un moment donné. Par conséquent, les modifications apportées à l'environnement de lot d'instructions par un lot d'instructions étaient visibles par tous les lots ultérieurs.

Dans le cas des procédures stockées et des fonctions, l'environnement par défaut d'un lot d'instructions est l'environnement par défaut de la connexion mais, à la fin de l'exécution, les modifications ne sont pas copiées dans l'environnement d'exécution de lots d'instructions par défaut de la connexion.

Par exemple, supposons l'exécution suivante de deux lots d'instructions :

--First Batch
SET ARITHABORT ON
SET ANSI_WARNINGS ON
SELECT 1/0
GO
--Second Batch
SET ARITHABORT OFF
SET ANSI_WARNINGS OFF
SELECT 1/0
GO

Supposons également que MARS soit activé pour la connexion avec utilisation de l'environnement d'exécution par défaut et attribution à SET ARITHABORT de la valeur OFF et à SET ANSI_WARNINGS de la valeur ON.

Si les deux lots d'instructions sont soumis simultanément pendant la connexion, leur exécution se base sur les paramètres de l'environnement de lot d'instructions par défaut de la connexion. Pendant l'exécution, leurs environnements sont délimités afin que les modifications d'environnement apportées dans un lot d'instructions n'affectent pas les modifications apportées dans l'autre lot. À la fin de l'exécution d'un lot d'instructions, celui-ci copie l'environnement obtenu dans l'environnement par défaut de la connexion. L'environnement par défaut obtenu pour la connexion dépend du dernier lot d'instructions à exécuter. Il s'agira de l'environnement utilisé par le prochain lot d'instructions exécuté.

Voir aussi

Autres ressources

Using Multiple Active Result Sets (MARS)

Aide et Informations

Assistance sur SQL Server 2005