Instructions SET (Transact-SQL)

 

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse

Le langage de programmation Transact-SQL fournit plusieurs instructions SET qui modifient la façon dont la session en cours gère des informations spécifiques. Les instructions SET sont regroupées selon les catégories indiquées dans le tableau suivant :

Pour plus d'informations sur la définition de variables locales à l'aide de l'instruction SET, consultez SET @local_variable (Transact-SQL).

CatégorieInstructions
Instructions de date et heureSET DATEFIRST

 SET DATEFORMAT
Instructions de verrouillageSET DEADLOCK_PRIORITY

 SET LOCK_TIMEOUT
Instructions diversesSET CONCAT_NULL_YIELDS_NULL

 SET CURSOR_CLOSE_ON_COMMIT

 SET FIPS_FLAGGER

 SET IDENTITY_INSERT

 SET LANGUAGE

 SET OFFSETS

 SET QUOTED_IDENTIFIER
Instructions d'exécution de requêtesSET ARITHABORT

 SET ARITHIGNORE

 SET FMTONLY Note:  Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. 

 SET NOCOUNT

 SET NOEXEC

 SET NUMERIC_ROUNDABORT

 SET PARSEONLY

 SET QUERY_GOVERNOR_COST_LIMIT

 SET ROWCOUNT

 SET TEXTSIZE
Instructions se rapportant aux paramètres ISOSET ANSI_DEFAULTS

 SET ANSI_NULL_DFLT_OFF

 SET ANSI_NULL_DFLT_ON

 SET ANSI_NULLS

 SET ANSI_PADDING

 SET ANSI_WARNINGS
Instructions se rapportant aux statistiquesSET FORCEPLAN

 SET SHOWPLAN_ALL

 SET SHOWPLAN_TEXT

 SET SHOWPLAN_XML

 SET STATISTICS IO

 SET STATISTICS XML

 SET STATISTICS PROFILE

 SET STATISTICS TIME
Instructions se rapportant aux transactionsSET IMPLICIT_TRANSACTIONS

 SET REMOTE_PROC_TRANSACTIONS

 SET TRANSACTION ISOLATION LEVEL

 SET XACT_ABORT
  • Toutes les instructions SET sont appliquées lors de l'exécution, à l'exception des instructions SET FIPS_FLAGGER, SET OFFSETS, SET PARSEONLY et SET QUOTED_IDENTIFIER. Ces instructions sont implémentées au moment de l'analyse.

  • Si une instruction SET est exécutée dans une procédure stockée ou un déclencheur, la valeur de l'option SET est rétablie une fois que le contrôle est renvoyé par la procédure stockée ou le déclencheur. De même, si une instruction SET est spécifiée dans une chaîne SQL dynamique exécutée à l'aide de sp_executesql ou de EXECUTE, la valeur de l'option SET est rétablie une fois que le contrôle est renvoyé du traitement spécifié dans la chaîne SQL dynamique.

  • Les procédures stockées sont exécutées avec les valeurs SET spécifiées au moment de l'exécution, sauf dans le cas de SET ANSI_NULLS et SET QUOTED_IDENTIFIER. Les procédures stockées spécifiant SET ANSI_NULLS ou SET QUOTED_IDENTIFIER utilisent les valeurs spécifiées au moment de la création de ces procédures stockées. Toute option SET utilisée dans une procédure stockée est ignorée.

  • Le paramètre user options de la procédure sp_configure tient compte des paramètres définis à l'échelle du serveur et agit sur plusieurs bases de données à la fois. Son fonctionnement est identique à celui d'une instruction SET explicite, mais il prend effet lors de la connexion.

  • Les paramètres de base de données (définis à l'aide de ALTER DATABASE) sont valides uniquement au niveau de la base de données et prennent effet seulement s'ils sont explicitement définis. Les paramètres de base de données ont priorité sur les valeurs des options de l'instance définies à l'aide de sp_configure.

  • Pour toutes les instructions SET ayant des valeurs ON ou OFF, vous pouvez spécifier l'une ou l'autre de ces valeurs pour plusieurs options SET en même temps.

    System_CAPS_ICON_note.jpg Remarque


    Ceci ne s'applique pas aux statistiques liées aux options SET.

    Par exemple, SET QUOTED_IDENTIFIER, ANSI_NULLS ON définit à la fois QUOTED_IDENTIFIER et ANSI_NULLS à la valeur ON.

  • Les paramètres de l'instruction SET sont prioritaires sur les paramètres des options de base de données équivalents et définis à l'aide de ALTER DATABASE. Ainsi, la valeur spécifiée dans une instruction SET ANSI_NULLS se substitue à celle du paramètre de base de données pour ANSI_NULLs. De plus, certains paramètres de connexion sont activés (ON) automatiquement lorsqu'un utilisateur se connecte à une base de données, sur la base des valeurs activées au préalable à l'aide de la procédure sp_configure user options ou sur la base des valeurs applicables à toutes les connexions ODBC et OLE DB.

  • Les instructions ALTER, CREATE et DROP DATABASE ne tiennent pas compte du paramètre SET LOCK_TIMEOUT.

  • Lorsqu'une instruction SET globale ou contextuelle (par exemple, SET ANSI_DEFAULTS) définit plusieurs options, l'émission de l'instruction SET contextuelle rétablit les anciennes valeurs de toutes les options affectées par cette instruction SET contextuelle. Si une option SET particulière affectée par une instruction SET contextuelle est explicitement définie après l'émission de l'instruction SET contextuelle, ses paramètres remplacent les paramètres correspondants de l'instruction contextuelle.

  • Lorsque vous utilisez des traitements d'instructions, le contexte de la base de données est déterminé par le traitement établi à l'aide de l'instruction USE. Les requêtes appropriées et toutes les instructions qui sont exécutées en dehors d'une procédure stockée et qui sont regroupées dans des traitements héritent des valeurs des options de la base de données et de la connexion établie à l'aide de l'instruction USE.

  • Les requêtes MARS (Multiple Active Result Set) partagent un état global contenant les paramètres des options SET de la session la plus récente. Chaque requête qui s'exécute peut modifier les options SET. Ces modifications sont spécifiques au contexte de la requête dans lequel elles sont définies et n'ont pas d'incidence sur les autres requêtes MARS simultanées. Une fois l'exécution de la requête terminée, les nouvelles options SET sont toutefois copiées dans l'état de session global. Ainsi, les nouvelles requêtes qui s'exécutent dans la même session après ces modifications utilisent les nouvelles valeurs des options SET.

  • Lorsqu'une procédure stockée est exécutée à partir d'un traitement ou d'une autre procédure stockée, elle est exécutée en fonction des valeurs des options actuellement en vigueur dans la base de données contenant la procédure stockée. Par exemple, si la procédure stockée db1.dbo.sp1 appelle la procédure stockée db2.dbo.sp2, la procédure sp1 est exécutée selon le niveau de compatibilité actuellement défini dans la base de données db1, tandis que la procédure stockée sp2 est exécutée selon le niveau de compatibilité actuellement en vigueur dans la base de données db2.

  • Lorsqu'une instruction Transact-SQL fait référence à des objets résidant dans plusieurs bases de données, le contexte de la base de données active et celui de la connexion actuelle s'appliquent à cette instruction. Dans ce cas, si l'instruction Transact-SQL fait partie d'un traitement, le contexte de la connexion actuelle est la base de données définie par l'instruction USE ; si l'instruction Transact-SQL est dans une procédure stockée, le contexte de la connexion est la base de données contenant cette procédure stockée.

  • Lorsque vous créez et que vous modifiez des index sur des colonnes calculées ou des vues indexées, les options SET ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING et ANSI_WARNINGS doivent être activées (valeur ON). L'option NUMERIC_ROUNDABORT doit être désactivée (OFF).

    Si l'une de ces options n'est pas définie avec les valeurs requises, les actions INSERT, UPDATE, DELETE, DBCC CHECKDB et DBCC CHECKTABLE sur les vues indexées ou les tables comportant des index sur des colonnes calculées échouent. SQL Server déclenche une erreur et affiche la liste des options dont les valeurs sont incorrectes. Par ailleurs, SQL Server traite les instructions SELECT sur ces tables ou ces vues indexées comme si les index sur les colonnes calculées ou sur les vues n'existaient pas.

Ajouts de la communauté

Afficher: