Lots d'instructions

Mis à jour : 5 décembre 2005

Un lot est un groupe d'instructions Transact-SQL qu'une application envoie simultanément à SQL Server 2005 en vue de leur exécution. SQL Server compile les instructions d'un lot en une unité exécutable unique, appelée « plan d'exécution ». Les instructions appartenant à un plan d'exécution sont ensuite exécutées simultanément.

Une erreur de compilation, comme une erreur de syntaxe, empêche la compilation du plan d'exécution. En conséquence, aucune instruction du lot n'est exécutée.

Une erreur au moment de l'exécution, tel qu'un débordement arithmétique ou une violation de contrainte, entraîne l'un des effets suivants :

  • La plupart des erreurs d'exécution interrompent l'instruction en cours ainsi que celles qui la suivent dans le lot.
  • Quelques erreurs d'exécution, telles que les violations de contraintes, n'interrompent que l'instruction en cours. Toutes les instructions restantes dans le lot sont exécutées.

Les instructions exécutées avant celle ayant rencontré l'erreur d'exécution ne sont pas affectées. La seule exception s'applique lorsque le lot se trouve dans une transaction et que l'erreur provoque l'annulation de celle-ci (rollback). Dans ce cas, toutes les modifications de données non validées et effectuées avant l'erreur d'exécution sont annulées.

Supposons, par exemple, qu'un lot comporte 10 instructions. Si la cinquième instruction comporte une erreur de syntaxe, aucune des instructions du lot ne sera exécutée. Si le lot est compilé et que la seconde instruction échoue pendant son exécution, les résultats de la première instruction ne sont pas affectés, car elle a déjà été exécutée.

SQL Server 2005 fournit une recompilation au niveau de l'instruction. Autrement dit, si une instruction déclenche une recompilation, seule cette instruction fait l'objet d'une recompilation, et non la totalité du lot. Ce comportement diffère de SQL Server 2000. Imaginons l'exemple suivant, qui contient une instruction CREATE TABLE et quatre instructions INSERT dans le même lot.

CREATE TABLE dbo.t3(a int)
INSERT INTO dbo.t3 VALUES (1) 
INSERT INTO dbo.t3 VALUES (1,1) 
INSERT INTO dbo.t3 VALUES (3) 
GO

SELECT * FROM dbo.t3

D'abord, le lot est compilé. L'instruction CREATE TABLE est compilée, mais comme la table dbo.t3 n'existe pas encore, les instructions INSERT ne sont pas compilées.

Puis, l'exécution du lot démarre. La table est créée. La première instruction INSERT est compilée, puis immédiatement exécutée. La table possède désormais une ligne. Ensuite, la deuxième instruction INSERT est compilée. La compilation échoue, et le lot se termine. L'instruction SELECT retourne une seule ligne.

Dans SQL Server 2000, le lot commence à s'exécuter et la table est créée. Les trois instructions INSERT sont compilées l'une après l'autre, mais ne sont pas exécutées. Comme la deuxième instruction INSERT a provoqué une erreur de compilation, l'ensemble du lot est terminé. L'instruction SELECT ne retourne aucune ligne.

Règles d'utilisation des lots

Les règles suivantes s'appliquent à l'utilisation des lots :

  • Les instructions CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE SCHEMA, CREATE TRIGGER et CREATE VIEW ne peuvent pas être combinées avec d'autres instructions dans un lot. L’instruction CREATE doit démarrer le lot. Toutes les autres instructions qui suivent dans ce lot seront interprétées comme une partie de la définition de la première instruction CREATE.
  • Dans le même lot, vous ne pouvez pas modifier une table puis faire référence aux nouvelles colonnes.
  • Si une instruction EXECUTE est la première instruction d'un lot, le mot clé EXECUTE n'est pas nécessaire. Le mot clé EXECUTE n'est nécessaire que si l'instruction EXECUTE n'est pas la première instruction du lot.
ms175502.note(fr-fr,SQL.90).gifImportant :
Les fichiers du lot peuvent contenir des informations d'identification stockées en texte brut. Ces informations peuvent s'afficher sur l'écran de l'utilisateur pendant l'exécution du lot.

Voir aussi

Concepts

Environnement d'exécution des lots d'instructions et MARS
Spécification de lots d'instructions
Exemples de lots d'instructions

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

5 décembre 2005

Nouveau contenu :
  • Ajout d'informations sur la recompilation au niveau instruction.
  • Ajout d'une remarque sur la sécurité.