miércoles, 27 de enero de 2021

SQL Server Propiedades de Base de Datos – Opciones (3)

Introducción

Ya he indicado previamente sobre las propiedades de las bases de datos y he indicado las paginas General, Archivos, Grupos de Archivos y la primera y segunda parte de la pagina Opciones, en previas entregas, ahora continuare con las opciones de configuración de las bases de datos. 

Pagina Opciones

Ya se ha indicado previamente que es posible utilizar esta página para ver o modificar varias opciones de configuración para la base de datos seleccionada. Se han establecido las categorías de opciones:

Automático

Contención

Cursor

Configuraciones del ámbito de la base de datos

FILESTREAM

En esta ocasión se hablará de las opciones de la categoría Varios. Sin embargo, es necesario tener en cuenta que puede usar las declaraciones de Transact-SQL ALTER DATABASE SET OPTIONS para modificar los valores si así se prefiere.




Varios

Esta sección mostrara varios valores de diversas opciones que afectan la forma en que la base de datos se puede comportar.

Permitir aislamiento de instantáneas – Se muestra si la opción esta habilitada, se debe recordar que cuando se encuentra habilitada, evita la mayoría de los bloqueos y bloqueos mediante el uso de versiones de filas. Cuando se modifican los datos, las versiones confirmadas de las filas afectadas se copian en tempdb y se proporcionan números de versión. Esta operación se denomina copiar al escribir y se utiliza para todas las inserciones, actualizaciones y eliminaciones que utilizan esta técnica. Cuando otra sesión lee los mismos datos, se devuelve la versión confirmada de los datos en el momento en que comenzó la transacción de lectura.

ANSI NULL predeterminado – Muestra si se permiten valores nulos para todos los tipos de datos o columnas definidos por el usuario que no estén explícitamente definidos como NOT NULL durante una instrucción CREATE TABLE o ALTER TABLE (el estado predeterminado). 

ANSI NULLS habilitado – Muestra si la opción esta habilitada, esto especifica el comportamiento de los operadores de comparación Igual (=) y No igual a (<>) cuando se utilizan con nulos,  cuando está habilitado, todas las comparaciones con un nulo se evalúan como DESCONOCIDO. Cuando está habilitado, las comparaciones de valores que no son UNICODE con un nulo se evalúan como Verdadero si ambos son NULL. 

ANSI Padding habilitado – Indica si la opción esta habilitada, lo que permite especificar si el relleno ANSI está activado o desactivado. 

ANSI Warnings habilitadas – Indica si la opción esta habilitada, lo que permite especificar el comportamiento estándar ISO para varias condiciones de error. Cuando está habilitado, se genera un mensaje de advertencia si aparecen valores nulos en funciones agregadas (como SUMA, PROMEDIO, MÁX, MÍN, DESVEST, DESVEST, VAR, VARP o CONTAR). En el caso contrario, no se emite ninguna advertencia. 

Aborto aritmético habilitado – Muestra si esta opción esta habilitada. Cuando está habilitada, un error de desbordamiento o división por cero hace que la consulta o el lote finalicen. Si el error ocurre en una transacción, la transacción se revierte. En caso contrario, se muestra un mensaje de advertencia, pero la consulta, el lote o la transacción continúa como si no hubiera ocurrido ningún error.

Concatenar Null Yields Null – Indica si esta opción esta habilitada, permitiendo especificar con ello el comportamiento cuando se concatenan nulos. Cuando el valor de la propiedad está habilitada, string + NULL devuelve NULL. En caso contrario, el resultado es una cadena.

Encadenamiento de propiedad entre bases de datos habilitado - Este valor de solo lectura indica si se ha habilitado el encadenamiento de propiedad entre bases de datos. Cuando está habilitado, la base de datos puede ser el origen o el destino de una cadena de propiedad entre bases de datos. 

Optimización de correlación de fechas habilitada – Muestra si la opción está habilitada, en caso afirmativo, Microsoft SQL Server mantiene estadísticas de correlación entre dos tablas cualesquiera en la base de datos que están vinculadas por una restricción FOREIGN KEY y tienen columnas de fecha y hora. En caso contrario, las estadísticas de correlación no se mantienen.

Durabilidad retardada – Muestra el valor de la opción, es una que se introdujo en la versión Microsoft SQL Server 2014. Esta opción simplemente permite que las transacciones de escritura continúen ejecutándose como si el registro se hubiera descargado en el disco; en realidad, las escrituras en disco se han agrupado y diferido, para ser manejadas en segundo plano. La transacción es optimista; asume que se producirá el vaciado del registro. Los valores posibles son; DISABLED, ALLOWED, FORCED.  El valor disabled, indica que esta opción no se utilizará. Establecer el valor en Allowed, significa que cualquier transacción individual puede usar la Durabilidad Retardada; El valor Forced significa que todas las transacciones pueden usar Durabilidad Retardada.

¿Está activada la instantánea de lectura confirmada? – Indica si la opción esta habilitada. El motor de Microsoft SQL Server utiliza el mecanismo que previene los cambios de lecturas sucias. De esta forma usa el control de versiones de filas en lugar de bloquear. Para hacerlo, se crea una instantánea coherente de transición de los datos (como estaba antes del inicio de la declaración) para cada declaración. Por lo tanto, al usar las instantáneas, no es necesario colocar bloqueos para leer los datos. El valor predeterminado de esta opción es deshabilitado.

Aborto redondeo numérico – Se indica si esta opción esta habilitada, lo que permite indicar cómo se maneja la base de datos los errores de redondeo. Cuando esta habilitada, se genera un error cuando se produce una pérdida de precisión en una expresión. En caso contrario, las pérdidas de precisión no generan mensajes de error y el resultado se redondea a la precisión de la columna o variable que almacena el resultado. 

Parametrización – Muestra el valor asociado a esta opción, los valores permitidos son SIMPLE y FORZADO. De forma predeterminada el valor es SIMPLE, indicando que las consultas se parametrizan según el comportamiento predeterminado de la base de datos. Cuando el valor es FORZADO, Se indica que Microsoft SQL Server parametriza todas las consultas en la base de datos.

Identificadores entre comillas habilitados – Indica si la opción esta habilitada, los que permite especificar si las palabras clave de Microsoft SQL Server se pueden utilizar como identificadores (un objeto o nombre de variable) si están entre comillas. 

Activadores recursivos habilitados – Indica si esta opción esta habilitada, lo cual permite especificar si otros disparadores pueden disparar disparadores. Cuando se establece en habilitado, esto permite la activación recursiva de disparadores. En caso contrario, solo se evita la recursividad directa. Para deshabilitar la recursividad indirecta, establezca la opción del servidor de disparadores anidados en 0 en las opciones de configuración de servidor. 

Digno de confianza – Muestra si la opción esta habilitada, esta opción de solo lectura indica que si Microsoft SQL Server permite el acceso a recursos fuera de la base de datos en un contexto de suplantación establecido dentro de la base de datos. Los contextos de suplantación se pueden establecer dentro de la base de datos utilizando la declaración de usuario EXECUTE AS o la cláusula EXECUTE AS en los módulos de la base de datos.  Para tener acceso, el propietario de la base de datos también necesita tener el permiso AUTHENTICATE SERVER a nivel de servidor. Esta propiedad también permite la creación y ejecución de ensamblados de acceso externo y no seguros dentro de la base de datos. Además de habilitar esta propiedad, el propietario de la base de datos debe contar con el permiso EXTERNAL ACCESS ASSEMBLY o UNSAFE ASSEMBLY en el nivel del servidor.  De forma predeterminada, todas las bases de datos de usuario y todas las bases de datos del sistema (con la excepción de MSDB) tienen esta propiedad deshabilitada. El valor no se puede cambiar para las bases de datos modelo y tempdb. Es importante indicar que TRUSTWORTHY se establece como deshabilitado siempre que se adjunta una base de datos al servidor. Se recomienda que para acceder a recursos fuera de la base de datos, un enfoque en un contexto de suplantación utilizando certificados y firmas en oposición a la opción Confiable

Formato de almacenamiento VarDecimal habilitado- Muestra el valor de esta opción que es de solo lectura a partir de Microsoft SQL Server 2008. Cuando esta habilitado, esta base de datos permite el formato de almacenamiento vardecimal. El formato de almacenamiento vardecimal no se puede deshabilitar mientras las tablas de la base de datos lo estén usando. A partir de Microsoft SQL Server 2008, todas las bases de datos están habilitadas para el formato de almacenamiento vardecimal. 

Conclusión

Ya se ha indicado que esta página de propiedades de la base de datos brinda información de las opciones de la base de datos. Si se requiere usar T-SQL para obtener la información que se muestra en la pagina indicada, para la categoría varios, es posible usar la siguiente consulta.


/*******************************************************************************
-- Script : Get Database Options Properties Part 3 
-- Author : Julio J Bueyes
-- julio.bueyes@outlook.com
--
-- Description : This script helps to get a detailed view of the database properties – Options page – part 3.
--
-- DISCLAIMER. This Code is provided for the purpose of illustration only and is not intended to be used in a production environment. 
--
-- THIS CODE AND ANY RELATED INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, 
-- INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************************/
-- Set the Database Name required
USE model;
GO

--- Miscellaneous
SELECT CASE snapshot_isolation_state WHEN 1 THEN 'True' ELSE 'False' END AS [Allow Snapshot Isolation], 
    CASE is_ansi_null_default_on WHEN 1 THEN 'True' ELSE 'False' END AS [ANSI NULL Default], 
    CASE is_ansi_nulls_on WHEN 1 THEN 'True' ELSE 'False' END AS [ANSI NULLS Enabled], 
    CASE is_ansi_padding_on WHEN 1 THEN 'True' ELSE 'False' END AS [ANSI Padding Enabled], 
    CASE is_ansi_warnings_on WHEN 1 THEN 'True' ELSE 'False' END AS [ANSI Warning Enabled], 
    CASE is_arithabort_on WHEN 1 THEN 'True' ELSE 'False' END AS [Arithmetic Abort Enabled], 
    CASE is_concat_null_yields_null_on WHEN 1 THEN 'True' ELSE 'False' END AS [Concatenate Null Yields Null], 
    CASE is_db_chaining_on WHEN 1 THEN 'True' ELSE 'False' END AS [Cross-database Ownership Chaining Enabled],
    CASE is_date_correlation_on WHEN 1 THEN 'True' ELSE 'False' END AS [Date Correlation Optimization Enabled], 
    delayed_durability_desc AS [Delayed Durability], 
    CASE is_read_committed_snapshot_on WHEN 1 THEN 'True' ELSE 'False' END AS [Is Read Committed Snapshot On], 
    CASE is_numeric_roundabort_on WHEN 1 THEN 'True' ELSE 'False' END AS [Numeric Round-Abort], 
    CASE is_parameterization_forced WHEN 1 THEN 'Forced' ELSE 'Simple' END AS [Parameterization], 
    CASE is_quoted_identifier_on WHEN 1 THEN 'True' ELSE 'False' END AS [Quoted Identifiers Enabled], 
    CASE is_recursive_triggers_on WHEN 1 THEN 'True' ELSE 'False' END AS [Recursive Triggers Enabled], 
    CASE is_trustworthy_on WHEN 1 THEN 'True' ELSE 'False' END AS [Trustworthy]
FROM sys.databases
WHERE database_id = db_id()


Como se ha establecido previamente, pueden observarse de forma fácil obtener los datos directamente de la ventana de propiedades de la base de datos, en la página Opciones, no obstante, el script funciona para obtener los mismos valores proporcionados por la página.


No hay comentarios.:

Publicar un comentario