Wednesday, January 14, 2015

SQL Saturday El Salvador 2015

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

Thursday, January 08, 2015

Almacenamiento en la nube y SQL server 2014

 

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

Instalación de SQL server basado en plantillas

 

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

Consolidación de servidores en SQL server 2014

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

Thursday, December 04, 2014

Diagnosticar el desempeño en SQL Azure Database


Cuando se tiene un base de datos en Azure, muchas veces es necesario tomar algunas estadisticas del uso de la base de datos para determinar si tenemos que aumentar el nivel de servicio de Azure, o sea aumentar los DTU asignados a nuestra base de datos, a continuación les muestro algunas consultas importantes para ver cual es el desempeño actual y determinar si tenemos que hacer cambios. Los consultas son una adaptación de los artículos de desempeño del MSDN.

-- SQL MAS INTENSIVOS
SELECT highest_cpu_queries.plan_handle, highest_cpu_queries.total_worker_time, q.dbid,
q.objectid, q.number, q.encrypted, q.[text]
FROM
(SELECT TOP 10 qs.plan_handle, qs.total_worker_time
FROM sys.dm_exec_query_stats qs
ORDER BY qs.total_worker_time desc) AS highest_cpu_queries
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS q
ORDER BY highest_cpu_queries.total_worker_time desc

--USO DE CPU

SELECT TOP 10 query_stats.query_hash AS 'QueryHash',
SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS 'AvgCPUTime',
MIN(query_stats.statement_text) AS 'StatementText'
FROM
(SELECT QS.*,
SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE QS.statement_end_offset END
- QS.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS QS
CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats
GROUP BY query_stats.query_hash
ORDER BY 2 DESC

-- TIEMPO EJECUCION CONSULTAS

SELECT TOP 10 r.session_id, r.plan_handle, r.sql_handle, r.request_id, r.start_time, r.status,
r.command, r.database_id, r.user_id, r.wait_type, r.wait_time, r.last_wait_type,
r.wait_resource, r.total_elapsed_time, r.cpu_time, r.transaction_isolation_level, r.row_count, st.text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) as st
WHERE r.blocking_session_id = 0
and r.session_id in
(SELECT distinct(blocking_session_id) FROM sys.dm_exec_requests)
GROUP BY r.session_id, r.plan_handle, r.sql_handle, r.request_id, r.start_time, r.status,
r.command, r.database_id, r.user_id, r.wait_type, r.wait_time, r.last_wait_type,
r.wait_resource, r.total_elapsed_time, r.cpu_time, r.transaction_isolation_level,r.row_count, st.text
ORDER BY r.total_elapsed_time desc


-- ESCRITURAS LOGICAS

SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1) SQLStatement,
qs.execution_count,
qs.total_logical_reads, qs.last_logical_reads,
qs.total_logical_writes, qs.last_logical_writes,
qs.total_worker_time,
qs.last_worker_time,
qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY qs.total_logical_writes DESC

-- LECTURAS

SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1) SQLStatement,
qs.execution_count,
qs.total_logical_reads, qs.last_logical_reads,
qs.total_logical_writes, qs.last_logical_writes,
qs.total_worker_time,
qs.last_worker_time,
qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY qs.total_logical_reads DESC

-- TIEMPO EJECUCION

SELECT TOP 10
qs.total_elapsed_time / qs.execution_count / 1000000.0 AS average_seconds,
qs.total_elapsed_time / 1000000.0 AS total_seconds,
qs.execution_count,
SUBSTRING (qt.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE
qs.statement_end_offset
END
- qs.statement_start_offset)/2) AS individual_query,
o.name AS object_name,
DB_NAME(qt.dbid) AS database_name
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
LEFT OUTER JOIN sys.objects o ON qt.objectid = o.object_id
where qt.dbid = DB_ID()
ORDER BY average_seconds DESC;

-- MAS I/O

SELECT TOP 10
(total_logical_reads + total_logical_writes) / qs.execution_count AS average_IO,
(total_logical_reads + total_logical_writes) AS total_IO,
qs.execution_count AS execution_count,
SUBSTRING (qt.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) AS indivudual_query,
o.name AS object_name,
DB_NAME(qt.dbid) AS database_name
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
LEFT OUTER JOIN sys.objects o ON qt.objectid = o.object_id
where qt.dbid = DB_ID()
ORDER BY average_IO DESC;

Tuesday, April 01, 2014

Opciones de escalabilidad de Analysis Services en SQL Server

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

SQL Server 2012 configuración de opciones AlwaysOn

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

SQL Server 2012 Almacenamiento con SMB

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

Qué mejoras posee SQL Server 2012 Clúster en Windows 2012

En este artículo enumeramos las mejoras que presenta SQL Server 2012 cuando ejecuta dentro una máquina con Windows Server 2012.

 

Mejoras en la validación del clúster

Mejoras en desempeño de validación del almacenamiento

Incluye pruebas de validación de Clúster de Hyper-V

Provee control granular sobre la validación de LUN específicos

Verificación de los requerimientos de CSV

Replicated hardware aware para multi-site clusters

Mejor escalabilidad

Mejoras de scale out y scale up

4x más escable que Windows Server 2008 R2

Scale out hasta 64-nodes

Scale up hasta 4,000 VMs por clúster

Hasta 1,024 VMs por nodo

Mejor seguridad
Volúmenes de cluster encriptados

Discos del cluster encriptados con BitLocker

Soporta discos de conmutación normales

Soporta for Cluster Shared Volumes

Los volúmenes son desencriptados por cada nodo utilizando Cluster Name Object (CNO)

Permite la seguridad física fuera de centro de datos principales

Encriptación a nivel de volumen para cumplir con normativas de seguridad

Soporte en HyperV
Fibra canal desde la máquina virtual

Clustering de MV

El servicio de clúster ejecuta dentro de la MV

Las aplicaciones y servicios dentro de la MV son administradas por el clúster

Las aplicaciones se mueven dentro del cluster de MV

Antes requería iSCSI

Nuevo “Fibre Channel Adapter”

Se pueden asignar hasta 4 HBA virtuales a cada MV

 

Saludos,

 

Ing. Eduardo Castro

Microsoft SQL Server MVP

Thursday, February 13, 2014

Script de instalación de SQL Server 2012 Core

Para realizar la instalación de SQL Server Core es necesario conocer los comandos de PowerShell, en este artículo les comparto los comandos principales para instalación.

El comando inicial que van  a necesitar es sconfig  con este utilitario van a poder fácilmente cambiar la IP de la máquina, cambiarle el nombre y unirla al dominio si es necesario.

Posteriormente necesitan instalar el .NET Framework para lo cual tiene dos opciones con  PowerShell o con DISM:

//Instalar .NET Core
Install-WindowsFeature NET-Framework-Core –Source D:\Sources\sxs

//Using DISM from the command prompt, specify the source files path parameter:

DISM /Online /Enable-Feature /FeatureName:NetFx3 /Source:d:\sources\sxs

Posteriormente deben configurar el Firewal para permitir la conexión remota al SQL Server, los comandos son los siguientes:

//minimo firewall
netsh advfirewall firewall add rule name="Open SQL Server Port 1433" dir=in action=allow protocol=TCP localport=1433
netsh advfirewall firewall add rule name="SQL Server Analysis Services inbound on TCP 2383" dir=in action=allow protocol=TCP localport=2383 profile=domain

//excepcion de puertos dinamicos
netsh advfirewall firewall add rule name="SQL Server Browser Services inbound on TCP 2382" dir=in action=allow protocol=TCP localport=2382 profile=domain

//adminsitraicon remota

netsh advfirewall firewall set rule group="Windows Management Instrumentation (WMI)" new enable=yes
netsh advfirewall firewall set rule group=“remote event log management” new enable=yes

Deben insertar el disco de SQL Server y si intentan ejecutar el setup.exe se mostrará un mensaje de error, si desean instalar utilizando la interfaz gráfica utilicen el siguiente comando:

 

//utilizar el comando para ver la interfaz grafica

setup.exe /UIMODE=EnableUIonServerCore

 

También está la opción de instalación por línea de comando, recuerden cambiarlos nombres de las cuentas y las contraseñas:

 

//por linea de comandos
Setup.exe /QS /ACTION=Install /FEATURES=SQLENGINE,REPLICATION,CONN,IS /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT=AdventureWorks\sqlservicecore /SQLSVCPASSWORD=P@ssw0rd /SQLSYSADMINACCOUNTS=AdventureWorks\Administrator /AGTSVCACCOUNT=AdventureWorks\sqlserviceCore /AGTSVCPASSWORD=P@ssw0rd /TCPENABLED=1 /IACCEPTSQLSERVERLICENSETERMS=1 /UPDATEENABLED=False

Saludos,

Ing. Eduardo Castro

Microsoft SQL Server MVP

Tuesday, October 22, 2013

Bodegas de Datos: Planeando una arquitectura correcta

Por invitación e iniciativa de mi amigo Alberto Rivera Tavera de la Comunidad Intermezo y junto a Microsoft TechNet, el próximo jueves 24 de Octubre se llevará a cabo el evento totalmente en línea “Maratón de Inteligencia de Negocios” en el cual estaré presentando el tema.

Planeando una arquitectura correcta de Bodegas de Datos

Durante mi presentación, buscaré aclarar los conceptos básicos de bodegas de datos, las tecnologías Microsoft involucradas así como los errores más comunes en este tipo de proyectos.
image






Para registrarse en mi sesión deben visitar el siguiente link: http://bit.ly/1h5WCMy




La agenda completa de las sesiones las encuentran en el siguiente link it.ly/1a2BTpB la cual copio a continuación. Como verán, tenemos todos los temas del momento, presentadas por muy buenos amigos de toda latinoamérica. Todos las horas están en GTM-5 (Hora de Bogotá / Lima):


8 am | Power Query and Power Map Preview para Excel 2013 
Juan Alvarado REGISTRO
9 am | Bodegas de datos: Planeando una arquitectura correcta
Eduardo Castro  REGISTRO 
10 am | Procesos incrementales con SQL Server Integration Services
Daniel  Calbimonte REGISTRO 
11 am | Data Quality Services: Cómo mantener estandarizada la información -
John Jairo Bocachica  REGISTRO
12 pm | Creación de Informes con Reporting Services en Azure
Freddy Angarita  REGISTRO
1 pm | El ABC de Master Data Management
Guillermo Taylor  REGISTRO
2 pm | Multidimensional VS Tabular. ¿Qué modelo elegir?-
Jesús Gil   REGISTRO
3 pm | Mirando hacia el futuro: Minería de Datos como herramienta predictiva de la organización-
Alberto Rivera REGISTRO
4 pm | Big Data, el qué, cómo y cuándo de grandes volúmenes de datos -
Alan Koo  REGISTRO
5 pm | Visualización de la información: Excel, PowerView y PerformancePoint Services-
Andrei Garzón  REGISTRO

Saludos,

Eduardo Castro
SQL Server MVP

Saturday, September 14, 2013

Utilizando DAX con SQL Server 2012 y Excel 2013

En SQL Server 2012 en conjunto con Excel 2013 podemos crear modelos de datos y después mejorar dichos modelos con DAX, en este artículo vamos a utilizar la muy conocidad base de datos Northwind para crear un modelo de datos tabular para después extenderlo con DAX.

Se inicia con descargar Nortwind de esta dirección http://businessimpactinc.com/install-northwind-database/, después la cargan en SQL Server y una vez con la base de datos local se puede crear un nuevo libro en Excel, conectarnos a Northwind e importar con PowerPivot las siguientes tablas Categories, Customers, Employees, Order Details, Orders, and Products

Después podemos agregar columnas calculadas y medidas con las siguientes instrucciones DAX

Ir a Orders Tab para calcular el año
Year
=YEAR(Orders[OrderDate])

Orders Details Tab Calcular el total de ventas
Sales Amount
='Order Details'[Quantity] * 'Order Details'[UnitPrice]


Products Tab Obtener la categoría de los productos
Category
=RELATED(Categories[CategoryName])

Customer Tab si la región está en blanco desplegar “No Region”
RegionName
=IF(ISBLANK(Customers[Region]),BLANK() & "No region",Customers[Region])

Orders Tab total de líneas en cada orden
TotalOrderLines

=COUNTX(RELATEDTABLE('Order Details'),'Order Details'[OrderID])

 

Saludos,

Eduardo Castro

Microsoft SQL Server MVP

http://tinyurl.com/comunidadwindows