Instructions SET (Transact-SQL)SET Statements (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Le langage de programmation Transact-SQLTransact-SQL fournit plusieurs instructions SET qui modifient la façon dont la session en cours gère des informations spécifiques.The Transact-SQLTransact-SQL programming language provides several SET statements that change the current session handling of specific information. Les instructions SET sont regroupées selon les catégories indiquées dans le tableau suivant :The SET statements are grouped into the categories shown in the following table.

Pour plus d’informations sur la définition de variables locales avec l’instruction SET, consultez définir @local_variable ( Transact-SQL ) .For information about setting local variables with the SET statement, see SET @local_variable (Transact-SQL).

CatégorieCategory InstructionsStatements
Instructions de date et heureDate and time statements SET DATEFIRSTSET DATEFIRST

SET DATEFORMATSET DATEFORMAT
Instructions de verrouillageLocking statements SET DEADLOCK_PRIORITYSET DEADLOCK_PRIORITY

SET LOCK_TIMEOUTSET LOCK_TIMEOUT
Instructions diversesMiscellaneous statements SET CONCAT_NULL_YIELDS_NULLSET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMITSET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGERSET FIPS_FLAGGER

SET IDENTITY_INSERTSET IDENTITY_INSERT

DÉFINITION DE LA LANGUESET LANGUAGE

SET OFFSETSSET OFFSETS

SET QUOTED_IDENTIFIERSET QUOTED_IDENTIFIER
Instructions d'exécution de requêtesQuery Execution Statements SET ARITHABORTSET ARITHABORT

SET ARITHIGNORESET ARITHIGNORE

SET FMTONLYSET FMTONLY

Remarque : Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server.This feature will be removed in a future version of 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é.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.Note: Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server.This feature will be removed in a future version of 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é.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

SET NOCOUNTSET NOCOUNT

SET NOEXECSET NOEXEC

SET NUMERIC_ROUNDABORTSET NUMERIC_ROUNDABORT

SET PARSEONLYSET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMITSET QUERY_GOVERNOR_COST_LIMIT

SET ROWCOUNTSET ROWCOUNT

SET TEXTSIZESET TEXTSIZE
Instructions se rapportant aux paramètres ISOISO Settings statements SET ANSI_DEFAULTSSET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFFSET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ONSET ANSI_NULL_DFLT_ON

SET ANSI_NULLSSET ANSI_NULLS

SET ANSI_PADDINGSET ANSI_PADDING

SET ANSI_WARNINGSSET ANSI_WARNINGS
Instructions se rapportant aux statistiquesStatistics statements SET FORCEPLANSET FORCEPLAN

SET SHOWPLAN_ALLSET SHOWPLAN_ALL

SET SHOWPLAN_TEXTSET SHOWPLAN_TEXT

SET SHOWPLAN_XMLSET SHOWPLAN_XML

SET STATISTICS IOSET STATISTICS IO

SET STATISTICS XMLSET STATISTICS XML

SET STATISTICS PROFILESET STATISTICS PROFILE

DÉFINIR L’HEURE DE STATISTIQUESSET STATISTICS TIME
Instructions se rapportant aux transactionsTransactions statements SET IMPLICIT_TRANSACTIONSSET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONSSET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL.SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORTSET XACT_ABORT

Remarques sur l'utilisation des instructions SETConsiderations When You Use the SET Statements

  • 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.All SET statements are implemented at execute or run time, except for SET FIPS_FLAGGER, SET OFFSETS, SET PARSEONLY, and SET QUOTED_IDENTIFIER. Ces instructions sont implémentées au moment de l'analyse.These statements are implemented at parse time.

  • 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.If a SET statement is run in a stored procedure or trigger, the value of the SET option is restored after control is returned from the stored procedure or trigger. En outre, si une instruction SET est spécifiée dans une chaîne SQL dynamique qui est exécutée à l’aide sp_executesql ou EXECUTE, la valeur de l’option SET est rétablie une fois que contrôle est retourné à partir du lot spécifié dans la chaîne SQL dynamique.Also, if a SET statement is specified in a dynamic SQL string that is run by using either sp_executesql or EXECUTE, the value of the SET option is restored after control is returned from the batch specified in the dynamic SQL string.

  • 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.Stored procedures execute with the SET settings specified at execute time except for SET ANSI_NULLS and 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.Stored procedures specifying SET ANSI_NULLS or SET QUOTED_IDENTIFIER use the setting specified at stored procedure creation time. Toute option SET utilisée dans une procédure stockée est ignorée.If used inside a stored procedure, any SET setting is ignored.

  • Le options utilisateur paramètre sp_configure permet de paramètres au niveau du serveur et fonctionne sur plusieurs bases de données.The user options setting of sp_configure allows for server-wide settings and works across multiple databases. Son fonctionnement est identique à celui d'une instruction SET explicite, mais il prend effet lors de la connexion.This setting also behaves like an explicit SET statement, except that it occurs at login time.

  • 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.Database settings set by using ALTER DATABASE are valid only at the database level and take effect only if explicitly set. Paramètres de la base de données remplacent les paramètres d’option d’instance qui sont définies à l’aide de sp_configure.Database settings override instance option settings that are set by using 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.For any one of the SET statements with ON and OFF settings, you can specify either an ON or OFF setting for multiple SET options.

    Note

    Ceci ne s'applique pas aux statistiques liées aux options SET.This does not apply to the statistics related SET options.

    Par exemple, SET QUOTED_IDENTIFIER, ANSI_NULLS ON définit à la fois QUOTED_IDENTIFIER et ANSI_NULLS ON.For example, SET QUOTED_IDENTIFIER, ANSI_NULLS ON sets both QUOTED_IDENTIFIER and ANSI_NULLS to 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.SET statement settings override equivalent database option settings that are set by using 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.For example, the value specified in a SET ANSI_NULLS statement will override the database setting for ANSI_NULLs. En outre, certains paramètres de connexion sont automatiquement définis sur lorsqu’un utilisateur se connecte à une base de données selon les valeurs activées au préalable à l’aide de la option sp_configure user options paramètre, ou les valeurs qui s’appliquent à toutes les connexions ODBC et OLE DB.Additionally, some connection settings are automatically set ON when a user connects to a database based on the values put into effect by the previous use of the sp_configure user options setting, or the values that apply to all ODBC and OLE/DB connections.

  • Les instructions ALTER, CREATE et DROP DATABASE ne tiennent pas compte du paramètre SET LOCK_TIMEOUT.ALTER, CREATE and DROP DATABASE statements do not honor the SET LOCK_TIMEOUT setting.

  • 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.When a global or shortcut SET statement, such as SET ANSI_DEFAULTS, sets several settings, issuing the shortcut SET statement resets the previous settings for all those options affected by the shortcut SET statement. 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.If an individual SET option that is affected by a shortcut SET statement is explicitly set after the shortcut SET statement is issued, the individual SET statement overrides the corresponding shortcut settings.

  • 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.When batches are used, the database context is determined by the batch established by using the USE statement. 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.Ad hoc queries and all other statements that are executed outside the stored procedure and that are in batches inherit the option settings of the database and connection established by the USE statement.

  • 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.Multiple Active Result Set (MARS) requests share a global state that contains the most recent session SET option settings. Chaque requête qui s'exécute peut modifier les options SET.When each request executes it can modify the SET options. 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.The changes are specific to the request context in which they are set, and do not affect other concurrent MARS requests. 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.However, after the request execution is completed, the new SET options are copied to the global session state. 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.New requests that execute under the same session after this change will use these new SET option settings.

  • 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.When a stored procedure is executed, either from a batch or from another stored procedure, it is executed under the option values that are currently set in the database that contains the stored procedure. Par exemple, lorsque stockées procédure db1.dbo.sp1 appelle la procédure stockée db2.dbo.sp2, procédure stockée sp1 est exécutée sous le paramètre au niveau de compatibilité de base de données db1et la procédure stockée sp2 est exécutée sous le paramètre au niveau de compatibilité de base de données db2.For example, when stored procedure db1.dbo.sp1 calls stored procedure db2.dbo.sp2, stored procedure sp1 is executed under the current compatibility level setting of database db1, and stored procedure sp2 is executed under the current compatibility level setting of database db2.

  • Lorsqu’un Transact-SQLTransact-SQL instruction fait référence à des objets qui résident dans plusieurs bases de données, le contexte actuel de la base de données et le contexte actuel de la connexion s’applique à cette instruction.When a Transact-SQLTransact-SQL statement refers to objects that reside in multiple databases, the current database context and the current connection context applies to that statement. Dans ce cas, si l'instruction Transact-SQLTransact-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-SQLTransact-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.In this case, if Transact-SQLTransact-SQL statement is in a batch, the current connection context is the database defined by the USE statement; if the Transact-SQLTransact-SQL statement is in a stored procedure, the connection context is the database that contains the stored procedure.

  • 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).When you are creating and manipulating indexes on computed columns or indexed views, the SET options ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, and ANSI_WARNINGS must be set to ON. L'option NUMERIC_ROUNDABORT doit être désactivée (OFF).The option NUMERIC_ROUNDABORT must be set to 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.If any one of these options is not set to the required values, INSERT, UPDATE, DELETE, DBCC CHECKDB and DBCC CHECKTABLE actions on indexed views or tables with indexes on computed columns will fail. SQL ServerSQL Server déclenche une erreur et affiche la liste des options dont les valeurs sont incorrectes. will raise an error listing all the options that are incorrectly set. Par ailleurs, SQL ServerSQL 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.Also, SQL ServerSQL Server will process SELECT statements on these tables or indexed views as if the indexes on computed columns or on the views do not exist.