SET Afirmaciones (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de SQL Analytics en Microsoft FabricAlmacén en Microsoft FabricBase de datos SQL en Microsoft Fabric

El lenguaje de programación Transact-SQL proporciona varias SET sentencias que cambian la gestión actual de la sesión de información específica. Las SET declaraciones se agrupan en las categorías que se muestran en la siguiente tabla.

Para información sobre cómo establecer variables locales con la SET sentencia, véase SET @local_variable (Transact-SQL).

Category Instrucciones
Instrucciones de fecha y hora SET DATEFIRST

SET DATEFORMAT
Instrucciones de bloqueo SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Otras instrucciones SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

SET IDENTITY_INSERT

SET LANGUAGE

SET OFFSETS

SET QUOTED_IDENTIFIER
Instrucciones de ejecución de consultas SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY
Nota: Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

SET NOCOUNT

SET NOEXEC

SET NUMERIC_ROUNDABORT

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

SET CACHÉ DE RESULTADOS SET (Vista previa)
Nota: Esta característica solo se aplica a Azure Synapse Analytics.

SET ROWCOUNT

SET TEXTSIZE
Instrucciones de configuración de ISO SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Instrucciones de estadísticas SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET SHOWPLAN_XML

SET STATISTICS IO

SET STATISTICS XML

SET STATISTICS PROFILE

SET STATISTICS TIME
Instrucciones de transacciones SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

Consideraciones al usar las SET declaraciones

  • Todas SET las sentencias se ejecutan en tiempo de ejecución o ejecución, excepto las siguientes, que se ejecutan en tiempo de análisis sintáctico:

    • SET FIPS_FLAGGER
    • SET OFFSETS
    • SET PARSEONLY
    • y SET QUOTED_IDENTIFIER
  • Si una SET instrucción se ejecuta en un procedimiento almacenado o disparador, el valor de la SET opción se restaura después de que el procedimiento almacenado o disparador devuelva el control. Además, si especificas una SET sentencia en una cadena SQL dinámica que se ejecuta usando sp_executesql o EXECUTE, el valor de la SET opción se restaura después de que el control devuelva el lote que especificaste en la cadena SQL dinámica.

  • Los procedimientos almacenados se ejecutan con los SET ajustes especificados en tiempo de ejecución, excepto para SETSET ANSI_NULLS y SETSET QUOTED_IDENTIFIER. Procedimientos almacenados que SETSET ANSI_NULLS especifican o SETSET QUOTED_IDENTIFIER utilizan la configuración especificada en el momento de la creación de procedimientos almacenados. Si se usa dentro de un procedimiento almacenado, se ignora cualquier SET configuración.

  • El parámetro user options de sp_configure permite aplicar opciones a todo el servidor y sirve para múltiples bases de datos. Esta configuración también se comporta como una declaración explícita SET , salvo que ocurre en el momento de iniciar sesión.

  • Las configuraciones de base de datos establecidas por usar ALTER DATABASE son válidas solo a nivel de base de datos y solo entran en vigor si se establecen explícitamente. Las opciones de base de datos anulan las opciones de instancia que se establecen mediante sp_configure.

  • Si una SET sentencia usa ON y OFF, puedes especificar cualquiera de las dos para varias SET opciones.

    Nota

    Esto no se aplica a las opciones relacionadas SET con estadística.

    Por ejemplo, SET QUOTED_IDENTIFIER, ANSI_NULLS ON establece tanto QUOTED_IDENTIFIER y ANSI_NULLS como en ON.

  • SET La configuración de la sentencia anula la opción idéntica de la base de datos que se establece usando ALTER DATABASE. Por ejemplo, el valor especificado en una SET ANSI_NULLS instrucción anulará la configuración de base de datos para 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.

  • ALTER, CREATE y DROP DATABASE las declaraciones no respetan el SETSET LOCK_TIMEOUT escenario.

  • Cuando una instrucción global o de acceso SET directo establece varios ajustes, emitir la sentencia de acceso SET directo reinicia la configuración anterior de todas las opciones que afecta la sentencia de acceso SET directo. Si una SET opción que se ve afectada por una instrucción de acceso SET directo se activa después de que se emite la sentencia de acceso directo SET , la instrucción individual SET anula la configuración de atajos comparable. Un ejemplo de una sentencia de acceso SET directo sería SETSET ANSI_DEFAULTS.

  • Al utilizar lotes, el lote establecido mediante la instrucción USE determina el contexto de la base de datos. 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.

  • Las solicitudes de Conjunto de Resultados Activos múltiples (MARS) comparten un estado global que contiene la configuración de opción de sesión más reciente SET . Cuando cada solicitud se ejecuta, puede modificar las SET opciones. Los cambios son específicos al contexto de solicitud en el que se encuentran, y no afectan a otras solicitudes MARS simultáneas. Sin embargo, una vez completada la ejecución de la solicitud, las nuevas SET opciones se copian al estado global de la sesión. Las nuevas solicitudes que se ejecutan en la misma sesión tras este cambio usarán estas nuevas SET opciones de configuración.

  • 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. 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.

  • Cuando una instrucción Transact-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. En este caso, si la instrucción Transact-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-SQL está en un procedimiento almacenado, el contexto de conexión es la base de datos que contiene el procedimiento almacenado.

  • Cuando creas y manipulas índices en columnas computadas o vistas indexadas, debes establecer estas SET opciones en ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, , y ANSI_WARNINGS. Pon la opción NUMERIC_ROUNDABORT en OFF.

    Si no configuras ninguna de estas opciones a los valores requeridos, INSERT, UPDATE, DELETE, DBCC CHECKDB y DBCC CHECKTABLE las acciones en vistas indexadas o tablas con índices en columnas calculadas fallarán. SQL Server generará un error indicando las opciones que no se han establecido correctamente. Además, SQL 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.

  • Cuando SET RESULT_SET_CACHING está ACTIVADO, activa la función de caché de resultados para la sesión actual del cliente. Result_set_caching no se puede activar para una sesión si estaba desactivado en el nivel de base de datos. Cuando SET RESULT_SET_CACHING está DESACTIVADA, la función de caché del conjunto de resultados se desactiva para la sesión actual del cliente. Para cambiar esta configuración, se requiere la pertenencia al rol público. Se aplica a: Azure Synapse Analytics Gen2