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.


No hay comentarios.:

Publicar un comentario