El próximo 24 de enero de 2015 tendrá la oportunidad de participar en el evento SQLSaturday #346 El Salvador el cual se llevará a cabo en la Universidad Matías Delgado, SQLSaturday es un evento gratuito orientado a profesionales que trabajan con el motor de base de datos Microsoft SQL Server.

En este evento, tendremos una serie de conferencias impartidas por expertos que cubrirán diferentes aspectos asociados con el motor de base de datos tales como inteligencia de negocios, minería de datos, desarrollo, conjunto en la nube y técnicas de optimización.

En mi caso entre la oportunidad de impartir dos charlas:

La primera de ellas está orientada hacia los diferentes conceptos están asociados con la tecnología de Big Data, y como la podemos integrar con ambientes de motores relacionales tales como lo es SQL server, además esta presentación veremos como cuando se integrar productos de Microsoft para lograr una solución completa por medio de el análisis de datos dentro de Excel utilizando las herramientas de PowerPivot y PowerView.

La segunda charla será sobre el uso de las herramientas de minería de datos de la tecnología mal específicamente veremos un caso de la vida real sobre cómo utilizar análisis de datos para predecir el comportamiento del uso de los servidores web este caso de los portales, así como la integración con la realización de herramientas orientadas usuario final tales como lo son Excel y PowerView. Esta charla inicia con la presentación de los conceptos fundamentales de minería de datos y su relación con todo lo que serían los algoritmos de aprendizaje automático, también analiza cuando es aplicable distintos algoritmos para el análisis de los datos y y se muestra con ejemplos como la mala elección de un algoritmo puede llevar a resultados equivocados.

Las anteriores son sólo dos de las más de 20 charlas que estarán impartiendo ese día, los invito a que se registren puesto que el espacio con que contamos es limitado https://www.sqlsaturday.com/346/eventhome.aspx

Saludos,

Ing. Eduardo Castro
Microsoft SQL Server MVP
Comunidad Windows Costa Rica

 

A partir de la versión de SQL server 2014 Microsoft ha incluido la capacidad de que se pueda integrar una forma sencilla las capacidades de la base de datos local con los recursos están disponibles en honor, por ejemplo utilizar el almacenamiento casi ilimitado que existe en la nube para poder almacenar ciertos aspectos que puede ser por ejemplo puedo realizar operaciones de respaldo hacia la nube, de esta forma podría estar utilizando el almacenamiento de forma elástica para poder guardar cada uno de los respaldos que se están realizando de mis servidores locales.

También existe la capacidad que los archivos de datos de SQL pueden ser almacenados en la nube, de esta forma pudo tener un ambiente híbrido, en el cual tengo una instancia local de SQL server que está utilizando como archivo de datos en almacenamiento está en la nube de Microsoft. Una de las ventajas que presenta SQL server 2014 es que ahora en la integración con la nube se pueda hacer directamente desde el SQL Server Management Studio.

En el caso del cuerpo con una versión de SQL server 2002 con el SP1 podrá realizar los respaldos de SQL server directamente hacia el almacenamiento en la nube, una de las principales ventajas de almacenar los respaldos de SQL server en la nube son los siguientes:

1. Los respaldos de sus bases de datos están haciendo almacenados en un ambiente alterno, de esta forma se cumple con las regulaciones que exigen que se deben contener respaldos localmente y además respaldos alternos, esto para hacer posible la recuperación de datos en caso de desastre.

2. Una de las ventajas que presenta la plataforma de la nube de Microsoft es que todo el almacenamiento cuenta con alta redundancia, quiere decir que yo puedo configurar para que todos los respaldos que se realizan en la nube sean también replicados entre diferentes data Center de Microsoft, de esta forma si una zona geográfica es afectada por algún problema mis respaldos siempre estarán disponibles en una zona geográfica alterna.

Para poder realizar respaldos de SQL server directamente en la nube es necesario ejecutar algunos pasos los cuales vamos a establecer a continuación.

Inicialmente debe crear una credencial que permita que se tenga acceso al almacenamiento de la nube desde su servidor local, el siguiente código de ejemplo muestra cómo crear dicha credencial.

CREATE CREDENTIAL AlmacenamientoAzure
WITH
IDENTITY = ‘AzureIdentidad’,
SECRET = ‘XXXXXXXXXX-Llave acceso-XXXXXXXXXX';

En el código anterior se muestra que se debe ingresar una clave de acceso y dicha clave de acceso se obtiene desde la consola de administración de Azure.

Una vez que ha sido creada la credencial lo que se debe hacer es obtener el URL de acceso al almacenamiento en la nube, este URL es el que se crea cuando uno está estableciendo su cuenta de almacenamiento en la nube y cuando se crea el contenedor de archivos. El siguiente código de ejemplo muestra cómo respaldar una base de datos de SQL Server local hacia el contenedor de archivos en la nube.

BACKUP DATABASE BD_FINANZAS
TO URL = ‘MiRespaldoSQL2014.blob.core.windows.net/backups/BD_FINANZAS.bak’
WITH CREDENTIAL = ‘AlmacenamientoAzure';

 

Saludos,

 

Ing. Eduardo Castro, PhD

Microsoft SQL Server MVP

Comunidad Windows http://tinyurl.com/comunidadwindows

 

La instalación de SQL server cuenta ahora con soporte para poder ser instalado con base en una plantilla, esto es posible debido a que se ha agregado soporte para que SQL server sea compatible con la herramienta de configuración sysprep. Con este tipo de instalación es posible realizar una instalación de SQL server de forma tal que tengamos una máquina ya previamente configurada, esta máquina puede ser utilizada como plantilla que va a ser la base para la creación de nuevas máquinas basadas en SQL server, dicho esto el uso de plantillas de instalación de SQL server es muy útil cuando estamos hablando de ambientes de visualización, de esta forma lo que vamos hacer es primero crear una instalación base de Windows server 2012 o Windows server 2012 guerreros, en esa máquina base vamos a realizar una instalación de SQL server, dicha instalación es una instalación específica de SQL server donde se instalan todos los archivos de programas requeridos por SQL server, sin embargo no se hace ninguna configuración que sea específica a la configuración del servidor tales como el nombre de las instancias o la clave de administración de SQL server. Una vez que nosotros hemos realizado esta instalación de SQL server, esta máquina de plantilla puede ser utilizada como base para crear otras máquinas virtuales, una vez creada la nueva máquina virtual utilizando la base creada anteriormente es posible levantar dicha máquina virtual y completar la instalación de SQL server la instalación de esta nueva instancia de SQL server puede ser realizada de forma manual interactiva o por medio de la línea de comandos, con esto lo que se hace es que se acelera el proceso de creación de máquinas virtuales basadas en SQL server.

En el caso de que estemos utilizando el System Center Virtual Machine Manager, podemos incluir esta plantilla dentro de la biblioteca de instancias preparadas de máquinas virtuales y una vez que nosotros deseamos crear una nueva máquina virtual que contiene SQL server podemos utilizar la consola de administración para crear dicha máquina virtual e incluso podemos especificar un archivo de configuración que puede ser utilizado para completar la instalación una vez que la creación de la máquina virtual ha sido completada. De forma adicional también se pueden establecer algunos scripts que pueden ser ejecutados una vez que se haya terminado de crear la máquina virtual con base en la plantilla previamente creada.

Esta característica es muy útil en el caso de estar administrando centros de datos o cuando es necesario poder hacer el aprovisionamiento rápido de máquinas que estén ejecutando SQL server por ejemplo para ambientes de pruebas o para ambientes de desarrollo.

Los pasos para la instalación o preparación de un instalación de SQL server basado en plantillas lo pueden consultar en el siguiente enlace http://msdn.microsoft.com/en-us/library/ee210664.aspx

 

Saludos,

Ing. Eduardo Castro, PhD

Microsoft SQL Server MVP

Cuando se tienen servidores ejecutando SQL server que están en versiones anteriores a la 2014. Usualmente estos servidores están ejecutando en equipos de hardware que no es de los más nuevos y que contiene capacidades limitadas en cuanto a procesamiento, en estos casos es común que las empresas puedan adquirir nuevos equipos con mayores capacidades y es en este punto en cuanto se dan la oportunidad de ejecutar proyectos de consolidación de bases de datos, en el caso de SQL server se cuenta con distintas opciones para poder consolidar dichas bases de datos una de las primeras opciones con las que cuentan las personas es adquirir un equipo con grandes capacidades y poder instalar una instancia por de SQL server y dentro de esa instancia instalar todas las bases de datos que estaban en equipos legados, sin embargo también se pueden optar por otras opciones tales como la creación de diferentes instancias de bases de datos en este caso SQL server para albergar cada una de las aplicaciones o de las distintas aplicaciones que estaban en los servidores legados, otro de los enfoques es poder utilizar las capacidades de visualización, en el caso de visualización lo que se puede hacer es crear máquinas virtuales que ejecutan dentro de Windows server 2012 R2 y dentro de cada una de sus máquinas virtuales instalar una instancia de SQL server, en el caso de visualización nos ofrece el nivel más alto de aislamiento de los servidores puesto que tanto el sistema operativo como la instalación de SQL server son independientes y la configuración puede ser realizada en forma específica para cada uno de los servidores y las aplicaciones que lo van estar utilizando, debemos recordar que cuando se utiliza visualización basada en Microsoft se recomienda utilizar el System Center Virtua Machine Manager.

En el caso de consolidar todas las bases de datos en una única instancia se va llegar a la necesidad de poder establecer prioridades en cuanto a la ejecución de las consultas y el uso de los recursos del servidor físico o virtual, en este caso SQL server 2014 nos ofrece la opción de poder utilizar el gobierno de recursos conocido en inglés como Resource Governor.

El gobierno de recursos en SQL server 2014 se establece a nivel de instancia y permite poder establecer la contención para recursos tales como procesador, memoria y disco de forma tal de que se puedan compartir y establecer prioridades de estos aspectos de equipo compartidos entre diferentes bases de datos que ejecutan dentro de la misma instancia.

Cuando se desean establecer prioridades de ejecución para distintas bases de datos en un instancia de SQL server se utiliza el gobierno recursos en el cual se tiene que configurar primero varios pasos el el primer paso es crear un pool de recursos después establecer grupos de carga de trabajo y finalmente establecer una función de clasificación. La función de clasificación nos permite establecer la forma en que se haga asignar las prioridades de recursos de SQL server, o sea establecer cuál es el criterio para dar mayor prioridad en cuanto a uso de procesador, memoria y acceso al disco.

La forma más sencilla de poder hacer la configuración de el gobierno de recursos en SQL server es mediante la ejecución de scripts de T-SQL, el siguiente es un ejemplo de un script que se puede utilizar para poder configurar el gobierno de recursos en SQL server.

El primer paso es crear las definiciones de los pool de recursos, en el siguiente ejemplo se crean dos pool de recursos uno que establece baja prioridad y otro que establece alta prioridad, estos pool de recursos después van a ser utilizados durante la configuración del gobierno de recursos de SQL server. Un ejemplo se muestra se establecen los límites de uso de CPU y memoria para cada uno de los pool de recursos estos parámetros son distintos para el pool de baja prioridad con respecto al punto de alta prioridad estos un que han sido creados en este momento van a ser utilizados de forma posterior para la creación de los grupos que establecen las cargas de trabajo con los cuales se va configurar el gobierno de recursos en SQL server.

Use master;
CREATE RESOURCE POOL [baja prioridad]
   WITH(min_cpu_percent=0,
        max_cpu_percent=15,
        min_memory_percent=0,
        max_memory_percent=15);

CREATE RESOURCE POOL [alta prioridad] WITH(min_cpu_percent=20,
        max_cpu_percent=85,
        min_memory_percent=50,
        max_memory_percent=85);

El siguiente paso corresponde a la creación de las cargas de trabajo, en los siguientes scripts se crean dos definiciones de carga de trabajo, una definición va ser utilizada para los recursos que requiere alta prioridad y la otra para los recursos que requieren baja prioridad, por ejemplo en la carga de trabajo A, se esta estableciendo como una carga de trabajo de baja prioridad, esto se puede apreciar en la asignación de tiempo de CPU asignado y la asignación de cantidad de uso de memoria asignado a los trabajos que están clasificados dentro de este tipo de carga de trabajo.

CREATE WORKLOAD GROUP [CargaTrabajoA] WITH(group_max_requests=10,
        importance=Low,
        request_max_cpu_time_sec=15,
        request_max_memory_grant_percent=15,
        request_memory_grant_timeout_sec=15,
        max_dop=1) USING [baja prioridad];

CREATE WORKLOAD GROUP [CargaTrabajoB] WITH(group_max_requests=100,
        importance=High,
        request_max_cpu_time_sec=85,
        request_max_memory_grant_percent=85,
        request_memory_grant_timeout_sec=40,
        max_dop=4) USING [alta prioridad];

Después de haber creado las cargas de trabajo se debe realizar el siguiente comando para qué el gobernador de recursos se configure con respecto a lo que nosotros hemos establecido con los comandos anteriores de SQL server.

ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

Una vez creadas los pool es de recursos y las cargas de trabajo es necesario crear un recurso conocido como función de clasificación, la función de clasificación es la forma en la cual SQL server se va a dar cuenta sobre cual carga de trabajo tiene que ser asignada a un estatuto específico o a una base de datos en específico, por ejemplo en el siguiente script se está creando una función de clasificación de gobierno de recursos cuyo criterio está basado en el nombre de la base datos, por ejemplo a la base datos de finanzas se está asignando la carga de trabajo tipo B y a la base datos de recursos humanos se le asigna la carga de trabajo tipo A, podemos recordar que esta última carga de trabajo tiene asignado baja prioridad.

CREATE FUNCTION dbo.fn_clasificacion_gobierno_recursos() RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @retval sysname = ‘Default';
    IF (ORIGINAL_DB_NAME() = ‘BD_FINANZAS’)
        SET @retval = ‘CargaTrabajoB';
    IF (ORIGINAL_DB_NAME() = ‘BD_RH’)
        SET @retval = ‘CargaTrabajoA';   
    RETURN @retval;
END
GO

Finalmente tenemos que configurar el gobierno de recursos de SQL server para que utilicen la función de criterios de gobierno de desempeño que han sido definidos anteriormente.

ALTER RESOURCE GOVERNOR
    WITH (CLASSIFIER_FUNCTION = dbo.fn_clasificacion_gobierno_recursos);
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

En resumen podemos decir que SQL server 2014 cuenta con las funcionalidades para poder establecer rivalidades con respecto al uso de recursos, lo cual es muy útil cuando dentro de una misma instancia se están ejecutando bases de datos donde una de las cuales necesita mayor acceso o prioridad de acceso a los recursos con respecto a las otras bases de datos, de esta forma podemos asignar mayores recursos a una base de datos esto sin dejar de poder ejecutar las operaciones del resto de base de datos solo que van a ser ejecutadas con una prioridad menor.

 

Saludos,

Ing. Eduardo Castro, PhD

Microsoft SQL Server MVP

Comunidad Windows Costa Rica

http://tinyurl.com/comunidadwindows

Si deseamos tener una configuración de escalabilidad de Analysis Services en SQL Server, tenemos que considerar lo siguiente:

  • Opciones para la distribución de la carga de trabajo
  • Proceso para ajustar la escala de salida de Analysis Services

Para podemos seguir alguna de las siguientes estrategias:

 

  • Utilice un servidor separado para cada base de datos de Analysis Services
  • Utilice un servidor independiente para el almacén de datos relacional
  • Utilice un servidor de ensayo para el procesamiento

 

image

En el caso de alta disponibilidad podemos utilizar un balanceador de carga o un clúster de servidores, tal y como se muestra a continuación:

image

Un diseño de escalablidad lo mostramos en la siguiente figura:

image

 

Saludos,

 

Ing. Eduardo Castro, PhD

Microsoft SQL Server MVP

Cuando tenemos un SQL Server 2012 con AlwaysOn, el uso de copias secundarias activas es de gran ayuda, ya que las copias secundarias activas permite utilizar major el hardware que en el scenario de HA/DR:

  • Liberar trabajo al primario
  • Cargas de trabajo de solo léctura
  • Realización de respaldos

 

Este uso lo podemos observar en las siguientes diagramas:

image

 

 

image

 

Para configurar las copias secundarias como de solo lectura podemos utilizar los siguientes estatutos:

 

 

image

 

image

 

Una vez configurado los clientes se pueden conectar a la copia secundaria sin cambios.

 

Saludos,

 

Ing. Eduardo Castro, PhD

Microsoft SQL Server MVP

En la versión de SQL Server 2012 se permite el soporte de almacenamiento en un servidor de archivos mediante SMB, esto nos provee ciertas ventajas:

  • Red compartido provee acceso a un almacenamiento remoto consolidado
  • Alto desempeño
  • Alta disponibilidad
  • Administración sencilla
  • Se administran archivos compartidos SMB en lugar de LUNs
  • Relocación dinámica de los servidor o servicios
  • Reduce la complejidad de una solución SQL Server

El siguiente esquema muestra de forma general el uso de SMB con SQL Server 2012

 

image

Por qué ahora se puede utilizar SMB? Sencillamente el SMB ha cambiado y se han presentado los siguientes avances:

  • Hardware de Ethernet más confiables
  • En algunos casos la velocidad se aproxima a Fibra Canal
  • Nuevas capacidad de alta disponibilidad de SMB
  • SMB Multichannel – tolerancia a fallas de red
  • SMB Transparent Failover – tolerancia a fallas de servidor
  • Nuevas formas de desempeño de SMB
  • SMB Multichannel – agregación de ancho de banda
  • SMB Direct – soporte para tarjeta RDMA
  • Nuevas opciones de almacenamiento en los servidores de archivos
  • Storage Spaces – virtualización de almacenamiento
  • Cluster-in-a-box – controladores Clustered RAID

En cuanto a las versiones de SQL Server, éstas son las opciones según la opción de SQL Server:

  • SQL Server 2008 R2
    • Brinda soporte inicial para almacenar base de datos de usuarios en SMB
  • SQL Server 2012
    • Soporte para clúster de SQL Server utilizando SMB
    • Soporte para bases de datos del sistema en SMB
    • Soluciona problemas de desempeño (253493)

 

Saludos,

Ing. Eduardo Castro

Microsoft SQL Server MVP

Follow

Get every new post delivered to your Inbox.