Instrucciones SET (Transact-SQL)

 

ESTE TEMA SE APLICA A:síSQL Server (a partir de 2008)noBase de datos SQL de AzurenoAlmacenamiento de datos SQL de Azure noAlmacenamiento de datos paralelos

El lenguaje de programación Transact-SQL ofrece varias instrucciones SET que cambian el tratamiento de información específica por parte de la sesión actual. Las instrucciones SET se agrupan en las categorías que figuran en la siguiente tabla.

Para obtener información acerca de cómo establecer variables locales con la instrucción SET, vea establecer @local_variable (Transact-SQL).

CategoríaInstrucciones
Instrucciones de fecha y horaSET DATEFIRST

 SET DATEFORMAT
Instrucciones de bloqueoSET DEADLOCK_PRIORITY

 SET LOCK_TIMEOUT
Otras instruccionesSET CONCAT_NULL_YIELDS_NULL

 SET CURSOR_CLOSE_ON_COMMIT

 SET FIPS_FLAGGER

 SET IDENTITY_INSERT

 DEFINIR IDIOMA

 DESPLAZAMIENTOS DE CONJUNTO

 SET QUOTED_IDENTIFIER
Instrucciones de ejecución de consultasSET ARITHABORT

 SET ARITHIGNORE

 SET FMTONLY

Nota:Esta característica se quitará en una versión futura de Microsoft 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 ROWCOUNT

 SET TEXTSIZE
Instrucciones de configuración de ISOSET ANSI_DEFAULTS

 SET ANSI_NULL_DFLT_OFF

 SET ANSI_NULL_DFLT_ON

 SET ANSI_NULLS

 SET ANSI_PADDING

 SET ANSI_WARNINGS
Instrucciones de estadísticasSET FORCEPLAN

 SET SHOWPLAN_ALL

 SET SHOWPLAN_TEXT

 SET SHOWPLAN_XML

 SET STATISTICS IO

 SET STATISTICS XML

 SET STATISTICS PROFILE

 ESTABLECER TIEMPO DE ESTADÍSTICAS
Instrucciones de transaccionesSET IMPLICIT_TRANSACTIONS

 SET REMOTE_PROC_TRANSACTIONS

 SET TRANSACTION ISOLATION LEVEL

 SET XACT_ABORT
  • Todas las instrucciones SET se implementan en tiempo de ejecución, salvo SET FIPS_FLAGGER, SET OFFSETS, SET PARSEONLY y SET QUOTED_IDENTIFIER. Estas instrucciones se implementan en tiempo de análisis.

  • Si se ejecuta una instrucción SET en un procedimiento almacenado o desencadenador, el valor de la opción SET se restaura cuando el control vuelve del procedimiento almacenado o desencadenador. Además, si se especifica una instrucción SET en una cadena SQL dinámica que se ejecuta usando sp_executesql o EXECUTE, el valor de la opción SET se restaura cuando el control vuelve del lote especificado en la cadena SQL dinámica.

  • 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. Los procedimientos almacenados que utilizan SET ANSI_NULLS o SET QUOTED_IDENTIFIER usan las opciones especificadas en el momento de crear el procedimiento almacenado. Si se usan dentro de un procedimiento almacenado, las opciones SET no tienen ningún efecto.

  • El opciones de usuario de sp_configure permite la configuración del servidor y funciona a través de varias bases de datos. 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.

  • 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. Opciones de base de datos invalidar la configuración de opción de instancia que se han establecido con sp_configure.

  • En cualquiera de las instrucciones SET con opciones ON y OFF, puede especificar ON u OFF para múltiples opciones de SET.

    System_CAPS_ICON_note.jpg Nota


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

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

  • Las opciones de las instrucciones SET anulan las opciones de base de datos equivalentes que se establecen mediante 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. Además, algunas opciones de conexión se establecen ON automáticamente cuando un usuario se conecta a una base de datos según los valores efectivos mediante el uso anterior de la opciones de usuario de sp_configure configuración o los valores que se aplican a todas las conexiones ODBC y OLE DB.

  • Las instrucciones ALTER, CREATE y DROP DATABASE no respetan la opción SET LOCK_TIMEOUT.

  • Cuando una instrucción SET global o abreviada, como SET ANSI_DEFAULTS, establece varias opciones, al ejecutar la instrucción SET abreviada se restablecen los valores anteriores de todas las opciones a las que afecta. Si una opción individual de SET afectada por una instrucción SET abreviada se establece explícitamente después de ejecutar la instrucción SET abreviada, la instrucción SET individual tiene precedencia sobre las opciones correspondientes de la instrucción abreviada.

  • Al utilizar lotes, el lote establecido mediante la instrucción USE determina el contexto de la base de datos. Las consultas "ad hoc" 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 MARS (conjuntos de resultados activos múltiples) comparten un estado global que contiene los valores de SET de la sesión más reciente. Al ejecutar una solicitud, se pueden modificar las opciones de SET. Los cambios son específicos al contexto de solicitud en el que se encuentran, y no afectan a otras solicitudes MARS simultáneas. No obstante, una vez ejecutada la solicitud, las nuevas opciones de SET se copian en el estado de sesión global. Las nuevas solicitudes que se ejecuten en la misma sesión después de este cambio utilizarán estas nuevas opciones de SET.

  • Cuando se ejecuta un procedimiento almacenado desde un lote o desde otro procedimiento almacenado, la ejecución se realiza con las opciones establecidas en ese momento en la base de datos que contiene el procedimiento almacenado. Por ejemplo, cuando se almacenan procedimiento db1.dbo.sp1 llama a procedimiento almacenado db2.dbo.sp2, procedimiento almacenado sp1 se ejecuta en la configuración de nivel de compatibilidad actual de la base de datos db1y el procedimiento almacenado sp2 se ejecuta en la configuración de nivel de compatibilidad actual de la base de datos db2.

  • Cuando una instrucción Transact-SQL hace referencia a objetos que residen en varias bases de datos, el contexto de la base de datos actual y el contexto de la conexión actual se aplican a la 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 se crean o manipulan índices en columnas calculadas o vistas indizadas, las opciones SET ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING y ANSI_WARNINGS deben establecerse en ON. La opción NUMERIC_ROUNDABORT debe ser OFF.

    Si alguna de estas opciones no tiene los valores exigidos, se producirá un error en las acciones INSERT, UPDATE, DELETE, DBCC CHECKDB y DBCC CHECKTABLE en las tablas o vistas indizadas con índices en las columnas calculadas. 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 indizadas como si no existieran los índices en las columnas calculadas ni en las vistas.

Adiciones de comunidad

AGREGAR
Mostrar: