Instrucciones SET (Transact-SQL)SET Statements (Transact-SQL)

SE APLICA A: síSQL Server noAzure SQL Database síAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database yesAzure SQL Data Warehouse noParallel Data Warehouse

El lenguaje de programación Transact-SQLTransact-SQL ofrece varias instrucciones SET que cambian el tratamiento de información específica por parte de la sesión actual.The Transact-SQLTransact-SQL programming language provides several SET statements that change the current session handling of specific information. Las instrucciones SET se agrupan en las categorías que figuran en la siguiente tabla.The SET statements are grouped into the categories shown in the following table.

Para obtener información sobre cómo establecer variables locales con la instrucción SET, vea SET @local_variable (Transact-SQL).For information about setting local variables with the SET statement, see SET @local_variable (Transact-SQL).

CategoríaCategory InstruccionesStatements
Instrucciones de fecha y horaDate and time statements SET DATEFIRSTSET DATEFIRST

SET DATEFORMATSET DATEFORMAT
Instrucciones de bloqueoLocking statements SET DEADLOCK_PRIORITYSET DEADLOCK_PRIORITY

SET LOCK_TIMEOUTSET LOCK_TIMEOUT
Otras instruccionesMiscellaneous 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

SET LANGUAGESET LANGUAGE

SET OFFSETSSET OFFSETS

SET QUOTED_IDENTIFIERSET QUOTED_IDENTIFIER
Instrucciones de ejecución de consultasQuery Execution Statements SET ARITHABORTSET ARITHABORT

SET ARITHIGNORESET ARITHIGNORE

SET FMTONLYSET FMTONLY
Nota: Esta característica está en modo de mantenimiento y es posible que no se incluya en una versión futura de Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.Note: Esta característica está en modo de mantenimiento y es posible que no se incluya en una versión futura de Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.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 RESULT SET CACHING (versión preliminar)SET RESULT SET CACHING (Preview)
Nota: Esta característica solo se aplica a Azure SQL Data Warehouse.Note: This feature applies to Azure SQL Data Warehouse only.

SET ROWCOUNTSET ROWCOUNT

SET TEXTSIZESET TEXTSIZE
Instrucciones de configuración de 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
Instrucciones de estadísticasStatistics 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

SET STATISTICS TIMESET STATISTICS TIME
Instrucciones de transaccionesTransactions statements SET IMPLICIT_TRANSACTIONSSET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONSSET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVELSET TRANSACTION ISOLATION LEVEL

SET XACT_ABORTSET XACT_ABORT

Consideraciones al utilizar las instrucciones SETConsiderations When You Use the SET Statements

  • Todas las instrucciones SET se ejecutan en tiempo de ejecución, salvo estas instrucciones, que se ejecutan en tiempo de análisis:All SET statements run at execute or run time, except these statements, which run at parse time:

    • SET FIPS_FLAGGERSET FIPS_FLAGGER
    • SET OFFSETSSET OFFSETS
    • SET PARSEONLYSET PARSEONLY
    • y SET QUOTED_IDENTIFIERand SET QUOTED_IDENTIFIER
  • Si se ejecuta una instrucción SET en un procedimiento almacenado o desencadenador, el valor de la opción de SET se restaura cuando el procedimiento almacenado o desencadenador devuelve el control.If a SET statement runs in a stored procedure or trigger, the value of the SET option gets restored after the stored procedure or trigger returns control. Además, si especifica una instrucción SET en una cadena de SQL dinámico que se ejecuta mediante sp_executesql o EXECUTE, el valor de la opción de SET se restaura cuando el control vuelve del lote que especificó en la cadena de SQL dinámico.Also, if you specify a SET statement in a dynamic SQL string that runs by using either sp_executesql or EXECUTE, the value of the SET option gets restored after control returns from the batch that you specified in the dynamic SQL string.

  • Los procedimientos almacenados se ejecutan con las opciones de SET especificadas en tiempo de ejecución, excepto en el caso de SET ANSI_NULLS y SET QUOTED_IDENTIFIER.Stored procedures execute with the SET settings specified at execute time except for SET ANSI_NULLS and SET QUOTED_IDENTIFIER. Los procedimientos almacenados que utilizan SET ANSI_NULLS o SET QUOTED_IDENTIFIER usan las opciones especificadas en el momento de crear el procedimiento almacenado.Stored procedures specifying SET ANSI_NULLS or SET QUOTED_IDENTIFIER use the setting specified at stored procedure creation time. Si se usan dentro de un procedimiento almacenado, las opciones SET no tienen ningún efecto.If used inside a stored procedure, any SET setting is ignored.

  • El parámetro user options de sp_configure permite aplicar opciones a todo el servidor y sirve para múltiples bases de datos.The user options setting of sp_configure allows for server-wide settings and works across multiple databases. Además, esta opción se comporta como una instrucción SET explícita, pero con la diferencia de que tiene lugar en el momento de iniciar la sesión.This setting also behaves like an explicit SET statement, except that it occurs at login time.

  • Las opciones de base de datos establecidas con ALTER DATABASE solo son válidas en el nivel de base de datos y solo tienen efecto cuando se establecen explícitamente.Database settings set by using ALTER DATABASE are valid only at the database level and take effect only if explicitly set. Las opciones de base de datos anulan las opciones de instancia que se establecen mediante sp_configure.Database settings override instance option settings that are set by using sp_configure.

  • Si una instrucción SET usa ON y OFF, puede especificar cualquiera para varias opciones de SET.If a SET statement uses ON and OFF, you can specify either one for multiple SET options.

    Nota

    Esto no se aplica a las opciones de SET relacionadas con estadísticas.This doesn't apply to the statistics related SET options.

    Por ejemplo, SET QUOTED_IDENTIFIER, ANSI_NULLS ON establece QUOTED_IDENTIFIER y ANSI_NULLS en ON.For example, SET QUOTED_IDENTIFIER, ANSI_NULLS ON sets both QUOTED_IDENTIFIER and ANSI_NULLS to ON.

  • Las opciones de las instrucciones SET anulan las opciones de base de datos idénticas que se establecen mediante ALTER DATABASE.SET statement settings override identical database option settings that are set by using ALTER DATABASE. Por ejemplo, el valor especificado en una instrucción SET ANSI_NULLS anulará la opción de la base de datos de ANSI_NULLS.For example, the value specified in a SET ANSI_NULLS statement will override the database setting for ANSI_NULLs. Además, en algunas opciones de conexión se establece ON automáticamente cuando un usuario se conecta a una base de datos con los valores efectivos de la vez anterior que se utilizó la opción de sp_configure user options o los valores que se aplican a todas las conexiones ODBC y OLE/DB.Additionally, some connection settings get automatically set ON when a user connects to a database based on the values that go 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.

  • Las instrucciones ALTER, CREATE y DROP DATABASE no respetan la opción de SET LOCK_TIMEOUT.ALTER, CREATE and DROP DATABASE statements don't honor the SET LOCK_TIMEOUT setting.

  • Cuando una instrucción SET global o abreviada establece varias opciones, al ejecutar la instrucción SET abreviada se restablecen los valores anteriores de todas las opciones a las que afecta.When a global or shortcut SET statement sets several settings, issuing the shortcut SET statement resets the previous settings for all those options that the shortcut SET statement affects. Si una opción de SET que se ve afectada por una instrucción SET abreviada se establece después de ejecutar la instrucción SET abreviada, la instrucción SET individual tiene precedencia sobre las opciones comparables de la instrucción abreviada.If a SET option that gets affected by a shortcut SET statement gets set after the shortcut SET statement gets issued, the individual SET statement overrides the comparable shortcut settings. Un ejemplo de una instrucción SET abreviada sería SET ANSI_DEFAULTS.An example of a shortcut SET statement would be SET ANSI_DEFAULTS.

  • Al utilizar lotes, el lote establecido mediante la instrucción USE determina el contexto de la base de datos.When batches are used, the database context is determined by the batch that is established by using the USE statement. Las consultas no planeadas y todas las demás instrucciones que se ejecuten fuera del procedimiento almacenado y que se encuentren en lotes heredan las opciones de base de datos y conexión establecidas mediante la instrucción USE.Unplanned queries and all other statements that run outside the stored procedure and that are in batches inherit the option settings of the database and connection established by the USE statement.

  • Las solicitudes MARS (conjuntos de resultados activos múltiples) comparten un estado global que contiene los valores de SET de la sesión más reciente.Multiple Active Result Set (MARS) requests share a global state that contains the most recent session SET option settings. Al ejecutar una solicitud, se pueden modificar las opciones de SET.When each request executes, it can modify the SET options. Los cambios son específicos al contexto de solicitud en el que se encuentran, y no afectan a otras solicitudes MARS simultáneas.The changes are specific to the request context in which they're set, and don't affect other concurrent MARS requests. No obstante, una vez ejecutada la solicitud, las nuevas opciones de SET se copian en el estado de sesión global.However, after the request execution is completed, the new SET options are copied to the global session state. Las nuevas solicitudes que se ejecuten en la misma sesión después de este cambio utilizarán estas nuevas opciones de SET.New requests that execute under the same session after this change will use these new SET option settings.

  • Cuando se ejecuta un procedimiento almacenado desde un lote o desde otro procedimiento almacenado, la ejecución se realiza con las opciones configuradas en la base de datos que tiene el procedimiento almacenado.When a stored procedure runs from a batch or from another stored procedure, it's run under the option values set up in the database that has the stored procedure. Por ejemplo, cuando el procedimiento almacenado db1.dbo.sp1 llama al procedimiento almacenado db2.dbo.sp2, el procedimiento almacenado sp1 se ejecuta con la opción de nivel de compatibilidad actual de la base de datos db1, y el procedimiento almacenado sp2 se ejecuta con la opción de nivel de compatibilidad actual de la base de datos db2.For example, when stored procedure db1.dbo.sp1 calls stored procedure db2.dbo.sp2, stored procedure sp1 executes under the current compatibility level setting of database db1, and stored procedure sp2 executes under the current compatibility level setting of database db2.

  • Cuando una instrucción Transact-SQLTransact-SQL está relacionada con objetos que se encuentran en varias bases de datos, el contexto de la base de datos actual y el contexto de la conexión actual se aplican a dicha instrucción.When a Transact-SQLTransact-SQL statement concerns objects that are in multiple databases, the current database context and the current connection context applies to that statement. En este caso, si la instrucción Transact-SQLTransact-SQL está en un lote, el contexto de conexión actual es la base de datos definida mediante la instrucción USE; si la instrucción Transact-SQLTransact-SQL está en un procedimiento almacenado, el contexto de conexión es la base de datos que contiene el procedimiento almacenado.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.

  • Al crear y manipular índices en columnas calculadas o vistas indexadas, debe establecer estas opciones de SET en ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING y ANSI_WARNINGS.When you're creating and manipulating indexes on computed columns or indexed views, you must set these SET options to ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, and ANSI_WARNINGS. Establezca la opción de NUMERIC_ROUNDABORT en OFF.Set the option NUMERIC_ROUNDABORT to OFF.

    Si no establece ninguna de estas opciones en los valores exigidos, se producirá un error en las acciones INSERT, UPDATE, DELETE, DBCC CHECKDB y DBCC CHECKTABLE en las tablas o vistas indexadas con índices en las columnas calculadas.If you don't set any one of these options 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 generará un error indicando las opciones que no se han establecido correctamente.will raise an error listing all the options that are incorrectly set. Además, SQL ServerSQL Server procesará las instrucciones SELECT en estas tablas o vistas indexadas como si no existieran los índices en las columnas calculadas ni en las vistas.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 don't exist.

  • Cuando SET RESULT_SET_CACHING es ON, permite la característica de almacenamiento en caché de los resultados para la sesión actual del cliente.When SET RESULT_SET_CACHING is ON, it enables the result caching feature for the current client session. Result_set_caching no se puede activar para una sesión si estaba desactivado en el nivel de base de datos.Result_set_caching cannot be turned ON for a session if it is turned OFF at the database level. Cuando SET RESULT_SET_CACHING es OFF, la característica de almacenamiento en caché del conjunto de resultados para la sesión actual del cliente.When SET RESULT_SET_CACHING is OFF, the result set caching feature is disabled for the current client session. Para cambiar esta configuración, se requiere la pertenencia al rol público.Changing this setting requires membership in the public role. Se aplica a: Azure SQL Data Warehouse Gen2Applies to: Azure SQL Data Warehouse Gen2