lunes, 12 de febrero de 2018

SQL Server Opciones de configuración avanzada de paralelismo

Opciones de configuración avanzada de paralelismo

Introducción


Hoy continuaré escribiendo acerca de Microsoft SQL Server Opciones de Configuración, que iniciamos en el mes de diciembre, después de algunos días de ausencia, hoy escribiré acerca de las opciones de configuración avanzada de paralelismo, que como sabemos son opciones relacionadas con el procesamiento de las consultas. Debemos primero saber que es el paralelismo en Microsoft SQL Server. Para ello se debe especificar que el paralelismo es una característica de Microsoft SQL Server, la cual permite que las consultas costosas utilicen más hilos para completar el proceso de forma más rápida. Para lograr esto, el optimizador de consultas primero determina el costo de una consulta en función de la configuración del umbral de costo para el paralelismo (Cost Threshold for Parallelism) establecida a nivel de Instancia de Microsoft SQL Server. Este umbral de costo para el paralelismo es realmente una estimación (definida en segundos) que el optimizador de consultas ha determinado tomará una declaración en función de un plan de ejecución estimado (o en caché). Generalmente, las consultas que califican para el paralelismo son consultas con alto uso de IO. En un proceso normal, una fuente de datos se lee utilizando un único SPID (ID de proceso del servidor) y se envía usando el mismo SPID. Cuando se usa paralelismo, se utilizan varios SPID para leer una fuente de datos (conocido como distribución de flujos), luego se puede realizar una operación en las secuencias y luego se recopilan las secuencias. La siguiente figura ilustra este proceso, tomado de un artículo de Derek Dieter denominado “What is Parallelism?”:


No siempre el paralelismo puede ser una buena idea a ser utilizada. En  muchos sistemas OLTP que se utilizan para facilitar muchas solicitudes de usuario, generalmente el paralelismo suele ser una indicación de consultas y / o consultas mal escritas que requieren la definición adecuada de índices. A menudo, el paralelismo puede causar problemas en los servidores que tienen muchos procesadores que también tienen problemas de IO en disco. El motivo es que el paralelismo generará tantos SPID como procesadores.
Para asegurarse que el paralelismo está ocurriendo en el sistema se ejecuta sp_who2 y ve el mismo SPID en la lista más de una vez. Esto indica que  una consulta grande se divide en varias secuencias solo para volver a unirse en un único resultado más adelante. Algunas secuencias de la consulta pueden finalizar sus operaciones antes de que se completen otras secuencias de la consulta lo que da como resultado un tipo de espera identificada como CX_Packet. Cuando este tipo de espera es común, entonces está esperando que finalicen las transmisiones paralelas.
Una vez que hemos definido que es el paralelismo y como lo usa Microsoft SQL Server, procederemos a indicar cuales son las opciones de configuración avanzadas de paralelismo, de acuerdo con Microsoft SQL Server estas son:

Nombre de opción
Descripción
cost threshold for parallelism
umbral de costo para el paralelismo
locks
Número de bloqueos para todos los usuarios
max degree of parallelism
grado máximo de paralelismo
query wait (s)
tiempo máximo para esperar memoria  de consulta (s)

Como ya hemos indicado, para las opciones de configuración en Microsoft SQL Server que se identifican como avanzadas, debe utilizarse el procedimiento almacenado de sistema sp_configure, el cual sirve para habilitar la posibilidad de despliegue de estas opciones avanzadas.

sp_configure 'show advanced options', 1;
GO
RECONFIGURE
GO


Opción cost threshold for parallelism


Establezca el valor de la opción de umbral de costo para paralelismo con el fin de especificar el umbral en el que Microsoft SQL Server crea y ejecuta planes paralelos para las consultas. Recordemos que Microsoft SQL Server crea y ejecuta un plan paralelo para una consulta solo en el caso de que el costo estimado para ejecutar un plan en serie para la misma consulta sea mayor que el valor establecido en el umbral de costo para el paralelismo. El costo en este caso se refiere a un tiempo estimado en segundos que se requiere para ejecutar el plan de serie en una configuración de hardware específica. Se recomienda que se establezca el valor de umbral de costo para el paralelismo en multiprocesadores simétricos únicamente.
La opción de umbral de costo para paralelismo se puede establecer en cualquier valor entre 0 y 32767. El valor predeterminado, cuando se instala la instancia de Microsoft SQL Server es 5. Es conveniente modificar el valor cuando se tienen procesadores con varios núcleos, de tal forma que pueda llevarse a cabo el multiprocesamiento simétrico.
Microsoft SQL Server ignora el valor del umbral de costo para paralelismo en las siguientes condiciones:
  •          Su computadora tiene solo un procesador.
  •        Solo una única CPU está disponible para Microsoft SQL Server debido a la opción de configuración de máscara de afinidad.
  •         La opción grado máximo de paralelismo se establece en 1.
Para cambiar el valor de esta opción de configuración usando el procedimiento almacenado se ejecuta el siguiente comando:

sp_configure 'cost threshold for paralellism', 20
GO
RECONFIGURE


Opción locks


Cuando una instancia de Microsoft SQL Server es instalada se inicia con un valor configurado para bloqueos en 0, de tal forma que el administrador de bloqueos adquiere suficiente memoria del motor de base de datos para un grupo inicial de 2,500 estructuras de bloqueo. A medida que se use y se agota el grupo de bloqueos, se adquiere memoria adicional para el grupo de estructuras. Generalmente, si es requerida más memoria para el grupo de bloqueo que la está disponible en el conjunto de memoria del Motor de base de datos, y en el caso de que haya más memoria disponible (el umbral máximo de memoria del servidor no se ha alcanzado), entonces el motor de base de datos asigna memoria dinámicamente para satisfacer la solicitud de bloqueos. Sin embargo, si la asignación de esa memoria causa paginación en el nivel de sistema operativo, no se asignará más espacio de bloqueo. El grupo de bloqueo dinámico no adquiere más del 60 por ciento de la memoria asignada al Motor de base de datos. Una vez que el grupo de bloqueo ha alcanzado el 60% de la memoria adquirida por una instancia del Motor de base de datos, o no hay más memoria disponible en la computadora, las solicitudes adicionales de bloqueos generan un error.
Permitir que Microsoft SQL Server use bloqueos dinámicamente es la configuración recomendada. No obstante, puede establecerse un valor para bloqueos y anular la capacidad de Microsoft SQL Server para asignar dinámicamente los recursos de bloqueo. Cuando el valor de los bloqueos se configura en un valor distinto de 0, el Motor de base de datos no puede asignar más bloqueos que el valor especificado. Será necesario aumentar este valor si Microsoft SQL Server muestra un mensaje indicando que se ha excedido la cantidad de bloqueos disponibles. Debido a que cada bloqueo consume memoria (96 bytes por bloqueo), el aumentar este valor puede requerir aumentar la cantidad de memoria dedicada al servidor.

Nota:
Microsoft ha indicado que ésta característica se eliminará en una versión futura de Microsoft SQL Server, por lo que se recomienda no usarla.

El siguiente ejemplo muestra cómo establecer el valor de locks en 20,000

sp_configure 'locks', 20000
GO
RECONFIGURE
GO


Opción max degree of paralellism


Cuando Microsoft SQL Server se ejecuta en un equipo con más de un microprocesador o CPU, se detecta el mejor grado de paralelismo, es decir, el número de procesadores empleados para ejecutar una declaración única, para cada ejecución de plan paralelo. Es posible usar la opción de máximo grado de paralelismo para limitar la cantidad de procesadores que se utilizarán en la ejecución de planes paralelos.
Si se desea permitir que el Microsoft SQL Server determine el grado máximo de paralelismo, se debe establecer esta opción en 0, el valor predeterminado. Establecer el valor del grado máximo de paralelismo en 0 permite que Microsoft SQL Server utilice todos los procesadores disponibles hasta un máximo de 64 procesadores. Si se desea suprimir la generación de planes paralelos, será necesario establecer el valor de máximo grado de paralelismo en 1.
Establecer el valor en un número mayor que 1 restringe el número máximo de procesadores que serán utilizados por una única ejecución de consulta. El valor máximo para la configuración de grado de paralelismo está controlado por la edición de Microsoft SQL Server, tipo de CPU y sistema operativo. Si se especifica un valor mayor que la cantidad de procesadores disponibles, se usa la cantidad real de procesadores disponibles. Si el equipo tiene solo un procesador, se ignora el grado máximo de paralelismo.
El siguiente ejemplo permite establecer el valor del máximo grado de paralelismo en 8

sp_configure 'max degree of paralellism', 8
GO
RECONFIGURE WITH OVERRIDE
GO


Opción query wait   


La opción de configuración de espera de consulta (query wait) indica el tiempo, en segundos (de 0 a 2147483647), que una consulta debe espera por los recursos antes de que se agote el tiempo de espera. El valor predeterminado para esta opción es -1, esto significa que el tiempo de espera se calcula como 25 veces en relación al costo estimado de la consulta. Es importante mencionar que una transacción que contiene una consulta de espera puede contener bloqueos mientras la consulta espera por memoria. Disminuir el tiempo de espera de una consulta reduce la probabilidad de los interbloqueos. Eventualmente, se terminará una consulta en espera y se liberarán los bloqueos de la transacción. Sin embargo, aumentar el tiempo máximo de espera puede aumentar la cantidad de tiempo para que finalice la consulta.

Nota:
Microsoft recomienda que no se lleven a cabo cambios en al valor de esta opción de configuración.

El siguiente ejemplo permite establecer el valor de espera de consulta en 7500 segundos.

sp_configure 'query wait(s)', 7500
GO
RECONFIGURE WITH OVERRIDE
GO


Comentarios


Se han visto cada una de las opciones de configuración avanzada de paralelismo, estas mismas opciones aparecen en la pestaña de avanzadas de la ventana de propiedades del servidor, como se puede observar en la siguiente imagen:


Si bien, es posible realizar el cambio en esta ventana, ya que los valores se muestran y están habilitados, es preferible llevar a cabo la modificación de estos valores con el procedimiento almacenado de sistema, de esta forma se puede mantener un control apropiado sobre los valores indicados en la opción de configuración.

lunes, 15 de enero de 2018

SQL Server Opciones de configuración de conexiones al servidor

Opciones de configuración de conexiones al servidor

Introducción

Microsoft SQL Server permite el manejo de conexiones al servidor o instancia que se pueden clasificar como; simplemente conexiones y conexiones de servidor remoto.

Para el caso de Conexiones se presentaran las referidas a las conexiones concurrentes, el uso de un gobernador de consultas para el manejo de aquellas que tengan una ejecución larga y las opciones de conexión que se utilizan de forma predeterminada; en el caso de las conexiones de servidor remoto se indicará si se permiten las conexiones remotas, el tiempo de espera que se permitirá en este tipo de conexiones y si se requerirán transacciones distribuidas en la comunicación de servidor a servidor.
Finalmente las opciones que se verán en esta ocasión son:

Opción
Descripción
query governor cost limit
Costo estimado máximo permitido por el gobernador de consulta
remote access
Permitir acceso remoto
remote proc trans
Crear transacción DTC para procedimientos remotos
remote query timeout (s)
Tiempo de espera de consulta remota
user connections
Número máximo de conexiones de usuario permitidas
user options
Opciones de usuario para las conexiones

Estas opciones se han mantenido presentes desde hace tiempo en Microsoft SQL Server. Ya hemos indicado que algunas opciones de configuración en Microsoft SQL Server pueden identificarse como avanzadas, por lo que en caso de utilizar el procedimiento almacenado de sistema sp_configure, se debe habilitar la posibilidad de despliegue de dichas opciones avanzadas. Veamos cómo configurar y como afecta cada una de estas opciones.

Opción query governor cost limit

La opción de configuración query governor cost limit especifica un límite superior en un período de tiempo en el que una consulta se puede ejecutar. Deber recordarse que el costo de una consulta se refiere al tiempo transcurrido estimado, en segundos, que se requiere para completar una consulta en una configuración de hardware específica.

Por omisión, el valor predeterminado para esta opción es 0, lo que indica que el gobernador de consultas está desactivado. Esto significa que todas las consultas se ejecutarán sin límite de tiempo. Si el valor de esta opción de configuración se especifica con un valor distinto de cero, no negativo, el gobernador de consultas no permitirá la ejecución de consultas que tenga un costo estimado que exceda ese valor indicado.
Como se ha indicado, esa opción se especifica para qué aplique a todas las conexiones que se lleven a cabo en la instancia, sin embargo, si se desea afectar únicamente una conexión, puede utilizarse la sentencia SET QUERY_GOVERNOR_COST_LIMIT en una base por conexión.

La opción de configuración query governor cost limit es una opción avanzada. Si se utiliza el procedimiento almacenado del sistema sp_configure para establecer la configuración, recuerde habilitar que se muestren las opciones avanzadas. Después de ejecutar el comando RECONFIGURE el valor solicitado se aplica inmediatamente sin necesidad de reiniciar los servicios de la instancia de Microsoft SQL Server.
En el siguiente ejemplo se establece el límite de 120 segundos, de tal manera que las consultas que excedan el tiempo estimado especificado, no se ejecutaran.

EXEC sp_configure 'query governor cost limit', 120; 
RECONFIGURE; 
GO 

Opción remote access


La opción de configuración remote access controla la ejecución de procedimientos almacenados desde servidores locales o remotos en los que se ejecutan instancias de Microsoft SQL Server. Por omisión, el valor predeterminado para esta opción es 1. Esto significa que se otorga permiso para ejecutar los procedimientos almacenados locales desde servidores remotos o procedimientos almacenados en servidores remotos desde el servidor local.  Es importante indicar que ésta opción de configuración solo se aplica a los servidores que se agregan mediante el uso del procedimiento almacenado de sistema denominado sp_addserver, y se tiene compatibilidad con versiones anteriores.
Si se requiere evitar que los procedimientos almacenados locales se ejecuten desde un servidor remoto o que los procedimientos almacenados en servidores remotos se ejecuten en el servidor local, se debe establecer el valor de ésta opción en 0.

Nota:
Microsoft ha indicado que ésta opción de configuración se eliminará en la próxima versión de SQL Server. Por lo que se solicita evitar su uso, recomendando que se use sp_addlinkedserver en su lugar.

La opción de configuración remote access es una opción no avanzada. Si se utiliza el procedimiento almacenado del sistema sp_configure para establecer la configuración, no necesita habilitar que se muestren las opciones avanzadas. Después de ejecutar el comando RECONFIGURE el valor solicitado se aplica inmediatamente sin necesidad de reiniciar los servicios de la instancia de Microsoft SQL Server.
El siguiente ejemplo, especifica que se inhabilitara la ejecución de los procedimientos almacenados desde servidores locales o remotos.

EXEC sp_configure 'remote access', 0; 
RECONFIGURE; 
GO

Opción remote proc trans


La opción de configuración remote proc trans nos ayuda a proteger las acciones de un procedimiento de servidor a servidor a través de una requerir una transacción del Coordinador de Transacciones Distribuidas de Microsoft (MS DTC). Es importante mencionar que deben permitirse las conexiones de servidor remoto antes de poder establecer este valor de la opción de configuración. Por omisión el valor de esta opción de configuración se establece en 0, indicando que no se requiere una transacción coordinada por MS DTC.
Para proporcionar una transacción distribuida coordinada por MS DTC que proteja las propiedades ACID (atómicas, consistentes, aisladas y duraderas) de las transacciones debe establecerse el valor de la opción de configuración remote proc trans en 1. De esta forma, las sesiones iniciadas después de configurar esta opción de configuración en 1 heredan la configuración establecida.

Nota:
Microsoft ha indicado que ésta opción de configuración se eliminará en la próxima versión de SQL Server. Por lo que se solicita evitar su uso, recomendando que se use sp_addlinkedserver en su lugar.

La opción de configuración remote proc trans es una opción no avanzada. Si se utiliza el procedimiento almacenado del sistema sp_configure para establecer la configuración, no necesita habilitar que se muestren las opciones avanzadas. Después de ejecutar el comando RECONFIGURE el valor solicitado se aplica inmediatamente sin necesidad de reiniciar los servicios de la instancia de Microsoft SQL Server.
El siguiente ejemplo, indica que se establezca la habilitación de la ejecución de los procedimientos almacenados desde servidores locales o remotos y la necesidad de transacciones coordinadas por MS DTC.

EXEC sp_configure 'remote access', 1; 
EXEC sp_configure 'remote proc trans', 1; 
RECONFIGURE; 
GO

Opción remote query timeout (s)


La opción de configuración remote query timeout especifica cuánto tiempo puede tomar una operación remota antes de que supere el tiempo de espera, indicado en segundos. Por omisión, el valor predeterminado para esta opción de configuración es 600 segundos, por lo tanto, se permite una espera de 10 minutos.
Cabe indicar que éste valor de la opción de configuración se aplica a una conexión saliente, esto es, iniciada por el motor de base de datos como una consulta remota. El valor de la opción de configuración no tiene ningún efecto en las consultas que son recibidas por el motor de base de datos. Se debe indicar que para poder establecer el valor de esta opción de configuración, es requerido que las conexiones de servidor remoto se halla habilitado antes de poder establecer el valor de esta opción de configuración.

Para cambiar el valor de la opción de configuración que desactive el tiempo de espera, se deberá establecer el valor de la opción de configuración en 0. De esta manera, una consulta esperará el tiempo necesario hasta que se complete.
La opción de configuración remote query timeout es una opción no avanzada. Si se utiliza el procedimiento almacenado del sistema sp_configure para establecer la configuración, no necesita habilitar que se muestren las opciones avanzadas. Después de ejecutar el comando RECONFIGURE el valor solicitado se aplica inmediatamente sin necesidad de reiniciar los servicios de la instancia de Microsoft SQL Server.

El siguiente ejemplo establece el valor de la opción de configuración en 0, indicado que se deshabilitara el tiempo de espera.

EXEC sp_configure 'remote query timeout', 0; 
RECONFIGURE; 
GO

Opción user connections

La opción de configuración user connections nos permite especificar la cantidad máxima de conexiones de usuario simultáneas permitidas en una instancia de Microsoft SQL Server. Si bien la cantidad real de conexiones de usuario que son permitidas depende de la versión de Microsoft SQL Server que esté utilizando, también depende de los límites de las aplicaciones y el hardware que las contiene. Microsoft SQL Server permite establecer hasta un máximo de 32,767 conexiones de usuario.

Debe considerarse que se trata de una opción de configuración dinámica (se lleva a cabo una autoconfiguración), por lo que Microsoft SQL Server ajusta automáticamente el número máximo de conexiones de usuario según vaya siendo necesario, hasta alcanzar el valor máximo permitido. En la mayoría de los casos, no tiene que cambiar el valor de esta opción. Cabe mencionar que el valor predeterminado de esta opción de configuración es 0, esto significa que se permiten hasta 32,767 conexiones de usuario como máximo.
El uso de esta opción de configuración user connections ayuda a evitar sobrecargar el servidor con demasiadas conexiones simultáneas. Es posible estimar la cantidad de conexiones según los requisitos del sistema y del usuario que la utilizara. Generalmente en un sistema que es usado por muchos usuarios, cada usuario no suele requerir una conexión única, estas conexiones se pueden compartir entre los usuarios. Sin embargo, los usuarios que ejecutan aplicaciones a través de OLE DB requieren una conexión para cada objeto de conexión abierto, y los usuarios que ejecutan aplicaciones Open Database Connectivity (ODBC) necesitan una conexión para cada manejador de conexión activo en la aplicación, y los usuarios que ejecutan aplicaciones DB-Library necesitan una conexión para cada proceso iniciado que llama a la función dbopen DB-Library.

Nota:
Si debe modificar el valor de esta opción de configuración, no configure un valor demasiado alto, ya que cada conexión tiene una sobrecarga, independientemente de si la conexión se está utilizando. Si en algún momento se supera la cantidad máxima de conexiones de usuario, se recibirá un mensaje de error y no podrá conectarse hasta que haya otra conexión disponible.

La opción de configuración user connections es una opción avanzada. Si se utiliza el procedimiento almacenado del sistema sp_configure para establecer la configuración, se necesita habilitar que se muestren las opciones avanzadas. Después de ejecutar el comando RECONFIGURE el valor solicitado se aplica cuando se reinicien los servicios de la instancia de Microsoft SQL Server.
El siguiente ejemplo establece el máximo de 325 conexiones de usuario en la instancia.

EXEC sp_configure 'user connections', 325; 
RECONFIGURE; 
GO 

Una vez que se aplique el cambio, debe reiniciar los servicios de la instancia de Microsoft SQL Server, para que el valor de esta opción de configuración pueda ser efectivo.

Opción user options


La opción de configuración user options permite especificar los valores predeterminados globales para todos los usuarios.  La tabla que se muestra continuación establece una lista de opciones para el procesamiento de consultas que se indican como predeterminadas en la duración de la sesión de trabajo de un usuario. La opción de configuración user options permite cambiar los valores predeterminados de las opciones de la instrucción SET, en caso de que la configuración predeterminada del servidor no sea la adecuada.
A través de la instrucción SET, un usuario puede anular los valores predeterminados, los cuales son establecidos para cada nuevo inicio de sesión de usuario. Cuando se cambia el valor de la opción de configuración de user options, las nuevas sesiones de inicio de sesión usarán la nueva configuración; las sesiones de inicio de sesión actuales no se afectarán.

La tabla con la lista de opciones de se procesamiento se observa a continuación:

Nombre
Valor
Configuración
Descripción

1
DISABLE_DEF_CNST_CHK
Controla la comprobación de las restricciones interinas o diferidas.
implicit transactions
2
IMPLICIT_TRANSACTIONS.
Para conexiones de biblioteca de red dblib, controla si una transacción se inicia implícitamente cuando se ejecuta una instrucción. La configuración IMPLICIT_TRANSACTIONS no tiene ningún efecto en las conexiones ODBC o OLEDB
cursor close on commit
4
CURSOR_CLOSE_ON_COMMIT
Controla el comportamiento de los cursores después de que se haya realizado una operación de confirmación.
ansi warnings
8
ANSI_WARNINGS
Controla el truncamiento y NULL en advertencias agregadas.
ansi padding
16
ANSI_PADDING
Controla el relleno de las variables de longitud fija.
ANSI NULLS
32
ANSI_NULLS
Controla el manejo NULL cuando se usan operadores de igualdad.
arithmetic abort
64
ARITHABORT
Termina una consulta cuando se produce un error de desbordamiento o de división por cero durante la ejecución de la consulta.
arithmetic ignore
128
ARITHIGNORE
Devuelve NULL cuando ocurre un error de desbordamiento o de división por cero durante una consulta.
quoted identifier
256
QUOTED_IDENTIFIER
Diferencia  entre comillas simples y dobles al evaluar una expresión.
no count
512
NO COUNT
Desactiva el mensaje devuelto al final de cada instrucción que indica cuántas filas se vieron afectadas.
ANSI NULL Default On
1024
ANSI_NULL_DFLT_ON
Modifica el comportamiento de la sesión para usar compatibilidad ANSI para la capacidad de anulación. Las columnas nuevas definidas sin anulabilidad explícita se definen para permitir nulos.
ANSI NULL Default Off
2048
ANSI_NULL_DFLT_OFF
Modifica el comportamiento de la sesión para no utilizar la compatibilidad ANSI para nulability. Las columnas nuevas definidas sin anulabilidad explícita no permiten nulos.
concat null yield null
4096
CONCAT_NULL_YIELDS_NULL
Devuelve NULL al concatenar un NULL con una cadena.
numeric round abort
8192
NUMERIC_ROUNDABORT
Genera un error cuando ocurre una pérdida de precisión en una expresión.
xact abort
16384
XACT_ABORT
Revierte una transacción si una instrucción de Transact-SQL genera un error de tiempo de ejecución.

Cabe mencionar que no todos los valores de configuración son compatibles entre sí. Podemos mencionar que, los valores de ANSI_NULL_DFLT_ON y ANSI_NULL_DFLT_OFF no pueden ser configurados al mismo tiempo. Es importante indicar que las posiciones de bits en las opciones de usuario son idénticas a la variable global @@OPTIONS. Cada conexión tiene su propia función @@OPTIONS, representando el entorno de configuración. Al iniciar sesión en una instancia de Microsoft SQL Server, un usuario recibe un entorno predeterminado que asigna el valor de las opciones del usuario actual a @@OPTIONS. La ejecución de las sentencias SET para las opciones de usuario afecta el valor correspondiente en la función @@OPTIONS de la sesión. Todas las conexiones creadas después de cambiar esta configuración reciben el nuevo valor.
Por defecto, las siguientes opciones se presentan en las conexiones de usuario:

Options Enabled
Description
 CONCAT_NULL_YIELDS_NULL
Devuelve NULL al concatenar un NULL con una cadena.
 ANSI_NULL_DFLT_ON
Las columnas nuevas definidas sin anulabilidad explícita se definen para permitir nulos.
 QUOTED_IDENTIFIER
Diferencia  entre comillas simples y dobles al evaluar una expresión.
 ARITHABORT
Termina una consulta cuando se produce un error de desbordamiento o de división por cero durante la ejecución de la consulta.
 ANSI_NULLS
Controla el manejo NULL cuando se usan operadores de igualdad.
 ANSI_PADDING
Controla el manejo NULL cuando se usan operadores de igualdad.
 CURSOR_CLOSE_ON_COMMIT
Controla el comportamiento de los cursores después de que se haya realizado una operación de confirmación.
 IMPLICIT_TRANSACTIONS
Para conexiones de biblioteca de red dblib, controla si una transacción se inicia implícitamente cuando se ejecuta una instrucción. La configuración IMPLICIT_TRANSACTIONS no tiene ningún efecto en las conexiones ODBC o OLEDB
 DISABLE_DEF_CNST_CHK
Controla la comprobación de las restricciones interinas o diferidas.

La opción de configuración user options es una opción no avanzada. Si se utiliza el procedimiento almacenado del sistema sp_configure para establecer la configuración, no necesita habilitar que se muestren las opciones avanzadas. Después de ejecutar el comando RECONFIGURE el valor solicitado se aplica inmediatamente sin necesidad de reiniciar los servicios de la instancia de Microsoft SQL Server.
El siguiente ejemplo cambia el valor de la opción de configuración user options para establecer ansi warnings, sin afectar los otros valores establecidos.

EXEC sp_configure 'user options', 8; 
RECONFIGURE;
GO

Comentarios

Como se ha observado, conocer las opciones de configuración de conexiones es responsabilidad de un Microsoft SQL Server Database Administrator, es importante indicar que los efectos de modificar una opción de esta sección, solo aplica para las conexiones locales y de servidores remotos.

En este punto podemos decir que se han visto cada una de las opciones de configuración relativas a las conexiones de nivel instancia de servidor, estas mismas opciones aparecen en la pestaña de conexiones de la ventana de propiedades del servidor, como se puede observar en la siguiente imagen:


Como se ha mencionado anteriormente, es posible realizar el cambio de alguna de las opciones de configuración en esta ventana, ya que los valores se muestran y están habilitados, es preferible llevar a cabo la modificación de estos valores con el procedimiento almacenado de sistema denominado sp_configure,  de esta forma se puede mantener un control apropiado sobre los valores indicados en la opción de configuración modificada.