PARTE I
INSTALACIÓN Y CONFIGURACION
CAP1. Planificar implementacion
Desde Windows Server Core, no pueden usarse:
Reporting Services, SQL Server Data Tools (SSDT), Client Tools Backward Compatibility,
Client Tools SDK, SQL Server Books Online, Distributed Replay Controller, Master Data Services
(MDS), Data Quality Services (DQS)
Las siguientes solo pueden usarse desde escritorio remoto:
Management Tools, Distributed Replay Client
Hardware Considerations
Especificación de requisitos mínimos
ALMACENAMIENTO
Es muy importante separar los archivos de datos, de los de log en diferentes discos. Y separar
también en diferentes discos las bases de datos del sistema, de TempDB (que es la más usada).
NIVELES RAID:
1. RAID 0 (Striping): Distribuye los datos de manera uniforme
entre dos o más discos. Ofrece mejor rendimiento al dividir la
carga de trabajo entre los discos, pero no proporciona
redundancia. Si uno de los discos falla, se pierden todos los
datos.
2. RAID 1 (Mirroring): Crea una copia exacta (espejo) de un
disco en otro. Proporciona redundancia, ya que si un disco falla,
los datos aún están disponibles en el otro. Sin embargo, la
capacidad de almacenamiento efectiva es la mitad de la
capacidad total de los discos.
3. RAID 5 (Striping with Parity): Distribuye los datos y la
paridad (información redundante para la recuperación de datos)
entre tres o más discos. Proporciona rendimiento mejorado y
redundancia, permitiendo la recuperación de datos si un disco
falla. La capacidad efectiva es la capacidad total menos un
disco.
4. RAID 6 (Striping with Dual Parity): Similar a RAID 5, pero
con dos bloques de paridad, lo que proporciona mayor
redundancia y capacidad de recuperación en caso de la falla
simultánea de dos discos. La capacidad efectiva es la capacidad
total menos dos discos.
5. RAID 10 (Mirrored Stripes): Combina RAID 1 y RAID 0. Crea
un conjunto de discos espejo (RAID 1) y luego los combina
mediante striping (RAID 0). Ofrece alto rendimiento y
redundancia, pero la capacidad efectiva es la mitad de la
capacidad total de los discos.
6. RAID 50: Combina múltiples conjuntos RAID 5 mediante
striping. Ofrece un equilibrio entre rendimiento y redundancia,
pero requiere al menos seis discos y puede ser menos tolerante
a fallas que RAID 6.
7. RAID 60: Similar a RAID 50, pero utiliza conjuntos RAID 6 en
lugar de RAID 5. Proporciona mayor redundancia y capacidad
de recuperación.
RAID 0 NUNCA DEBE SER USADO EN SQL SERVER (no proporciona redundancia)
TAMAÑO DE BLOQUE DE DISCO
Otra cosa a considerar para la configuración del disco, ya sea conectado localmente o en una
SAN, es el tamaño del bloque del disco. Dependiendo de su almacenamiento, es probable que
el tamaño de unidad de asignación NTFS (New Technology File System) predeterminado esté
establecido en 4 KB. El problema es que SQL Server organiza los datos en ocho páginas
continuas de 8 KB, lo que se conoce como extensión. Para obtener un rendimiento óptimo para
SQL Server, los tamaños de bloque de los volúmenes que alojan datos, registros y TempDB
deben alinearse con esto y establecerse en 64 KB. Puede verificar el tamaño del bloque del
disco ejecutando el script de Windows PowerShell, fsutil para recopilar las propiedades NTFS
del volumen. El script supone que f: es el volumen cuyo tamaño de bloque desea determinar.
# Populate the drive letter you want to check
$drive = "f:"
# Initialize outputarray
$outputarray = new-object PSObject
$outputarray | add-member NoteProperty Drive $drive
# Initialize output
$output = (fsutil fsinfo ntfsinfo $drive)
# Split each line of fsutil into a seperate array value
foreach ($line in $output) {
$info = $line.split(':')
$outputarray | add-member NoteProperty $info[0].trim().Replace(' ','_')
$info[1].trim()
$info = $null
# Format and display results
$results = 'Disk Block Size for ' + $drive + ' ' + $outputarray.Bytes_Per_ Cluster/1024 + 'KB'
$results
CONSIDERACIONES DEL SO
Revisar configuración del servidor para alto rendimiento (de la configuración de ahorro de
energía) y la de mejorar rendimiento de aplicaciones en segundo plano.
SEGUIR CAPITULO 2, PAG 81 Provisioning Instance Security
Invoke-Sqlcmd –serverinstance "localhost\PROSQLADMINCORE2" -query
"SELECT @@SERVERNAME"
sp_estimate_data_compression_savings
EXEC sp_estimate_data_compression_savings @schema_name = 'dbo', @object_
name = 'ExistingOrders',
@index_id = NULL, @partition_number = NULL, @data_compression ='ROW' ;
EXEC sp_estimate_data_compression_savings @schema_name = 'dbo', @object_
name = 'ExistingOrders',
@index_id = NULL, @partition_number = NULL, @data_compression ='PAGE' ;
ALTER TABLE ExistingOrders
REBUILD WITH (DATA_COMPRESSION = ROW) ;
--Compress partition 1 with ROW compression ALTER TABLE ExistingOrders REBUILD PARTITION
= 1 WITH (DATA_COMPRESSION = ROW) ; GO
--Remove compression from the whole table ALTER TABLE ExistingOrders REBUILD WITH
(DATA_COMPRESSION = NONE) ;
In order to use the SWITCH operation with partitions, both partitions must have the same level
of compression selected. If you use MERGE, then the compression level of the destination
partition is used. When you use SPLIT, the new partition inherits its compression level from the
original partition.
If you wish to use sp_configure to change the value of a setting, as opposed to just viewing it,
then you must run the procedure with two parameters being passed in. The first of these
parameters is called configname and is defined with a VARCHAR(35) data type. This parameter
is used to pass the name of the setting that you wish to change.
The second parameter is called configvalue and is defined as an integer. This parameter is used
to pass the new value for the setting. After you have changed an instance-level setting using
sp_configure, it will not immediately take effect. To activate the setting, you will need to either
restart the Database Engine Service or reconfigure the instance.
There are two options for reconfiguring the instance. The first is a command called
RECONFIGURE. The second is a command called RECONFIGURE WITH OVERRIDE. The
RECONFIGURE command will change the running value of the setting as long as the newly
configured value is regarded as “sensible” by SQL Server. For example, RECONFIGURE will not
allow you to disable contained databases when they exist on the instance. If you use the
RECONFIGURE WITH OVERRIDE command, however, this action would be allowed, even though
your contained databases will no longer be accessible. Even with this command, however, SQL
Server will still run checks to ensure that the value you have entered is between the Min and
Max values for the setting.
The first time you run the sp_configure stored procedure with no parameters in SQL Server
2022, it will return 29 rows. These rows contain the basic configuration options for the
instance. One of the options is called Show Advanced Options. If you turn on this option and
then reconfigure the instance, as demonstrated in Listing 5-1, then an additional 52 advanced
settings will be displayed when you run the procedure. If you try to change the value of one of
the advanced options before turning on the Show Advanced Options setting, then the
command will fail. Listing 5-1. Showing Advanced Options EXEC sp_configure 'show advanced
options', 1 RECONFIGURE.
As an alternative to viewing these settings with sp_configure, you can also retrieve the same
information by querying sys.configurations. If you use sys.configurations to return the
information, then two additional columns will be returned. One of these columns is called
is_dynamic, and it designates if the option can be configured with the RECONFIGURE command
(1) or if the instance needs to be restarted (0). The other column is called is_Advanced, and it
indicates if the setting is configurable without Show Advanced Options being turned on
Uso de sp_configure Puede cambiar muchos de los ajustes que puede configurar en el nivel de
instancia mediante el procedimiento almacenado del sistema sp_configure. Puede utilizar el
procedimiento sp_configure para ver y cambiar los ajustes en el nivel de instancia. Este
procedimiento se utilizará en muchos ejemplos a lo largo de este libro, por lo que es
importante que comprenda cómo funciona. Si un procedimiento es la primera instrucción del
lote, puede ejecutarlo sin la palabra clave EXEC, pero debe utilizar la palabra clave EXEC si hay
instrucciones anteriores.
Si el procedimiento se ejecuta sin parámetros, devolverá un conjunto de resultados de cinco
columnas.
El significado de estas columnas se detalla en la Tabla 5-1.
Si desea utilizar sp_configure para cambiar el valor de una configuración, en lugar de
simplemente verlo, debe ejecutar el procedimiento con dos parámetros que se pasan. El
primero de estos parámetros se denomina configname y se define con un tipo de datos
VARCHAR(35). Este parámetro se utiliza para pasar el nombre de la configuración que desea
cambiar. El segundo parámetro se denomina configvalue y se define como un entero. Este
parámetro se utiliza para pasar el nuevo valor de la configuración. Una vez que haya cambiado
una configuración a nivel de instancia mediante sp_configure, no tendrá efecto de inmediato.
Para activar la configuración, deberá reiniciar el Servicio de motor de base de datos o
reconfigurar la instancia. Hay dos opciones para reconfigurar la instancia. La primera es un
comando denominado RECONFIGURE. El segundo es un comando denominado RECONFIGURE
WITH OVERRIDE. El comando RECONFIGURE cambiará el valor de ejecución de la configuración
siempre que SQL Server considere que el valor recién configurado es "sensato". Por ejemplo,
RECONFIGURE no le permitirá deshabilitar bases de datos contenidas cuando existan en la
instancia. Sin embargo, si utiliza el comando RECONFIGURE WITH OVERRIDE, esta acción se
permitirá, aunque sus bases de datos contenidas ya no serán accesibles. Sin embargo, incluso
con este comando, SQL Server seguirá ejecutando comprobaciones para garantizar que el valor
que ha introducido se encuentre entre los valores Mínimo y Máximo de la configuración.
Tampoco le permitirá realizar ninguna operación que provoque errores graves. Por ejemplo, no
le permitirá
configurar la configuración de Memoria mínima del servidor (MB) para que sea mayor que la
configuración de Memoria máxima del servidor (MB), ya que esto provocaría un error fatal en
el Motor de base de datos.
La primera vez que ejecute el procedimiento almacenado sp_configure sin parámetros en
SQL Server 2022, devolverá 29 filas. Estas filas contienen las opciones de configuración básicas
para la instancia. Una de las opciones se llama Mostrar opciones avanzadas. Si activa esta
opción y luego vuelve a configurar la instancia, como se muestra en el Listado 5-1,
se mostrarán 52 configuraciones avanzadas adicionales cuando ejecute el procedimiento.
Si intenta cambiar el valor de una de las opciones avanzadas antes de activar la configuración
Mostrar opciones avanzadas, el comando fallará.
Listing 5-1. Showing Advanced Options
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
Como alternativa a ver estas configuraciones con sp_configure, también puede recuperar la
misma información consultando sys.configurations. Si utiliza sys.configurations para devolver la
información, se devolverán dos columnas adicionales. Una de estas columnas se denomina
is_dynamic y designa si la opción se puede configurar con el comando RECONFIGURE (1) o si es
necesario reiniciar la instancia (0). La otra columna se denomina is_Advanced e indica si la
configuración se puede configurar sin que esté activada la opción Mostrar opciones avanzadas.
Afinidad del procesador De manera predeterminada, su instancia podrá utilizar todos los
núcleos de procesador dentro de su servidor. (Un procesador físico, también conocido como
socket o CPU, consta de múltiples núcleos, que son procesadores individuales). Sin embargo, si
utiliza la afinidad del procesador, los núcleos de procesador específicos se alinearán con su
instancia y estos serán los únicos núcleos a los que la instancia tendrá acceso. Hay dos razones
principales para limitar su instancia de esta manera. La primera es cuando tiene varias
instancias ejecutándose en el mismo servidor. Con esta configuración, puede encontrar que las
instancias compiten por los mismos recursos de procesador y, por lo tanto, se bloquean entre
sí. La afinidad del procesador se controla a través de una configuración llamada máscara de
afinidad.
Imagine que tiene un servidor con cuatro procesadores físicos, cada uno de los cuales tiene dos
núcleos.
Suponiendo que la tecnología Hyper-Threading está desactivada para el propósito de este
ejemplo, habría un total de ocho núcleos disponibles para SQL Server. Si tuviera cuatro
instancias en el servidor,
para evitar que compitan por los recursos, podría alinear los núcleos 0 y 1 con la instancia 1, los
núcleos 2 y 3 con la instancia 2, los núcleos 4 y 5 con la instancia 3 y los núcleos 6 y 7 con la
instancia 4. Por supuesto, la desventaja de esto es que no se utilizan los recursos de CPU si una
instancia está inactiva.
Si tiene otros servicios ejecutándose en el servidor, como SQL Server Integration
Services (SSIS), es posible que desee dejar un núcleo disponible para Windows y otras
aplicaciones, que no puede ser utilizado por ninguna de las instancias. En este caso, es posible
que haya identificado que la instancia 4 utiliza menos recursos de procesador que las otras
instancias. Puede ser una instancia dedicada a ETL (extracción, transformación y carga), por
ejemplo, y que se utilice principalmente para alojar el catálogo SSIS. En este caso, puede
alinear la instancia 4 solo con el núcleo 6. Esto dejaría el núcleo 7 libre para otros fines.