SET Énoncés (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison d’analytique SQL dans Microsoft FabricEntrepôt dans Microsoft FabricBase de données SQL dans Microsoft Fabric

Le langage de programmation Transact-SQL fournit plusieurs SET instructions qui modifient la gestion actuelle des informations spécifiques par la session. Les SET énoncés sont regroupés dans les catégories présentées dans le tableau suivant.

Pour des informations sur la définition des variables locales avec l’énoncé SET , voir SET @local_variable (Transact-SQL).

Category Instructions
Instructions de date et heure SET DATEFIRST

SET DATEFORMAT
Instructions de verrouillage SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Instructions diverses SET 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êtes SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY
Remarque : cette fonctionnalité sera supprimée dans une prochaine version de 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 MISE EN CACHE DES RÉSULTATS SET (Aperçu)
Remarque : cette fonctionnalité s’applique uniquement à Azure Synapse Analytics.

SET ROWCOUNT

SET TEXTSIZE
Instructions se rapportant aux paramètres ISO SET 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 statistiques SET 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 transactions SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

Considérations à considérer lors de l’utilisation des SET affirmations

  • Toutes SET les instructions s’exécutent à l’exécution ou à l’exécution, sauf celles-ci, qui s’exécutent à l’analyse syntaxique :

    • SET FIPS_FLAGGER
    • SET OFFSETS
    • SET PARSEONLY
    • et SET QUOTED_IDENTIFIER
  • Si une SET instruction s’exécute dans une procédure stockée ou un déclencheur, la valeur de l’option SET est restaurée après que la procédure stockée ou le déclencheur ait rendu le contrôle. De plus, si vous spécifiez une SET instruction dans une chaîne SQL dynamique qui s’exécute en utilisant soit sp_executesql soit EXECUTE, la valeur de l’option SET est restaurée après que le contrôle soit retourné du lot que vous avez spécifié dans la chaîne SQL dynamique.

  • Les procédures stockées s’exécutent avec les SET paramètres spécifiés au moment d’exécution sauf pour SETSET ANSI_NULLS et SETSET QUOTED_IDENTIFIER. Les procédures stockées SETSET ANSI_NULLS spécifient ou SETSET QUOTED_IDENTIFIER utilisent le paramètre spécifié au moment de la création de la procédure stockée. Si utilisé dans une procédure stockée, tout SET paramètre est ignoré.

  • 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. Ce paramètre se comporte aussi comme une déclaration explicite SET , sauf qu’il se produit au moment de la connexion.

  • Les paramètres de base de données définis par utilisant ALTER DATABASE ne sont valides qu’au niveau de la base de données et ne prennent effet que si 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.

  • Si une SET instruction utilise ON et OFF, vous pouvez spécifier l’une ou l’autre pour plusieurs SET options.

    Notes

    Cela ne s’applique pas aux options liées SET aux statistiques.

    Par exemple, SET QUOTED_IDENTIFIER, ANSI_NULLS ON place à la fois QUOTED_IDENTIFIER et ANSI_NULLS sur ON.

  • SET Les paramètres de la déclaration suppriment les mêmes paramètres d’option de base de données définis en utilisant ALTER DATABASE. Par exemple, la valeur spécifiée dans une SET ANSI_NULLS instruction supprimera le paramètre de base de données pour ANSI_NULLs. De plus, certains paramètres de connexion sont activés (ON) automatiquement quand un utilisateur se connecte à une base de données, sur la base de valeurs activées au préalable à l’aide de la procédure sp_configure user options ou sur la base de valeurs applicables à toutes les connexions ODBC et OLE DB.

  • ALTER, CREATE et DROP DATABASE les déclarations ne respectent pas le SETSET LOCK_TIMEOUT cadre.

  • Lorsqu’une instruction globale ou raccourci SET définit plusieurs paramètres, l’émission de l’instruction raccourci SET réinitialise les paramètres précédents pour toutes les options affectées par l’instruction raccourci SET . Si une SET option affectée par une instruction de raccourci SET est définie après l’émission de cette SET instruction, l’instruction individuelle SET remplace les paramètres de raccourci comparables. Un exemple d’instruction raccourci SET serait SETSET ANSI_DEFAULTS.

  • Lorsque vous utilisez des traitements d’instructions, le contexte de la base de données est déterminé par le traitement défini à l’aide de l’instruction USE. Les requêtes non planifiées et toutes les instructions qui s’exécutent hors d’une procédure stockée et sont regroupées dans des traitements héritent des paramètres d’option de la base de données et de la connexion établie à l’aide de l’instruction USE.

  • Les demandes MARS (Active Result Set Multiple) partagent un état global contenant les paramètres les plus récents des options de session SET . Lorsque chaque requête s’exécute, elle peut modifier les SET options. Ces modifications sont limitées 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. Cependant, une fois l’exécution de la requête terminée, les nouvelles SET options sont copiées dans l’état global de la session. Les nouvelles requêtes qui s’exécutent dans la même session après ce changement utiliseront ces nouveaux SET paramètres d’options.

  • Lorsqu’une procédure stockée s’exécute dans un traitement ou une autre procédure stockée, elle est exécutée avec les valeurs d’option configurées 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 sous le niveau de compatibilité défini dans la base de données db1, tandis que la procédure stockée sp2 est exécutée sous le niveau de compatibilité défini dans la base de données db2.

  • Lorsqu’une instruction Transact-SQL concerne des objets situés 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 manipulez des index sur des colonnes calculées ou des vues indexées, vous devez définir ces SET options sur ON : ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, et ANSI_WARNINGS. Réglez l’option NUMERIC_ROUNDABORT sur DÉSACTIVÉ.

    Si vous ne définissez aucune de ces options sur les valeurs requises, INSERT, UPDATE, DELETE, DBCC CHECKDB et DBCC CHECKTABLE les actions sur les vues indexées ou les tables avec index sur les colonnes calculées échoueront. 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.

  • Lorsque SET RESULT_SET_CACHING est activé, il active la fonction de mise en cache des résultats pour la session client en cours. Result_set_caching ne peut pas être activée pour une session si elle est désactivée au niveau de la base de données. Lorsque SET RESULT_SET_CACHING est DÉSACTIVÉ, la fonction de mise en cache des ensembles de résultats est désactivée pour la session cliente en cours. La modification de ce paramètre nécessite l'appartenance au rôle public. S’applique à : Azure Synapse Analytics Gen2