Introducing-Microsoft-SQL-Server-2019 Es
Introducing-Microsoft-SQL-Server-2019 Es
com
Presentamos Microsoft
Servidor SQL 2019
Reservados todos los derechos. Ninguna parte de este curso puede reproducirse, almacenarse en un
sistema de recuperación ni transmitirse de ninguna forma ni por ningún medio sin el permiso previo por
escrito del editor, excepto en el caso de citas breves incluidas en artículos o reseñas críticas.
Se han hecho todos los esfuerzos posibles en la preparación de este curso para garantizar la
exactitud de la información presentada. Sin embargo, la información contenida en este curso se
vende sin garantía, ya sea expresa o implícita. Ni los autores, ni Packt Publishing, ni sus
comerciantes y distribuidores serán responsables de los daños causados o presuntamente
causados directa o indirectamente por este curso.
Packt Publishing se ha esforzado por proporcionar información sobre marcas registradas de todas las
empresas y productos mencionados en este curso mediante el uso apropiado de mayúsculas. Sin
embargo, Packt Publishing no puede garantizar la exactitud de esta información.
Autores: Kellyn Gorman, Allan Hirt, Dave Noderer, James Rowland-Jones, Arun Sirpal,
Dustin Ryan y Buck Woody
ISBN: 978-1-83882-621-5
Centro de datos y nube con sede en Boston y plataforma de datos MVP dualAllan HirtHa estado
trabajando con SQL Server desde 1992 y haciendo clustering en Windows Server desde los días
posteriores a Wolfpack. Comenzó con las bases de datos como pasante en SQL Solutions, que luego
fue comprada por Sybase, donde permaneció como pasante hasta el final de la universidad. Allan ha
utilizado todas las versiones de SQL Server que Microsoft lanzó para Windows. Fundó su propia
empresa, Megahirtz, en 2007 y ahora es socio de Max Myrick en SQLHA.
A menudo encontrará a Allan hablando en grupos de usuarios locales, sábados de SQL y varias
conferencias como PASS Summit, SQLBits y TechEd, además de realizar varios webcasts a lo
largo de los años. Ha escrito bastante contenido a lo largo de los años, incluidos artículos para
SQL Server Magazine y documentos técnicos para Microsoft que están disponibles en TechNet y
MSDN. Es autor o coautor de bastantes libros y está trabajando en su último,Servidor SQL de
misión crítica, que saldrá pronto.
David Nodereres el director ejecutivo, presidente y fundador de Computer Ways, Inc., una empresa
de desarrollo de software en Deerfield Beach, FL. Dave es ingeniero eléctrico de formación, diseñó
computadoras durante 20 años y ha estado escribiendo software desde que fundó Computer Ways,
Inc. en 1994. Dave pasó tres años como funcionario y director de INETA (Asociación
Internacional .NET), donde supervisó la inscripción. y soporte de cientos de grupos de usuarios en
todo el mundo y 16 años como MVP de Microsoft. Cofundó grupos de usuarios .NET de Florida en
2001 y desde entonces ha realizado reuniones en el sur de Florida. Desde 2005, ha dirigido el Code
Camp anual gratuito del sur de Florida. Este evento atrae a más de 1000 asistentes de
desarrolladores. Dave participa en actividades de la comunidad local como miembro de la junta
directiva de la Sociedad Histórica de Deerfield Beach, la Sociedad del Faro de Hillsboro y
TechLauderdale.org.
James Rowland-Jones (JRJ)es director principal de programas en Microsoft. Actualmente forma
parte del equipo de SQL Server trabajando en SQL Server 2019 Big Data Clusters y virtualización de
datos. Antes de unirse a SQL Server, JRJ trabajó extensamente en Azure SQL Data Warehouse. Ayudó
al equipo a lanzar Gen 1 del servicio y dirigió el esfuerzo de gestión de productos para llevar Gen 2 a
la versión preliminar.
A JRJ le apasiona ofrecer soluciones altamente escalables que sean creativas, simples y elegantes.
También es un entusiasta defensor de la comunidad SQL mundial; Anteriormente formó parte de la
junta directiva de PASS y al mismo tiempo ayudó a crear SQLBits, el evento de datos más grande de
Europa. JRJ recibió la acreditación MVP de Microsoft de 2008 a 2015 por sus servicios a la comunidad.
Arun Sirpales consultor de SQL Server y actualmente MVP de Microsoft Data Platform. Especializado tanto
en SQL Server como en Microsoft Azure, tiene más de 12 años de experiencia en el sector. tiene
experiencia en arquitectura, diseño y ajuste del rendimiento de servidores SQL físicos y virtualizados y
tiene una gran experiencia en el diseño de soluciones utilizando la plataforma de datos de Azure, incluida
Azure SQL Database, instancias administradas de Azure SQL Database, grupos elásticos y conceptos
híbridos. Arun también es un escritor, orador y revisor técnico frecuente y miembro de los grupos Azure
Advisors y SQL Advisors de Microsoft.
Dustin reside en las afueras de Jacksonville, Florida, con su esposa, tres hijos y un
gato de tres patas y disfruta pasar tiempo con su familia y servir en su iglesia local.
Buck WoodyTrabaja en el equipo de Azure Data Services en Microsoft y utiliza datos y tecnología
para resolver problemas empresariales y científicos. Con más de 35 años de experiencia
profesional y práctica en tecnología informática, también es un orador popular.
en conferencias alrededor del mundo; Autor de más de 700 artículos y ocho libros sobre bases de datos,
aprendizaje automático y R, también forma parte de varios comités de ciencia de datos en dos universidades
de EE. UU. y se especializa en técnicas avanzadas de análisis de datos.
Tabla de contenido
Prefacio i
Agregar índices de almacén de columnas agrupados a tablas optimizadas para memoria ................. 5
Configuración predeterminada del ámbito de la base de datos para operaciones DDL en línea y reanudables... 95
Compatibilidad con instancias de clúster de conmutación por error para servicios de aprendizaje automático ......... 96
Seguridad mejorada del clúster de conmutación por error de Windows Server ................................. 104
Mejoras del clúster de conmutación por error de Windows Server en Azure ................................ 107
¿Por qué mover bases de datos a SQL Server en Linux? ................................................ 145
Herramientas de consulta de línea de comandos para SQL en Linux ......................... .......... 163
Ampliación de su entorno utilizando una fuente de datos externa ODBC ......... 194
Crear tablas externas con Azure Data Studio ................................. ....... 200
Consejo #3: Coloque las instancias de SQL Server de su grupo escalable dentro de una subred..... 210
Consejo #4: ¡Complete esta lista de verificación previa a la instalación! ................................................. .. 211
Python para aprendizaje automático en SQL Server 2019 ................................. ........ 232
Uso del proceso de ciencia de datos en equipo con Machine Learning Services ........ 244
Componentes del clúster de big data de SQL Server 2019 ................................. ..... 256
Instalacion y configuracion ............................................... ................................ 257
Opciones de plataforma ................................................ ................................................. ...... 258
Operaciones de clúster de big data de SQL Server 2019 ................................. ................ 274
Uso de una tabla o vista derivada en una consulta MATCH de gráfico ......................... 294
Soluciones de extracción, transformación y carga con SQL Server Integration Services... 320
Mejores prácticas para cargar su almacén de datos con SSIS ................................ 321
Uso de ALTERAR LA CONFIGURACIÓN DEL ALCANCE DE LA BASE DE DATOS .................................. .... 329
Mejores prácticas para trabajar con Azure SQL Data Warehouse ........................ 334
Reducir costos escalando hacia arriba y hacia abajo ................................. ........................ 335
Características clave de Azure Data Lake Storage Gen2 ................................. .......... 345
Configuración de gobernanza para las actualizaciones de la caché de Power BI ................................. .... 368
Seguridad a nivel de fila para modelos de datos de Power BI ......................... ................ 398
Creación de una máquina virtual de Azure desde Azure Portal ................................. ......... 436
Creación de una máquina virtual con SQL Server 2019 desde la línea de comandos en Azure ................ 440
Seguridad para SQL Server en una máquina virtual de Azure ................................. ................. 443
Índice 453
t
Sé el héroe
Obtenga información valiosa de todos sus datos. A escala. Ponga a trabajar sus Obtenga ayuda con su
habilidades con bases de datos en la nube. Obtenga servicios de inteligencia artificial proyecto.Hable con un
Esta sección presenta brevemente la cobertura de este libro, las habilidades técnicas que necesitará
para comenzar y el hardware y software necesarios para completar el libro.
ii|Prefacio
Con cada versión, SQL Server ha mejorado en rendimiento, funciones, confiabilidad y seguridad. A medida que
avanzaban los lanzamientos, se agregaron más funciones y luego capacidades completamente nuevas: un
motor de trabajo, un servidor de informes, inteligencia empresarial y sistemas de extracción de datos. Las
tecnologías innovadoras, como las bases de datos en memoria y los índices de almacén de columnas,
convirtieron a SQL Server en uno de los sistemas de administración de bases de datos relacionales (RDBMS) más
instalados en el mundo.
En la primavera de 2016, Microsoft anunció que SQL Server estaría disponible en el sistema
operativo Linux, algo increíble para muchos profesionales técnicos. La adición de Platform
Abstraction Layer (PAL) en SQL Server le permitió ejecutarse en sistemas operativos Linux
como Ubuntu, Red Hat Enterprise Linux y SUSE. También agregó soporte para contenedores de
Linux, abriendo nuevas e increíbles posibilidades de implementación y operación.
SQL Server 2019 representa no solo una versión evolutiva, sino también una versión
revolucionaria. La promesa de los contenedores se cumple plenamente con el soporte de
Kubernetes. Los nuevos Big Data Clusters de SQL Server 2019 aprovechan Kubernetes como
plataforma de implementación y agregan el poder de Spark y Apache Hadoop File System (HDFS).
Además, SQL Server 2019 admite la virtualización de datos y cargas de trabajo con aplicaciones
implementables que se ejecutan localmente, en la nube e incluso en configuraciones híbridas. Esto
permite que SQL Server 2019 modernice su conjunto de datos y sus aplicaciones con inteligencia
sobre cualquier dato, estructurado y no estructurado.
Al igual que las versiones anteriores, SQL Server 2019 no se limita solo a la plataforma Windows.
Además de SQL Server 2019 en Windows, Linux y contenedores, Microsoft también anunció un nuevo
producto, Azure SQL Database Edge, que es un motor SQL Server de pequeño tamaño que se ejecuta
en dispositivos Edge y la plataforma ARM. Esto permite una experiencia de desarrollador consistente
desde el terreno hasta la nube y el borde. Agregue a esto la elección de plataforma y la elección de
lenguajes de programación como T-SQL, Java, C/C++, Scala, Node.js, C#/VB.NET, Python, Ruby y .NET
Core. ¿Necesitar más? También puedes agregar tus propios idiomas.
SQL Server 2019 admite el aprendizaje automático y la extensibilidad con R, Python, Java y Microsoft .NET.
Puede poner en funcionamiento sus modelos de aprendizaje automático cerca de los datos y los
desarrolladores pueden aprovechar Java y otros lenguajes del lado del servidor.
Acerca de Microsoft SQL Server 2019 |III
Pero no se trata sólo de nuevas funciones. SQL Server mantiene sus altos estándares en
rendimiento y seguridad. Esta versión cuenta con un rendimiento líder en la industria. tiene el
#1 en pruebas comparativas de rendimiento de OLTP y #1 en rendimiento de DW en cargas de trabajo de
DW no agrupadas de 1 TB, 3 TB y 10 TB. Admite memoria en todas las cargas de trabajo y es la plataforma
de datos local más consistente, tanto en IaaS como en PaaS. SQL Server 2019 tiene funciones de
procesamiento de consultas inteligentes que mejoran el rendimiento de consultas de misión crítica.
También admiten transacciones en memoria y análisis en memoria para procesamiento analítico y
transaccional híbrido.
SQL Server 2019 le permite resolver los desafíos de datos modernos. La virtualización de datos con
PolyBase le permite utilizar SQL Server 2019 como centro de datos, consultando datos directamente
desde fuentes de datos. Estas fuentes incluyen Oracle, SAP HANA, MongoDB, clústeres de Hadoop,
Cosmos DB y SQL Server, todos usando T-SQL y sin instalar software de conexión de cliente por
separado. SQL Server 2019 también le brinda información valiosa y nuevos informes completos, incluso
para BI móvil con Power BI Report Server.
SQL Server 2019 mejora la confiabilidad con varias características en la arquitectura de alta
disponibilidad y recuperación ante desastres y funciona con las características de disponibilidad
integradas en Kubernetes. Se recupera más rápido con Accelerated Database Recovery.
Este libro cubre estas características, le ofrece un recorrido por cada una de ellas y profundiza en
ejemplos del mundo real y códigos de muestra que puede probar por su cuenta. Elaborado por expertos
reconocidos y miembros del equipo que escribió el software, lo pondremos al día rápidamente y lo
prepararemos para comenzar su propia aventura con esta última versión de la mejor plataforma de
datos del mundo.
Capitulo 2,Seguridad y cumplimiento empresarial, cubre los elementos esenciales de SQL Server
2019 para garantizar que sus operaciones no se vean comprometidas y que cumplan con las
regulaciones de la industria para el uso de datos.
IV|Prefacio
Capítulo 3,Alta disponibilidad y recuperación ante desastres, cubre los métodos integrados de SQL Server 2019 para
aumentar la disponibilidad, minimizar el tiempo de inactividad por mantenimiento y ayudar cuando se producen
interrupciones.
Capítulo 4,Funciones híbridas: SQL Server y Microsoft Azure, analiza cómo SQL Server 2019 y Azure
Storage trabajan juntos para ofrecer soluciones de almacenamiento flexibles, altamente escalables y
listas para la empresa a precios competitivos.
Capítulo 5,Servidor SQL 2019 en Linux, analiza cómo SQL Server 2019 se basa en las
características de Linux en la versión 2017 para ofrecer aún más funcionalidad.
Capítulo 6,SQL Server 2019 en Contenedores y Kubernetes, explica cómo han evolucionado las
funciones de virtualización y cómo se puede implementar SQL Server en Docker y Kubernetes.
Capítulo 7,Virtualización de datos, destaca la posición de SQL Server 2019 como un centro de datos
empresarial moderno y cómo se pueden utilizar características como el procesamiento analítico y
transaccional híbrido para realizar consultas en sistemas dispares.
Capítulo 9,Clústeres de big data de SQL Server 2019, se basa en los conceptos tratados en el capítulo anterior
para mostrar cómo se puede aprovechar SQL Server 2019 para manejar conjuntos de datos escalados.
Capítulo 10,Mejorando la experiencia del desarrollador, cubre las herramientas para desarrollar y
administrar proyectos de SQL Server, incluidos Visual Studio, SQL Server Management Studio y,
especialmente para el desarrollo multiplataforma, Visual Studio Code.
Capítulo 12,Servicios de análisis, analiza cómo SQL Server 2019 proporciona un rendimiento
superior para el soporte de decisiones y cargas de trabajo de análisis de negocios a través del
modo multidimensional y el modo tabular.
Capítulo 13,servidor de informes de Power BI,analiza las nuevas características que se incluyen en las
últimas versiones de Power BI Report Server, así como las diferencias clave entre Power BI Report Server
y SSRS.
Capítulo 14,Modernización a la nube de Azure, termina el libro con una discusión sobre el papel de
Azure con respecto a la modernización y la plataforma de datos.
Acerca de Microsoft SQL Server 2019 |v
Convenciones
Las palabras clave en texto, nombres de tablas de bases de datos, nombres de carpetas, nombres de archivos,
extensiones de archivos, nombres de rutas, URL ficticias, entradas de usuario y identificadores de Twitter se muestran a
continuación: "Una tabla no duradera se declara conDURABILIDAD=SCHEMA_Only."
USAR maestro;
IR
CERTIFICADO DE RESPALDO MyServerCert
CLAVE PRIVADA
(ARCHIVO = 'C:\SQLSERVER\certificate_Cert.pvk',
CIFRADO POR CONTRASEÑA = '!£$Strongpasswordherewelikesqlver#')
Los términos nuevos y las palabras importantes se muestran así: "La mayoría de los WSFC basados en Windows
Server (e implementaciones de SQL Server) utilizanServicios de dominio de Active Directory (ADDS ).quot;
Las palabras que ve en la pantalla, por ejemplo, en menús o cuadros de diálogo, aparecen en el texto así: "Ir a
Comportamientoy seleccioneObtenga firma de acceso compartidocomo se muestra."
Necesitará el siguiente hardware y software para completar los ejemplos de este libro:
• SQL Server 2019 Developer Edition o superior con SQL Server Management Studio.
• Una computadora que tenga un procesador x64 de 1,4 GHz o más rápido (se recomiendan 2 GHz)
• Conexión a Internet para descargar software, como se describe en los capítulos correspondientes.
• Para plataformas que no sean Windows, como Linux o máquinas virtuales, consulte la
documentación de la versión.
Software preliminar
Para ayudarle a familiarizarse con SQL Server 2019 lo antes posible después de su lanzamiento,
escribimos este libro utilizando ejemplos que funcionaron con SQL Server 2019 Release Candidate.
En consecuencia, la versión final podría incluir nuevas funciones, la interfaz de usuario podría
cambiar o las funciones que comentamos podrían cambiar o desaparecer. Referirse a Novedades de
SQL Server 2019enhttps://docs.microsoft.com/en-us/sql/sql-server/ what-s-new-in-sql-server-ver15?
view=sqlallproducts-allversions para obtener la lista más actualizada de cambios en el producto.
Algunas manifestaciones hacen referencia a laTrabajo de aventurabase de datos. Esta es una base de
datos de muestra publicada por Microsoft y utilizada para demostrar las nuevas funciones de SQL
Server 2019. La base de datos, junto con las instrucciones de descarga y configuración, se pueden
encontrar enhttps://docs.microsoft.com/en-us/sql/samples/adventureworks-installconfigure?view=sql-
server-ver15 .
Optimización para
1
actuación,
escalabilidad y
información en tiempo real
Las empresas están optimizando sus recursos informáticos para obtener un mayor rendimiento transaccional
a partir de los mismos recursos de hardware. Al mismo tiempo, la demanda y el ritmo de los negocios y la
orientación al cliente están aumentando; necesitan información en tiempo real sobre los datos
transaccionales.
En los últimos años, muchas empresas han recurrido a soluciones No-SQL que permiten un rendimiento de escritura
muy alto de las transacciones y al mismo tiempo permiten una eventual coherencia, pero que luego requieren
extracción y análisis de datos.
2|Optimización del rendimiento, la escalabilidad y la información en tiempo real
Microsoft SQL Server ha asumido este desafío y, con cada lanzamiento, continúa ampliando las cargas de
trabajo en muchas dimensiones. Este capítulo analizará muchas de las características que permiten el
procesamiento de transacciones de alto rendimiento y al mismo tiempo permiten análisis en tiempo real
de datos transaccionales sin la necesidad de un conjunto separado de procesos ETL, un almacén de datos
separado y el tiempo para realizar ese procesamiento.
Microsoft SQL Server 2019 se basa en un motor de base de datos que es el número uno para TPC-E (punto
de referencia de procesamiento de transacciones en línea) y TCP-H (punto de referencia de soporte de
decisiones). Verhttp://www.tpc.org para más información.
Los cambios en la arquitectura del hardware permiten aumentos dramáticos de velocidad con Hybrid Buffer Pool,
que utiliza memoria persistente (PMEM), también conocida comoMemoria de clase de almacenamiento (SCM ).
Microsoft SQL Server 2019 se puede utilizar en los entornos informáticos más exigentes que se requieren en la
actualidad. El uso de una variedad de características y técnicas, incluidas las operaciones de bases de datos en
memoria, puede generar aumentos dramáticos en la tasa de procesamiento de transacciones y, al mismo
tiempo, permitir el análisis casi en tiempo real sin tener que mover los datos de sus transacciones a otro
"almacén de datos". para informes y análisis.
Microsoft SQL Server 2019 también ha ampliado la cantidad de oportunidades para ajustar las operaciones de la
base de datos automáticamente, junto con herramientas e informes para permitir el monitoreo y la optimización
de consultas y cargas de trabajo. Las funciones de diagnóstico integrales, incluido Query Store, permiten a SQL
Server 2019 identificar problemas de rendimiento rápidamente.
Al actualizar a SQL Server 2019, el cliente podrá aumentar el rendimiento de las consultas sin necesidad de
realizar ajustes ni administración manuales.Procesamiento inteligente de consultas (IQP ) ayuda a que
muchas cargas de trabajo se ejecuten más rápido sin realizar ningún cambio en la aplicación.
En el pasado, los almacenes de datos se utilizaban para respaldar la presentación de informes y el análisis de
datos transaccionales. Un almacén de datos genera muchas ineficiencias. Primero, los datos deben exportarse
desde la base de datos transaccional e importarse a un almacén de datos utilizando ETL o herramientas y
procesos personalizados. Hacer una copia de los datos requiere más espacio, tiempo, puede requerir
herramientas ETL especializadas y requiere el diseño, prueba y mantenimiento de procesos adicionales. En
segundo lugar, el acceso a los análisis se retrasa. En lugar de un acceso inmediato, se toman decisiones
comerciales, lo que significa que el análisis puede retrasarse horas o incluso días. Las empresas pueden tomar
decisiones comerciales más rápidamente cuando pueden obtener información operativa en tiempo real. En
algunos casos, es posible que se pueda afectar el comportamiento del cliente a medida que ocurre.
Índices de almacén de columnas agrupados |3
Microsoft SQL Server 2019 proporciona varias funciones para habilitar HTAP, incluidas tablas optimizadas
para memoria, procedimientos almacenados compilados de forma nativa e índices de almacén de
columnas agrupados.
Los índices agrupados de Columnstore pueden marcar una gran diferencia y son la tecnología utilizada para
optimizar el análisis en tiempo real. Pueden lograr una ganancia de rendimiento de un orden de magnitud con
respecto a una tabla de filas normal, una compresión drástica de los datos y minimizar la interferencia con el
procesamiento de transacciones en tiempo real.
Un almacén de columnas tiene filas y columnas, pero los datos se almacenan en formato de columna.
Hay un número óptimo de filas en un grupo de filas que se almacenan en columnas, y esto
representa una compensación entre una gran sobrecarga, si hay muy pocas filas, y la incapacidad
de realizar operaciones en memoria si las filas son demasiado grandes. .
Cada fila consta de segmentos de columna, cada uno de los cuales representa una columna de la fila
comprimida.
El almacén de columnas se ilustra enFigura 1.1, que muestra cómo cargar datos en un índice de almacén de
columnas no agrupado:
Un índice de almacén de columnas agrupado es la forma en que se almacenan los segmentos de la tabla del almacén de
columnas en medios físicos. Por motivos de rendimiento y para evitar la fragmentación de los datos, el índice del almacén de
columnas puede almacenar algunos datos en un almacén delta y una lista de los ID de las filas eliminadas. Todas las
operaciones deltastore son manejadas por el sistema y no son visibles directamente para el usuario. Los datos del almacén
delta y del almacén de columnas se combinan cuando se consultan.
Se utiliza un grupo de filas delta para almacenar índices de almacén de columnas hasta que haya suficientes
para almacenar en el almacén de columnas. Una vez que se alcanza el número máximo de filas, el grupo de filas
delta se cierra y un proceso en segundo plano detecta, comprime y escribe el grupo de filas delta en el almacén
de columnas.
Puede haber más de un grupo de filas delta. Todos los grupos de filas delta se describen como
almacén delta. Mientras se cargan datos, cualquier cantidad inferior a 102 400 filas se mantendrá en el
almacén delta hasta que se agrupen al tamaño máximo y se escriban en el almacén de columnas.
La ejecución en modo por lotes se utiliza durante una consulta para procesar varias filas a la vez.
La carga de un índice de almacén de columnas agrupado y el almacén delta se muestran enFigura 1.2.
Cuando utilice una tabla optimizada para memoria, agregue un índice de almacén de columnas no agrupado. Un índice
de almacén de columnas agrupado es especialmente útil para ejecutar análisis en una tabla transaccional.
Se puede agregar un índice de almacén de columnas agrupado a una tabla optimizada para memoria existente, como se
muestra en el siguiente fragmento de código:
- - Agregar un índice de almacén de columnas agrupado a una tabla optimizada para memoria
Existen varias diferencias entre las tablas optimizadas para memoria y las basadas en disco.
Una diferencia es el hecho de que, en una tabla basada en disco, las filas se almacenan en páginas de 8k y
una página solo almacena filas de una sola tabla. Con las tablas optimizadas para memoria, las filas se
almacenan individualmente, de modo que un archivo de datos puede contener filas de varias tablas
optimizadas para memoria.
Los índices de una tabla basada en disco se almacenan en páginas al igual que las filas de datos. Los cambios en el
índice se registran, al igual que los cambios en las filas de datos. Una tabla optimizada para memoria conserva la
definición del índice, pero se regenera cada vez que se carga la tabla optimizada para memoria, como al reiniciar la
base de datos. No se registran las "páginas" de índice. se requiere.
Las operaciones de datos son muy diferentes. Con una tabla optimizada para memoria, todas las operaciones se
realizan en la memoria. Los registros se crean cuando se realiza una actualización en memoria. Cualquier registro
creado en memoria se conserva en el disco a través de un subproceso independiente. Las operaciones de tablas
basadas en disco pueden realizar actualizaciones in situ en columnas que no son clave, pero las columnas clave
requieren una eliminación e inserción. Una vez que se completa la operación, los cambios se descargan en el disco.
Con las tablas basadas en disco, las páginas pueden fragmentarse. A medida que se realizan cambios, es
posible que haya páginas parcialmente llenas y páginas que no sean consecutivas. Con tablas optimizadas
para memoria, almacenarlas como filas elimina la fragmentación, pero las inserciones, eliminaciones y
actualizaciones dejarán filas que se pueden compactar. La compactación de las filas se ejecuta mediante un
hilo de combinación en segundo plano.
6|Optimización del rendimiento, la escalabilidad y la información en tiempo real
https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/ compare-
disk-based-table-storage-to-memory-optimized-table-storage?view=sqlserver- 2017 .
OLTP en memoria
En memoriaprocesamiento de transacciones en línea (OLTP ) está disponible en Microsoft SQL Server para
optimizar el rendimiento del procesamiento de transacciones. OLTP en memoria también está disponible para
todas las bases de datos premium de Azure SQL. Si bien depende de su aplicación, se han observado ganancias
de rendimiento de 2 a 30 veces.
Para utilizar completamente OLTP en memoria, están disponibles las siguientes funciones:
• Las tablas no duraderas, básicamente tablas temporales en memoria para resultados intermedios, no
persisten, por lo que no utilizan ninguna E/S de disco. Una mesa no duradera se declara con
DURABILIDAD=SCHEMA_ONLY.
• Los valores de tabla y los parámetros con valores de tabla también se pueden declarar como tipos en memoria.
• Los procedimientos almacenados, desencadenadores y funciones escalares definidas por el usuario compilados
de forma nativa se compilan cuando se crean y evitan tener que compilarlos en el momento de la ejecución, lo
que acelera las operaciones.
• https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/ in-
memory-oltp-in-memory-optimization?view=sql-server-2017
• https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/ Survey-
of-initial-areas-in-in-memory-oltp?view=sql-server-2017
Planificación de la migración de datos a tablas optimizadas para memoria |7
microsoftEstudio de administración de SQL Server (SSMS ) contiene herramientas para ayudar a analizar y migrar
tablas a un almacenamiento con memoria optimizada.
Cuando hace clic derecho en una base de datos en SSMS y hace clic enInformes|Informes estándar| Descripción
general del análisis del rendimiento de las transacciones, se realizará un informe de cuatro cuadrantes de todas las
tablas de la base de datos:
El informe examinará cada tabla y la colocará en el gráfico para mostrar la facilidad de la migración
frente a la ganancia esperada al migrar la tabla para optimizar la memoria:
Una vez que haya identificado las tablas que podrían beneficiarse, puede hacer clic derecho en tablas
individuales y ejecutar el Asesor de optimización de memoria:
El asistente lo guiará a través de una lista de verificación con cualquier problema fallido:
Luego ingrese los nombres de los archivos y verifique las rutas en el diálogo de opciones de migración.
El asistente detectará las claves principales y completará la lista de columnas según los metadatos
de la clave principal. Para migrar a una tabla duradera con memoria optimizada, es necesario crear
una clave principal. Si no hay una clave principal y la tabla se está migrando a una tabla no
duradera, el asistente no mostrará esta pantalla.
Las tablas con memoria optimizada son una gran característica, pero deberá planificar cuidadosamente
para asegurarse de obtener el rendimiento y la confiabilidad transaccional que necesita.
Puede crear una nueva base de datos especificando memoria optimizada o modificar una base de datos existente
para manejar datos optimizados para memoria. En cualquier caso, se debe crear un grupo de archivos que
contenga los datos optimizados para memoria.
Planificación de la migración de datos a tablas optimizadas para memoria |17
En el siguiente ejemplo, crearemos una base de datos optimizada para memoria utilizando un script SQL:
USE MASTER;
IR
IR
FILEGROUP MemOptDB_FG;
IR
18|Optimización del rendimiento, la escalabilidad y la información en tiempo real
También puede crear una base de datos optimizada para memoria utilizando SQL Server Management Studio y
agregando un grupo de archivos optimizado para memoria:
Los procedimientos almacenados compilados de forma nativa se compilan cuando se crean y omiten el motor
de ejecución de consultas. El procedimiento se compila cuando se crea, y también manualmente o cuando se
reinicia la base de datos o el servidor.
BEGIN ATOMIC es necesario en un procedimiento almacenado compilado de forma nativa y solo está disponible
para un procedimiento almacenado compilado de forma nativa. En procedimientos interactivos (compilados no
nativos), se utilizaría un bloque de instrucciones BEGIN TRAN. El uso del bloque ATOMIC y la configuración de la
transacción será independiente de la conexión/configuración actual, ya que el procedimiento almacenado puede
usarse en diferentes sesiones de ejecución.
Si existe una transacción activa, BEGIN ATOMIC establecerá un punto de guardado y volverá a
ese punto si falla. De lo contrario, se crea y completa o revierte una nueva transacción.
Usted indicó un procedimiento almacenado compilado de forma nativa en la declaración de creación del
procedimiento almacenado usando el método "NATIVE_COMPILATION" directiva.
En el siguiente ejemplo, crearemos una tabla optimizada para memoria y un procedimiento almacenado de forma nativa.
Tenga en cuenta que las tablas optimizadas para memoria no pueden tener índices agrupados. Las tablas optimizadas para
memoria se almacenan como filas, no en páginas, como ocurre con una tabla basada en disco:
MemOptDB;
IR
IR
DE dbo.MyMemOptTable
DONDE id = @id
FIN
IR
El esquema de la tabla está bloqueado debido a la referencia a un procedimiento almacenado compilado de
forma nativa. Si intenta modificar la tabla, se generará una excepción, como se muestra aquí:
IR
Puede encontrar más información sobre los procedimientos compilados de forma nativa aquí:
https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/
creating-natively-compiled-stored-procedures?view=sql-server-2017 .
Mejoras en TempDB
Hemos introducido otra mejora de escalabilidad con metadatos TempDB optimizados para memoria.
Históricamente, la contención de metadatos de TempDB ha sido un cuello de botella para la escalabilidad de las
cargas de trabajo que se ejecutan en SQL Server.
Las tablas del sistema utilizadas para administrar los metadatos de las tablas temporales se pueden mover a tablas optimizadas
para memoria no duraderas y sin pestillos.
• Reiniciar el servicio
El siguiente comando T-SQL se puede utilizar para verificar sitempdbestá optimizado para la
memoria:
• Una sola transacción no puede acceder a tablas optimizadas para memoria en más de una base de
datos. Esto significa que cualquier transacción que involucre una tabla optimizada para memoria
en una base de datos de usuario no podrá acceder a las vistas del sistema TempDB en la misma
transacción. Si intenta acceder a las vistas del sistema TempDB en la misma transacción que una
tabla optimizada para memoria en una base de datos de usuario, recibirá el siguiente error:
Una transacción de usuario que accede a tablas optimizadas para memoria o módulos compilados
de forma nativa no puede acceder a más de una base de datos de usuario o modelo de base de
datos y msdb, y no puede escribir en el maestro.
22|Optimización del rendimiento, la escalabilidad y la información en tiempo real
• Las consultas realizadas a tablas optimizadas para memoria no admiten sugerencias de bloqueo y aislamiento,
por lo que las consultas realizadas a vistas de catálogo TempDB optimizadas para memoria no respetarán las
sugerencias de bloqueo y aislamiento. Al igual que con otras vistas del catálogo del sistema en SQL Server,
todas las transacciones en las vistas del sistema estarán en aislamiento LEER COMPROMETIDO (o, en este caso,
LEER INSTANTÁNEA COMPROMETIDA).
• Puede haber algunos problemas con los índices del almacén de columnas en tablas temporales cuando los
metadatos TempDB optimizados para memoria están habilitados. Es mejor evitar los índices de almacén de
columnas en tablas temporales cuando se utilizan metadatos TempDB optimizados para memoria.
La mayoría de estos también están disponibles en Azure SQL, pero es mejor consultar la
documentación actual sobre qué está exactamente disponible allí a medida que esto cambia.
Procesamiento inteligente de consultas |23
Microsoft SQL Server 2019 presenta el grupo de búfer híbrido. Esta característica permite el acceso a MEMoria
persistente (PMEM ) dispositivos. Estos dispositivos de memoria persistente agregan una nueva capa a la
jerarquía de memoria del servidor y llenan la brecha entre el alto rendimiento/alto costo de la DRAM (memoria
dinámica de acceso aleatorio) y el menor costo y menor rendimiento de las unidades de almacenamiento de
archivos que utilizan SSD.
Esta arquitectura de memoria ha sido implementada por Intel como tecnología Intel®
Optane™; Referirse ahttps://www.intel.com/content/www/us/en/products/docs/storage/
optane-technology-brief.html para más información:
La memoria persistente está integrada en el nivel del controlador de memoria del chip de la CPU y
retendrá los datos incluso cuando el servidor esté apagado.
Si bien muchos aspectos de los dispositivos de memoria persistente se pueden realizar sin ningún cambio de
software, funciones como Hybrid Buffer Pool pueden aprovechar la nueva jerarquía de almacenamiento y
proporcionar acceso directo a la memoria de los archivos.
Para páginas de bases de datos limpias, aquellas que no han sido modificadas, el servidor SQL puede acceder
directamente a ellas como memoria. Cuando se realiza una actualización y luego se marca como sucia, la
página se copia a la DRAM, los cambios persisten y luego la página se vuelve a escribir en el área de memoria
persistente.
Almacén de consultas |25
Para habilitar el grupo de búfer híbrido, la característica debe estar habilitada en el nivel de instancia de SQL
Server. Está apagado por defecto. Después de habilitarla, se debe reiniciar la instancia:
Además, el grupo de búfer híbrido solo funcionará en bases de datos con memoria optimizada:
ALTERAR BASE DE DATOS <nombre de la base de datos> ESTABLECER MEMORIA_OPTIMIZADA = ACTIVADO;
Para ver las configuraciones del grupo de búfer híbrido y las bases de datos optimizadas para memoria en
una instancia, puede ejecutar las siguientes consultas:
• https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/deploy-
pmem
• https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/
hybrid-buffer-pool?view=sql-server-2017
Almacén de consultas
El almacén de consultas en SQL Server, introducido por primera vez en SQL Server 2016, agiliza el proceso de
solución de problemas de los planes de ejecución de consultas. El Query Store, una vez habilitado, captura
automáticamente los planes de ejecución de consultas y las estadísticas de tiempo de ejecución para su
análisis. Luego puedes usar elsys.dm_db_tuning_recommendationsver para descubrir dónde se ha producido
la regresión del plan de ejecución de consultas y utilizar el procedimiento almacenado,
sp_query_store_force_plan, para forzar un plan específico que funcione mejor.
En SQL Server 2019, ahora hemos realizado algunas mejoras adicionales a las funciones
predeterminadas del Almacén de consultas. En esta sección, discutiremos los siguientes temas:
• Un nuevoQUERY_CAPTURE_MODEcostumbre
Puede configurar Query Store con SQL Server Management Studio (SSMS) o con declaraciones T-SQL. La configuración
de SSMS incluye activarlo y desactivarlo configurando el modo de operación (desactivado, solo lectura o lectura/
escritura), el tamaño del Almacén de consultas y otras configuraciones. Puede encontrar los parámetros del Almacén
de consultas en las propiedades de una base de datos haciendo clic derecho en la base de datos y seleccionando
Almacén de consultas:
Dos de los parámetros existentes tienen nuevos valores predeterminados en comparación con SQL Server 2017.
Estos parámetros sonMAX_STORAGE_SIZE_MByQUERY_CAPTURE_MODE. Los nuevos valores predeterminados a
partir de SQL Server 2019 se enumeran aquí:
QUERY_CAPTURE_MODE
En versiones anteriores de SQL Server, el valor predeterminado para elQUERY_CAPTURE_MODEse configuró en
TODOS y, por lo tanto, se capturaron y almacenaron todos los planes de consulta. Como se mencionó en la
sección anterior, el valor predeterminado ahora se ha cambiado aAUTO.
QUERY_CAPTURE_MODE: PERSONALIZADO
Antes de 2019, había tres valores disponibles para elquery_capture_mode;esos valores eran
NINGUNO,TODO, yAUTO. Ahora hemos agregado una cuarta opción, que esCOSTUMBRE.
• EXECUTION_COUNT
• TOTAL_COMPILE_CPU_TIME_MS
• TOTAL_EXECUTION_CPU_TIME_MS
• STALE_CAPTURE_POLICY_THRESHOLD
28|Optimización del rendimiento, la escalabilidad y la información en tiempo real
En primer lugar, puede verificar y validar la configuración actual del Query Store utilizando elsistema.
opciones_almacenamiento_query_base de datosvista:
El resultado es el siguiente:
SET QUERY_STORE = ON
(
QUERY_CAPTURE_MODE = PERSONALIZADO, QUERY_CAPTURE_POLICY = (
EXECUTION_COUNT = 20,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100,
STALE_CAPTURE_POLICY_THRESHOLD = 7 DÍAS
)
);
Sintonización automática |29
El resultado es el siguiente:
Sintonización automática
De forma predeterminada, la sintonización automática está deshabilitada y debe habilitarse. Hay dos funciones de
sintonización automática disponibles:
Para aprovechar la corrección automática del plan, el Almacén de consultas debe estar habilitado en
su base de datos. La corrección automática del plan es posible gracias al monitoreo constante de los
datos almacenados en Query Store.
La corrección automática del plan es el proceso de identificar la regresión en sus planes de ejecución de
consultas. La regresión del plan se produce cuando el Optimizador de consultas de SQL Server utiliza un nuevo
plan de ejecución que funciona peor que el plan anterior. Para identificar la regresión del plan, Query Store
captura el tiempo de compilación y las estadísticas de tiempo de ejecución de las declaraciones que se ejecutan.
30|Optimización del rendimiento, la escalabilidad y la información en tiempo real
El motor de base de datos utiliza los datos capturados por Query Store para identificar cuándo se
produce la regresión del plan. Más específicamente, para identificar la regresión del plan y tomar las
medidas necesarias, el motor de base de datos utiliza elsys.dm_db_tuning_recommendationsvista.
Esta es la misma vista que utiliza al determinar manualmente qué planes han experimentado
regresiones y cuáles forzar.
Cuando se detecta una regresión del plan, el motor de la base de datos forzará el último plan bueno
conocido.
La buena noticia es que el motor de base de datos no se detiene ahí; el motor de base de datos
monitoreará el desempeño del plan forzado y verificará que el rendimiento sea mejor que el plan
en regresión. Si el rendimiento no es mejor, entonces el motor de la base de datos cancelará el plan
y compilará un nuevo plan de ejecución de consultas.
La corrección automática del plan está desactivada de forma predeterminada. El siguiente código se puede utilizar para
verificar el estado de la corrección automática del plan en su base de datos:
El resultado es el siguiente:
El motor de base de datos utiliza dos criterios para forzar planes de ejecución de consultas:
Forzar planes de ejecución mejora el rendimiento cuando se ha producido una regresión del plan de ejecución
de consultas, pero esta es una solución temporal y estos planes forzados no deben permanecer indefinidamente.
Por lo tanto, los planes forzados automáticamente se eliminan bajo las dos condiciones siguientes.
• Los planes forzados se conservan hasta que se produce una recompilación, por ejemplo, una actualización de estadísticas o un
cambio de esquema.
El siguiente código se puede utilizar para verificar el estado del ajuste automático en la base de datos:
FROM sys.database_automatic_tuning_options;
Figura 1.21: Verificación del estado del ajuste automático en la base de datos
32|Optimización del rendimiento, la escalabilidad y la información en tiempo real
Para obtener una explicación más detallada sobre la infraestructura de creación de perfiles de
consultas, consultehttps://docs.microsoft.com/en-us/sql/relational-databases/performance/query-
profilinginfrastructure?view=sqlallproducts-allversions .
En SQL Server 2019, ahora hemos mejorado LWP con nuevas características y mejoras a las
capacidades existentes.
• En SQL Server 2016 y 2017, la creación de perfiles de consultas ligeras estaba desactivada de forma
predeterminada y se podía habilitar LWP a nivel de instancia mediante el uso del indicador de seguimiento.7412.
En 2019, activamos esta función de forma predeterminada.
• Ahora también puede administrar esto a nivel de base de datos a través de Configuraciones de
ámbito de base de datos. En 2019, tiene una nueva configuración con alcance de base de
datos, perfil_query_ligero, para habilitar o deshabilitar laperfil_ligero_query_infraestructura
a nivel de base de datos.
sys.database_scoped_configuraciones
Si no está seguro del estado actual de LWP, puede utilizar el siguiente código para verificar el estado de
las configuraciones del ámbito de su base de datos. La columna de valor es 1; por lo tanto, al utilizar la
vista sys.database_scoped_configurations, verá que las estadísticas del plan de consulta están
actualmente habilitadas:
El resultado es el siguiente:
monitor de actividad
Con LWP habilitado, ahora puede ver consultas costosas activas en el monitor de actividad. Para iniciar el
monitor de actividad, haga clic derecho en el nombre de la instancia de SSMS y seleccione Monitor de actividad.
Debajo de Consultas costosas activas, verá las consultas que se están ejecutando actualmente y, si hace clic con
el botón derecho en una consulta activa, ahora puede examinar el Plan de ejecución en vivo.
BASE DE DATOS CLONADA DBCCcrea un clon de la base de datos que contiene una copia del esquema y las
estadísticas para fines de diagnóstico y solución de problemas. Más concretamente, con BASE DE DATOS CLONADA
DBCC, dispone de una forma ligera y mínimamente invasiva de investigar problemas de rendimiento relacionados
con el optimizador de consultas. En SQL Server 2019, ahora ampliamos las capacidades deBASE DE DATOS CLONADA
DBCCagregando soporte para estadísticas de almacén de columnas.
Estadísticas del almacén de columnas en DBCC CLONEDATABASE |35
En SQL Server 2019, se agregó compatibilidad con estadísticas de almacén de columnas. Antes de SQL
Server 2019, se requerían pasos manuales para capturar estas estadísticas (consulte el siguiente enlace).
Ahora capturamos automáticamente blobs de estadísticas y, por lo tanto, estos pasos manuales ya no
son necesarios:
https://techcommunity.microsoft.com/t5/SQL-Server/Considerations-when-tuningyour-
queries-with-columnstore-indexes/ba-p/385294 .
(
nombre_base_datos_origen, nombre_base_datos_destino
)
[ CON { [ NO_STATISTICS ] [ , NO_QUERYSTORE ]
[ , VERIFY_CLONEDB | CORREDOR DE SERVICIOS ] [ , BACKUP_CLONEDB ] } ]
El siguiente script T-SQL creará un clon de la base de datos existente. Las estadísticas y los datos
del Query Store se incluyen automáticamente.
DBCC CLONEDATABASE ('Fuente', 'Destino');
36|Optimización del rendimiento, la escalabilidad y la información en tiempo real
Hasta ahora, los clones de bases de datos proporcionados tienen únicamente fines de diagnóstico. La
opciónVERIFY_CLONEDBEs necesario si desea utilizar la base de datos clonada para uso en producción.
VERIFY_CLONEDBverificará la coherencia de la nueva base de datos.
Por ejemplo:
DBCC CLONEDATABASE ('Fuente', 'Destino_ProdReady')
CON VERIFY_CLONEDB;
El resultado es el siguiente:
Actualmente hay ocho salidas disponibles; Te centrarás principalmente en los cuatro resultados relacionados
con el tamaño.
Producción:
nombre_esquema
id_índice
número_partición
size_with_current_compression_setting (KB)
size_with_requested_compression_setting (KB)
sample_size_with_current_compression_setting (KB)
sample_size_with_current_requested_setting (KB)
A continuación se muestra un ejemplo del procedimiento en acción, seguido de una comparación del ahorro de
espacio para la compresión de páginas y almacenes de columnas:
Una característica nueva e interesante de SQL Server 2019 es sys.dm_db_page_info. esta nueva función
de gestión dinámica (DMF ) recupera información útil de la página, comoidentificación_página,
id_archivo,id_índice,id_objeto, ytipo_página, que se puede utilizar para solucionar problemas y depurar
problemas de rendimiento en SQL Server. Históricamente, la solución de problemas ha implicado el uso
de la página DBCC y el archivo DMF no documentado.asignaciones sys.dm_db_page_.
A diferencia de la página DBCC, que proporciona el contenido completo de una página,sys.dm_db_page_info solo
devuelve información de encabezado sobre las páginas. Afortunadamente, esto será suficiente para la mayoría de
los escenarios de solución de problemas y ajuste del rendimiento.
• sys.dm_db_page_infoparámetros
• Nueva columna page_resource en (sys.dm_exec_requests,procesos.sys)
• sys.fn_PageResCracker
sys.dm_db_page_info
Primero, para aprovechar este nuevo DMF, necesitamos el permiso VER ESTADO DE BASE DE DATOS. El siguiente
código se puede utilizar para proporcionar acceso:
Puede ejecutar la función por sí sola si tiene todos los parámetros necesarios. El modo está configurado
enLimitadoen este ejemplo, y esto volveráNULOvalores para todas las columnas de descripción:
El resultado es el siguiente:
Para ver una lista completa de todas las columnas devueltas, vaya ahttps://docs.microsoft.com/
en-us/ sql/relational-databases/system-dynamic-management-views/sys-dm-db-page-
infotransact-sql?view=sqlallproducts-allversions .
sys.fn_pagerescracker
En el ejemplo anterior, vio cómo pasar parámetros a esta nueva función manualmente.
Afortunadamente, los parámetros se pueden recuperar directamente desdesolicitudes
sys.dm_exec_oprocesos.sys. Para que esto funcione, agregamos una nueva columna llamada
página_recurso. La columna page_resource devuelve el ID de la página, el ID del archivo y el ID de la
base de datos. También es importante resaltar que la nueva columna page_resource ensolicitud
sys.dm_exec_seráNULOcuandoESPERA_RESURCEno tiene un valor válido.
Sin embargo, la columna page_resource almacena los datos como un valor hexadecimal de 8 bytes
que debe convertirse. Por lo tanto, hemos agregado una nueva función llamada
sys.fn_pagerescracker. Esta función devuelve el ID de la página, el ID del archivo y el ID de la base de
datos para el valor de recurso de página dado.
Es importante tener en cuenta que requerimos que el usuariotener VER ESTADO DEL SERVIDORpermiso en
el servidor para ejecutarsys.fn_PageResCracker.
FROM sys.dm_exec_requests AS d
El resultado es el siguiente:
El seguimiento del cumplimiento y el mantenimiento de la seguridad de la base de datos requieren importantes recursos
administrativos. SQL Server 2019 tiene herramientas como clasificación y descubrimiento de datos y herramientas de evaluación de
vulnerabilidades de SQL que permiten a los administradores de bases de datos identificar problemas de cumplimiento y etiquetar y
SQL Server 2019 ofrece muchas funciones de seguridad que abordan estos desafíos, como TDE
(cifrado de datos transparente), siempre cifrado, auditoría, enmascaramiento dinámico de datos y
seguridad a nivel de fila.
46|Seguridad empresarial
Combinado con mejoras adicionales en la administración de certificados en SQL Server 2019, soporte
para TLS 1.2 e iniciativas informáticas confidenciales como enclaves seguros, puede estar seguro de que
puede crear e implementar soluciones con los más altos estándares de seguridad y al mismo tiempo
cumplir con GDPR y PCI-DSS. . Todas estas características también están disponibles en Azure SQL
Database.
Los componentes clave de esta función incluyen dos atributos de metadatos, etiquetas y tipos de información. Las
etiquetas se utilizan para definir la confidencialidad de los datos. Los tipos de información se utilizan para
proporcionar granularidad adicional a los tipos de datos almacenados en una columna. Como puedes ver enFigura
2.1, las direcciones de correo electrónico y los números de teléfono se han clasificado como información de contacto
bajo la etiqueta GDPR.
Para iniciar el proceso de clasificación, deberá hacer clic derecho en la base de datos y buscar la
Descubrimiento y clasificación de datosopción (Figura 2.2).
Mientras está conectado a la base de datos a través deSSMS (Estudio de administración de SQL Server ),
puede realizar la siguiente consulta para obtener un muy buen resumen de la clasificación que acaba de
realizarse:
SELECCIONAR
nombre_esquema(O.schema_id) AS nombre_esquema,
O.NOMBRE AS nombre_tabla,
C.NOMBRE AS nombre_columna,
tipo_información,
etiqueta_sensibilidad
DE
(
SELECCIONAR
TI.major_id,
48|Seguridad empresarial
TI.minor_id,
TI.tipo_información,
L.etiqueta_sensibilidad
DE
(
SELECCIONAR
id_mayor,
id_menor,
valor AS tipo_información
DESDE sys.extended_properties
DONDE NOMBRE = 'sys_information_type_name'
) ÉL
UNIÓN EXTERIOR COMPLETA
(
SELECCIONAR
id_mayor,
id_menor,
valor AS etiqueta_sensibilidad
DE sys.extended_properties
DONDE NOMBRE = 'sys_sensitivity_label_name'
)l
EN IT.major_id = L.major_id Y IT.minor_id = L.minor_id
) PE
ÚNETE a sys.objects O
ON EP.major_id = O.object_id
ÚNETE a sys.columns C
EN EP.major_id = C.object_id Y EP.minor_id = C.column_id
Puedes delegar esto a SQL Server y dejar que realice una revisión de los datos y una
implementación automática del proceso de clasificación.
Nota
Con SQL Server 2019, no es posible usar T-SQL para agregar metadatos sobre la
clasificación de sensibilidad, como los siguientes:
<nombre_objeto> [, ...n]
Otra ventaja de esta característica es la visibilidad de los estados de clasificación en forma de informe, que
luego puede exportar a diferentes formatos según sea necesario. Esto le beneficiará en materia de
cumplimiento y auditoría. La siguiente captura de pantalla muestra una copia de un informe en formato
Excel:
Una vez que comprenda sus datos a través de los procesos de clasificación, podrá aprovechar
diferentes funciones de SQL Server 2019, como Always Encrypted o Data Masking, para proteger
estas columnas confidenciales.
Evaluación de vulnerabilidad SQL |51
Nota
La evaluación de vulnerabilidades es compatible con SQL Server 2012 y versiones posteriores y requiere
SSMS 17.4+.
Esta función realiza un análisis de las bases de datos utilizando una base de conocimiento de reglas prediseñada
que señalará problemas de seguridad, como cuentas elevadas y configuraciones incorrectas de seguridad. Para
iniciar esta evaluación, deberá hacer clic derecho en la base de datos y hacer clic enEvaluación de
vulnerabilidad(como se muestra en la siguiente captura de pantalla) e inicie un escaneo:
Es necesario indicar una ubicación para guardar la evaluación. Esta será la ubicación
donde podrá abrir y ver informes históricos:
Nota
El escaneo es liviano y de solo lectura. No causará degradación del rendimiento.
Evaluación de vulnerabilidad SQL |53
Como puede ver, se llevan a cabo una amplia gama de controles diferentes. Los que fallen necesitarán
atención especial, especialmente si están marcados comoAlto riesgo. Puede considerarlo como su
propio panel de seguridad personal.
A medida que revisa los resultados de su evaluación, puede marcar resultados específicos como
una línea de base aceptable en su entorno:
Esta es simplemente una forma de aprobar un cheque para que se clasifique como aprobado en futuros escaneos:
Para abordar los problemas señalados por esta función, no es necesario que sea un experto en seguridad ni
que investigue los scripts T-SQL necesarios para investigar más a fondo y solucionar los problemas. Todo esto
lo proporciona la herramienta. Como puede ver en la siguiente captura de pantalla, el VA2108La verificación,
relacionada con la autenticación y autorización de una cuenta específica, falló. Implementamos
deliberadamente esta cuenta fraudulenta para ver cómo la herramienta la detecta.
Si hace clic en el cuadro azul en la captura de pantalla anterior, mostrará el código que utilizó el escaneo
para deducir sus conclusiones:
user_id('db_accessadmin'),
user_id('db_securityadmin'),
user_id('db_ddladmin'),
user_id('db_backupoperator'))
ORDENAR POR sp.name
Claramente este es un problema. Tener un inicio de sesión SQL concedido eldb_securityadminEl papel es
una mala práctica. Para resolver esto, vea el siguiente script de corrección, como se muestra en el cuadro
rojo enFigura 2.11:
Cifrado de datos transparente (TDE ) también se conoce como "cifrado en reposo" y usos Estándar de
cifrado avanzado (AES ) algoritmos de cifrado que utilizan claves de 128, 192 y 256 bits (AES_128, AES_192
y AES_256). Esta característica realiza cifrado y descifrado de E/S en tiempo real de archivos de bases de
datos y, como efecto secundario, también cifra las copias de seguridad. El propósito de TDE es evitar que
se adjunten/restauren y consulten copias robadas de archivos de bases de datos (o copias de seguridad).
Esta característica también es importante cuando se ejecuta SQL Server en un entorno alojado debido al
riesgo de que alguien intente leer el sistema de archivos directamente. Esta característica está disponible
en las ediciones Standard y Enterprise de SQL Server 2019 y está activada de forma predeterminada
cuando se utiliza Azure SQL Database y Azure SQL Database Managed Instance.
56|Seguridad empresarial
Configuración
Seguir esta jerarquía al configurar TDE en SQL Server 2019 es sencillo. Este fragmento muestra el
código T-SQL necesario para crear elLLAVE MAESTRA,CERTIFICADO, y CLAVE DE CIFRADO DE BASE
DE DATOS.
USAR maestro;
IR
CREAR CIFRADO DE CLAVE MAESTRA POR CONTRASEÑA = '<contraseña>'; IR
USAR [MicrosoftDB];
IR
CREAR CLAVE DE CIFRADO DE BASE DE
Nota
No se ha realizado una copia de seguridad del certificado utilizado para cifrar la clave de cifrado de la
base de datos. Debe hacer una copia de seguridad inmediatamente del certificado y de la clave
privada asociada con el certificado. Si el certificado alguna vez deja de estar disponible o si debe
restaurar o adjuntar la base de datos en otro servidor, debe tener copias de seguridad tanto del
certificado como de la clave privada o no podrá abrir la base de datos.
58|Seguridad empresarial
Aparece una advertencia de SQL Server pidiéndonos que hagamos una copia de seguridad delCERTIFICADOyLLAVE
PRIVADA, lo cual es importante para fines de recuperación. Utilice este código para hacerlo:
USAR maestro;
IR
CERTIFICADO DE RESPALDO MyServerCert
CLAVE PRIVADA
(ARCHIVO = 'C:\SQLSERVER\certificate_Cert.pvk',
CIFRADO POR CONTRASEÑA = '!£$Strongpasswordherewelikesqlver#')
IR
La confirmación del cifrado exitoso de la base de datos se puede encontrar ejecutando la
siguiente consulta:
SELECCIONE DB_NAME(database_id) AS Nombre de la base de datos,
estado_cifrado, estado_cifrado_desc =
CASE estado_cifrado
CUANDO '0' ENTONCES "No hay clave de cifrado de base de datos presente, no hay cifrado"
DESDE sys.dm_database_encryption_keys
Evaluación de vulnerabilidad SQL |59
Figura 2.2muestra el estado cifrado tanto de la base de datos del usuario como detempdb:
Al configurar TDE para una base de datos, SQL Server debe realizar un escaneo de cifrado inicial. A veces,
esto puede resultar problemático con una base de datos grande y altamente transaccional. Con SQL
Server 2019, ahora puede suspender y reanudar este análisis para adaptarlo a sus necesidades durante
períodos de mantenimiento específicos. Antes de SQL Server 2019, la única forma de detener el análisis de
cifrado era con Trace Flag 5004.
Si reinicia SQL Server mientras el análisis de cifrado está suspendido, se escribirá un mensaje en el
registro de errores para resaltar este hecho. También le mostrará elREANUDAR comando
necesario para completar el análisis de cifrado:
Para obtener más información sobre cómo implementar EKM mediante Azure Key Vault,
consulte la siguiente guía:https://docs.microsoft.com/en-us/sql/relational-databases/
security/encryption/setup-steps-for-extensible-key-management-using-the-azurekey-
vault?view=sql-server- ver15 .
Siempre cifrado
SQL Server 2019 incluye Always Encrypted, una tecnología de cifrado introducida por primera vez en SQL
Server 2016 que permite a los clientes cifrar datos confidenciales dentro de las aplicaciones cliente con el
beneficio clave de nunca revelar las claves de cifrado al motor de la base de datos.
Cuando se utiliza Always Encrypted, los datos nunca aparecen en texto sin formato al consultarlos y
ni siquiera se exponen en texto sin formato en la memoria del proceso de SQL Server. Sólo las
aplicaciones cliente que tengan acceso a las claves relevantes pueden ver los datos. Esta
característica es ideal para proteger datos incluso de usuarios con privilegios elevados, como
administradores de bases de datos y administradores de sistemas. No les impide administrar los
servidores, pero sí les impide ver datos altamente confidenciales, como los detalles de cuentas
bancarias.
Informática confidencial con enclaves seguros |61
Tipos de algoritmos
La variación aleatoria es mucho menos predecible y, por lo tanto, más segura, pero esto significa que
no permite las operaciones mencionadas anteriormente en posibles columnas cifradas. Los
diferentes tipos de cifrado plantean opciones interesantes para los desarrolladores de aplicaciones.
Por ejemplo, si sabe que sus aplicaciones deben emitir consultas basadas en grupos o uniones en
columnas cifradas, no tendrá más remedio que utilizar el algoritmo determinista. Con la introducción
de enclaves seguros en SQL Server 2019, ahora es posible admitir una funcionalidad más completa
en columnas cifradas, lo que se analizará más adelante en este capítulo.
Configuración
Configurar Always Encrypted es sencillo. Para obtener un tutorial completo sobre cómo
hacer esto, consulte el siguiente enlace:https://docs.microsoft.com/en-us/sql/
relationaldatabases/security/encryption/always-encrypted-wizard?view=sql-server-ver15 .
El enclave es una región de la memoria especial, aislada y protegida. No hay forma de ver los datos o
el código dentro del enclave desde el exterior, ni siquiera con un depurador. Puedes pensar en ello
como uncaja negra. Esto significa que un enclave es el lugar perfecto para procesar información
altamente confidencial y descifrarla, si es necesario. Si bien hay varias tecnologías de enclave
disponibles, SQL Server 2019 admite enclaves de memoria seguros de seguridad basada en
virtualización (VBS) en Windows Server 2019. El hipervisor de Windows garantiza el aislamiento de los
enclaves VBS. La siguiente pantalla muestra lo que vería si intenta acceder a la memoria de un
enclave VBS con un depurador.
Referencias:
• https://aka.ms/AlwaysEncryptedWithSecureEnclaves
• https://www.microsoft.com/security/blog/2018/06/05/virtualization-basedsecurity-
vbs-memory-enclaves-data-protection-through-isolation/
¿Cómo nos beneficia esto desde la perspectiva de la base de datos? Ahora significa que nuevos tipos
de cálculos, como la coincidencia de patrones (LIKE%) y las comparaciones (incluidos los operadores
de comparación de rangos, como > y <), ahora se admiten en columnas de bases de datos cifradas;
Esto no era posible antes. SQL Server delega estos cálculos al enclave a través del controlador del
cliente a través de un canal seguro. Luego, los datos se descifran y procesan de forma segura en el
enclave. Otra ventaja de esta nueva característica es que le permite realizar operaciones
criptográficas, como cifrar una columna o volver a cifrarla para cambiar (rotar) una clave de cifrado
de columna, dentro del enclave sin mover los datos fuera de la base de datos, impulsando así la
realización de tales tareas, especialmente para mesas más grandes.
Informática confidencial con enclaves seguros |63
¿Cómo se establece la confianza en el enclave? Existe un servicio de atestación, que se utiliza para
verificar que el enclave sea confiable antes de que el cliente intente usarlo:
SQL Server 2019 admite la certificación de enclaves VBS mediante Host Guardian Service (HGS), que es
una función en Windows Server 2019. HGS se puede configurar para usar uno de dos modos de
certificación:
• La atestación de clave de host autoriza a un host demostrando que posee una clave privada
conocida y confiable. La atestación de clave de host no permite que una aplicación cliente
verifique que el hipervisor de Windows en la máquina que aloja SQL Server no se haya visto
comprometido. Por lo tanto, este modo de certificación, que es fácil de configurar y compatible
con una amplia gama de entornos, sólo puede recomendarse para pruebas y desarrollo.
• La atestación de TPM valida las mediciones de hardware para garantizar que un host ejecute solo los
archivos binarios y las políticas de seguridad correctos. Proporciona a una aplicación cliente SQL
una prueba de que el código que se ejecuta dentro del enclave es una biblioteca de enclave
genuina de Microsoft SQL Server y que el hipervisor de Windows en la máquina que aloja SQL
Server no se ha visto comprometido. Es por eso que se recomienda la certificación TPM para
entornos de producción. La atestación de TPM requiere que SQL Server se ejecute en una máquina
que admita TPM 2.0.
Para obtener un tutorial paso a paso sobre cómo comenzar a usar Always Encrypted usando enclaves,
consulte:https://aka.ms/AlwaysEncryptedEnclavesTutorial .
64|Seguridad empresarial
Nota
No se puede aplicar una regla de enmascaramiento en una columna que esté siempre cifrada.
Tipos
Puede elegir entre cuatro máscaras diferentes, donde la selección normalmente depende de sus tipos de datos:
• POR DEFECTO: Enmascaramiento completo según los tipos de datos de los campos designados
• CORREO ELECTRÓNICO: un método de enmascaramiento que expone la primera letra de una dirección de correo electrónico, como
aXXX@XXXX.com
• ALEATORIO: una función de enmascaramiento aleatorio para usar en cualquier tipo numérico para
enmascarar el valor original con un valor aleatorio dentro de un rango específico
• COSTUMBRE: Expone la primera y la última letra y agrega una cadena de relleno personalizada en el
medio
Implementación de DDM
El siguiente ejemplo crea una tabla con diferentes reglas de enmascaramiento aplicadas a las columnas.Nombre de pila
solo expondrá la primera letra,Teléfonoutilizará la regla de enmascaramiento predeterminada, y paraCorreo electrónico,
aplicaremos la regla de enmascaramiento de correo electrónico:
IR
INSERTAR dbo.Usuarios
VALORES
masking_function MaskFunction
DE sys.masked_columns
ORDENAR POR Nombre de tabla, Nombre de columna;
Si se conecta a la base de datos como un inicio de sesión SQL que solo tiene acceso de lectura (como lo
indica el siguiente código), verá los datos enmascarados. En otras palabras, el usuario que inicia sesión
no tiene derecho a ver el valor real de los datos, como se demuestra en el siguiente código.
NOMBRE_USUARIO(), NOMBRE_USUARIO();
SELECCIONAR * DE dbo.Users
Si decide permitir que el usuario vea los datos en su forma nativa, puede emitir elCONCEDER DESENMASCARAR
comando como se muestra aquí:
IR
SELECCIONE NOMBRE_USUARIO(),
NOMBRE_USUARIO(), NOMBRE_USUARIO();
SELECCIONAR * DE dbo.Users
Como puede ver, la implementación de esta característica no requiere cambios en el código de la aplicación y se
puede controlar mediante permisos dentro de SQL Server al deducir quién tiene y quién no tiene la capacidad de
ver los datos. Aunque esta no es una verdadera forma de cifrado a nivel de disco, esta característica es sólo un
pequeño elemento de la estrategia de seguridad más amplia para sus servidores SQL y es mejor utilizarla junto
con otras características discutidas hasta ahora para brindar una defensa más amplia.
Seguridad a nivel de fila (SPI ) brinda a los administradores y desarrolladores de bases de datos la capacidad
de permitir un control de acceso detallado sobre las filas dentro de las tablas. Las filas se pueden filtrar según el
contexto de ejecución de una consulta. Un elemento central de esta característica es el concepto de una política
de seguridad en la que, a través de una función con valores de tabla en línea, escribiría su lógica de filtrado para
controlar el acceso con total transparencia a la aplicación. Los ejemplos del mundo real incluyen situaciones en
las que le gustaría evitar el acceso no autorizado a ciertas filas para inicios de sesión específicos, por ejemplo,
dando acceso solo a un superusuario para ver todas las filas dentro de una tabla confidencial y permitiendo a
otros usuarios ver filas que solo el superusuario debería ver. El siguiente ejemplo muestra lo sencillo que es
implementar RLS mediante T-SQL. En un nivel alto, acceso a una tabla específica llamadarls.All_Patientestá
definido por una columna llamadaNivel de acceso al grupo, que está asignado a dos inicios de sesión SQL
llamadosGerente Globaly General. Como puedes imaginar, elGeneraliniciar sesión no podrá ver los datos que
Gerente Globalestá autorizado a ver.
68|Seguridad empresarial
El siguiente código es el T-SQL necesario para crear la función de valor de tabla y la política de
seguridad con el estado establecido enEN:
COMO
VOLVER SELECCIONAR 1 COMO fn_securitypredicate_result
IR
Ejecutando el código comoGerente GlobalEl usuario devolverá todas las filas dentro de la
tabla, en contraste con elGeneralusuario, que solo verá las filas que tiene derecho a ver:
EJECUTAR COMO USUARIO = 'GlobalManager';
SELECCIONAR * DE rls.All_Patient
REVERTIR;
Seguridad a nivel de fila |69
La siguiente captura de pantalla confirma los datos que elGeneralEl usuario sólo puede ver:
SELECCIONAR * DE rls.All_Patient
REVERTIR;
Si verifica las propiedades del escaneo de índice agrupado, verá que se evalúa el
predicado:
Este tipo de predicado se denomina predicado de filtro, pero también puede crear un predicado de bloque para bloquear
explícitamente las operaciones de escritura (comoDESPUÉS DE INSERTAR,DESPUÉS DE LA ACTUALIZACIÓN,ANTES DE
ACTUALIZAR, yANTES DE ELIMINAR) que violan el predicado.
Para fines de administración, puede consultar las siguientes tablas del sistema para ver las políticas
de seguridad y los predicados de seguridad que se han definido:
SELECCIONAR * DE sys.security_policies
Para mantener el mejor rendimiento, se recomienda no involucrar muchas uniones de tablas dentro
de la función de predicado, para evitar conversiones de tipos y evitar la recursividad.
Revisión de cuentas
Si implementar una estrategia de auditoría es primordial para su negocio para cumplir con regulaciones
como laLey de Responsabilidad y Portabilidad del Seguro de Salud (HIPAA ), elSarbanes-Oxley (SOX ), y
elEstándar de seguridad de datos de la industria de tarjetas de pago (PCI-DSS ), entonces es posible
aprovechar SQL Server 2019 para lograr esto con SQL Server Audit. Con esta característica, podrá
garantizar la responsabilidad por las acciones realizadas en sus servidores y bases de datos SQL, y podrá
almacenar esta información de registro en archivos locales o en el registro de eventos para análisis
futuros, todos los cuales son objetivos comunes de una estrategia de auditoría.
Para implementar la auditoría de SQL Server, primero se debe crear la auditoría principal a nivel del
servidor, que dicta dónde se ubicarán los archivos para que se registre la información. A partir de esta
auditoría principal, puede crear una especificación de auditoría a nivel de servidor. En este nivel, podrá
auditar acciones como cambios en la función del servidor y si se ha creado o eliminado una base de datos.
Alternativamente, puede aplicar esta característica al nivel de la base de datos a través de una
especificación de auditoría a nivel de base de datos, donde puede auditar acciones directamente en el
esquema de la base de datos y los objetos del esquema, como tablas, vistas, procedimientos almacenados
y funciones (consultehttps://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-
server-audit-action-groups-and-actions?view=sql-server-ver15 para obtener una lista completa de las
capacidades para la auditoría a nivel de servidor y de base de datos).
El siguiente ejemplo muestra el código necesario para auditar una tabla específica, [Recursos Humanos].
[Historial de Pagos del Empleado], paraBORRARactividad utilizando una base de datosAUDITORÍA
especificación:
USO [maestro]
IR
ARCHIVAR
( FILEPATH = N'D:\AUDIT\'
, TAMAÑO MÁXIMO = 1024 MB
Traducido del inglés al español - www.onlinedoctranslator.com
72|Seguridad empresarial
, MAX_FILES = 10
, RESERVE_DISK_SPACE = APAGADO
)
CON
(QUEUE_DELAY = 1000
, ON_FAILURE = CONTINUAR
, AUDIT_GUID = 'A164444-d7c8-4258-a842-9f2111f2c755'
)
ALTERAR AUDITORÍA DEL SERVIDOR [MainAudit] CON (ESTADO = ACTIVADO) IR
USAR [AdventureDB]
IR
IR
DECLARAR @files VARCHAR(200) = 'D:\AUDIT\*.sqlaudit'; SELECCIONAR * DESDE
Como puede ver, es muy sencillo configurar la auditoría y puede hacerlo con una sobrecarga
mínima de rendimiento.
Conexiones seguras |73
Conexiones seguras
Capa de socket de servicio (SSL ) yTransport Layer Security (TLS ) son protocolos criptográficos
que proporcionan cifrado entre dos puntos finales, como una aplicación de llamada y SQL Server.
Esta es una forma de "cifrado en tránsito". Este es un concepto muy importante para las empresas
que procesan pagos. Deben cumplir con PCI-DSS. SSL es el predecesor de TLS y respalda la necesidad
de abordar las vulnerabilidades encontradas con SSL, proporcionando así algoritmos y conjuntos de
cifrado más seguros. La recomendación de Microsoft es utilizar el cifrado TLS 1.2, que admite todas
las versiones de SQL Server (suponiendo que estén instalados los últimos service packs) hasta SQL
Server 2019 inclusive. El objetivo final de utilizar TLS es establecer una conexión segura . Esto se hace
mediante SQL Server enviando su certificado TLS al cliente. El cliente deberá entonces validar su
copia del autoridad de certificación (California ) certificado. La CA es un tercero de confianza en el
que confían tanto el propietario del certificado como la parte que confía en el certificado.
1. Para abrir la consola MMC, haga clic enComenzary luego haga clic enCorrer. En elCorrercuadro de diálogo,
escriba lo siguiente:
MMC
2. En elConsolamenú, haga clicAgregar o quitar complemento.
Para conocer los pasos completos para instalar un certificado, consulte el siguiente enlace:
https://support.microsoft.com/en-us/help/316898/how-to-enable-ssl-encryption-for-
aninstance-of-sql-server-by-using-mi .
74|Seguridad empresarial
En SQL Server 2019, se realizaron mejoras en el Administrador de configuración de SQL Server, como
optimizaciones para la administración y configuración de certificados. Primero, se presenta más
información al administrador sobre las fechas de vencimiento, una adición simple pero útil. Más
importante aún, desde la perspectiva de un grupo de disponibilidad o un clúster de conmutación por
error, ahora es posible implementar certificados en varias máquinas que forman el clúster de
conmutación por error o el grupo de disponibilidad. Esto reduce la sobrecarga de administración que
supone instalar y gestionar certificados por separado en varios nodos, lo que puede llevar mucho tiempo
en el caso de arquitecturas complejas.
SSL/TLS
SSL/TLS se aplica a todas las conexiones. Esto significa que los datos entre la base de datos y el
cliente se cifran en tránsito (como se mencionó en la sección anterior). Para la cadena de conexión
de su aplicación, debe asegurarse de queCifrar=Verdaderoy TrustServerCertificate=Falsoporque
hacer esto ayudará a prevenir ataques de intermediarios. No se necesita ninguna configuración
manual del certificado; Todo esto lo hace Microsoft como estándar predeterminado.
Cortafuegos
Microsoft implementa una opción de "negar todo de forma predeterminada". política para Azure SQL
Database. Es decir, cuando creas un sistema "lógico" El servidor SQL en Azure para alojar su base de datos,
usted, como administrador, deberá realizar más cambios de configuración para permitir un acceso exitoso.
Esto suele ser en forma de reglas de firewall (que pueden tener un alcance al nivel del servidor o al nivel de la
base de datos), donde usted indicaría qué direcciones IP tienen permiso de acceso yRed virtual (Red virtual )
normas.
Las reglas de VNet deben implementarse siempre que sea posible. Una VNet contiene una dirección de
subred; luego puede crear una regla de VNet cuyo ámbito sea el nivel del servidor, lo que permitirá el
acceso a las bases de datos en ese servidor para esa subred específica. Esto significa que si tiene
máquinas virtuales creadas dentro de una subred específica vinculada a la regla VNet, tendrán acceso a
Azure SQL Database (suponiendo que el punto final Microsoft.sql esté habilitado). Tanto las reglas de
firewall como las reglas de VNet se pueden usar juntas si es necesario.
Con la autenticación de Azure AD, ahora puede administrar de forma centralizada los usuarios de la base de
datos desde una ubicación central. Este enfoque no sólo es mucho más seguro que la autenticación de SQL
Server, sino que también permite que la rotación de contraseñas se produzca en un solo lugar. Puedes controlar
los permisos a través de grupos, facilitando así la gestión de la seguridad. Configurar esta característica también
le permitirá conectarse a la base de datos usandoautenticación multifactor (Ministerio de Asuntos Exteriores
), que incluye opciones de verificación como mensajes de texto, llamadas telefónicas, integración de aplicaciones
móviles y tarjetas inteligentes con PIN. Esta idea de MFA también está integrada en herramientas como SSMS, lo
que proporciona una capa adicional de seguridad para los usuarios que requieren acceso a Azure SQL Database.
Es un enfoque muy recomendable.
76|Seguridad empresarial
UN PROVEEDOR EXTERNO;
Seguridad de datos avanzada (ANUNCIOS ) es un conjunto de funciones avanzadas que puede habilitar
por un pequeño costo. El costo de esto se basa en el precio del nivel estándar de Azure Security Center (es
gratis durante los primeros 30 días). El costo incluye Data Discovery & Clasificación, evaluación de
vulnerabilidades (similar a lo que analizamos anteriormente para los servidores SQL locales) y protección
avanzada contra amenazas para el servidor:
Para habilitar esto, deberá navegar hasta elSeguridadsección de la base de datos a través del
portal de Azure:
La detección de amenazas es la única característica de la sección anterior que no está disponible con SQL
Server 2019 local, pero sí con Azure SQL Database. Este servicio detecta actividades anómalas que indican
intentos inusuales y potencialmente dañinos de acceder o explotar bases de datos, como inyección SQL,
ataques de fuerza bruta y análisis de direcciones IP desconocidas. Microsoft analiza una gran cantidad de
telemetría relacionada con la actividad de la red en la nube y utiliza algoritmos avanzados de aprendizaje
automático para este servicio proactivo. Es una buena práctica habilitar esta configuración. Hay un costo
asociado a esto, pero el beneficio supera este costo mínimo. Los ataques cibernéticos son cada vez más
sofisticados y aquí es donde las herramientas de detección y prevención de amenazas constituyen una
pieza importante de su estrategia de defensa. Esta configuración se puede aplicar al servidor o a la base
de datos.
Base de datos SQL de Azure |79
Figura 2.48muestra una alerta por correo electrónico en tiempo real que se envía a los administradores:
Puedes ver elDECLARACIÓN VULNERABLEque fue usado; Se detectó un ataque clásico de estilo
inyección SQL.
Con suerte, podrá ver la gran cantidad de esfuerzo que se ha realizado en Azure SQL Database y SQL
Server 2019 en materia de seguridad. Todas las herramientas y características analizadas en este capítulo,
cuando se combinan, lo ayudarán a crear una plataforma de datos confiable a nivel empresarial.
Es importante salvaguardar sus datos no sólo desde una perspectiva de seguridad sino también para
garantizar que estén disponibles durante una interrupción, ya sea planificada o no. Esto se conoce como
proporcionar continuidad del negocio. La capacidad de responder a incidentes locales y volver a
funcionar se conoce comoAlta disponibilidad(JA). Por ejemplo, supongamos que el almacenamiento en
un servidor físico falla y necesita cambiar rápidamente la producción a otro servidor. Esto debería ser
posible dentro del mismo centro de datos con un impacto mínimo.
Un evento más catastrófico, como la pérdida de un centro de datos, desencadena lo que comúnmente se conoce
comoRecuperación de desastres(DRoDR). La D/R generalmente implica algo más que simplemente garantizar que
una base de datos esté lista para ser utilizada en otros lugares. Por ejemplo, antes de poner en línea una base de
datos o una instancia, es fundamental asegurarse de que los aspectos centrales de la infraestructura estén
funcionando.
82|Alta disponibilidad y recuperación ante desastres
Tanto HA como D/R son importantes y tienen un propósito: la continuidad del negocio. SQL Server 2019 de
Microsoft tiene métodos integrados para aumentar la disponibilidad, minimizar el tiempo de inactividad por
mantenimiento y ayudar cuando se producen interrupciones. Este capítulo no solo cubrirá cuáles son esas
características, sino también las novedades de SQL Server, así como las mejoras en Windows Server 2019
que afectan las configuraciones de disponibilidad de SQL Server.
Esta sección proporcionará una descripción general de las funciones de disponibilidad en SQL Server 2019. Todas
las funciones descritas en esta sección son compatibles con servidores físicos o virtualizados (maquinas
virtuales, omáquinas virtuales), ya sea que esas máquinas virtuales se ejecuten localmente bajo un hipervisor
tradicional o en la nube pública comoInfraestructura como un servicio(IaaS). Otras características basadas en
plataforma, como las proporcionadas por un hipervisor, suelen formar parte de una estrategia de disponibilidad
general para SQL Server, pero están fuera del alcance de este capítulo.
La piedra angular de cualquier plan de continuidad del negocio es una estrategia de respaldo sólida con
restauraciones probadas. En otras palabras, la función de copia de seguridad y restauración es la forma más básica
de disponibilidad en cualquier edición de SQL Server. No importa qué más implemente, ya sea una de las
características integradas de SQL Server o alguna utilidad de terceros, asegúrese de que este componente clave de la
continuidad del negocio se implemente correctamente para satisfacer sus necesidades.Objetivos de tiempo de
recuperación (RTO ), o cuánto tiempo tiene para comenzar a funcionar, yObjetivos del punto de recuperación (
RPO ), o cuánta pérdida de datos se puede tolerar en el peor de los casos.
SQL Server puede generar tres tipos de copias de seguridad de bases de datos: completa, diferencial y de registro de transacciones.
Una copia de seguridad completa es la base de datos completa, un diferencial contiene los cambios desde la última copia de seguridad
completa y una copia de seguridad del registro de transacciones contiene registros de los que no se realizó una copia de seguridad en
una copia de seguridad del registro de transacciones anterior. Las copias de seguridad del registro de transacciones no se pueden
generar cuando una base de datos está configurada con el modelo de recuperación simple.
Las copias de seguridad se pueden crear localmente y almacenarse en unidades conectadas al servidor, en un recurso
compartido de archivos (copiado o generado), o incluso se pueden realizar copias de seguridad en una URL que use
Azure para almacenar copias de seguridad de SQL Server. Puede encontrar más información sobre copias de seguridad
en URL enhttps://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/sql-serverbackup-to-url?view=sql-
server-2017 . Las copias de seguridad nunca deben ser un único punto de falla y siempre deben copiarse en otro lugar
para que sean seguras, incluso si algunas se guardan localmente para reducir el tiempo que llevaría restaurarlas si
fuera necesario.
Se pueden utilizar utilidades de copia de seguridad de terceros con SQL Server siempre que generen una copia
de seguridad adecuada de SQL Server. Si no se hace correctamente, las bases de datos de SQL Server podrían
sufrir consecuencias negativas. Consulte con su proveedor de respaldo preferido para ver cómo se integran con
SQL Server.
Descripción general de las funciones de disponibilidad de SQL Server |83
Siempre en AG
Para las configuraciones que se implementan para lograr disponibilidad, un AG proporciona protección a nivel
de base de datos y, si se usa la edición Enterprise, también se pueden usar instancias adicionales conocidas
como réplicas secundarias como algo más que servidores en espera. La instancia que contiene las bases de
datos de lectura/escritura para un AG se conoce como réplica principal. Una instancia puede ser una réplica
principal de un AG y una réplica secundaria de otro. Las réplicas pueden ser locales (físicas o virtuales) o en la
nube pública con máquinas virtuales IaaS para una solución híbrida. Tener una réplica en Azure u otro
proveedor de la nube es una forma de proporcionar una recuperación ante desastres más sencilla cuando no
tiene su propio centro de datos adicional.
Los AG son compatibles con configuraciones de SQL Server basadas en Linux y Windows Server. A
partir de SQL Server 2016, los AG se encuentran en la edición Standard y Enterprise. No importa qué
edición de SQL Server utilice, la única limitación en la cantidad de AG son los recursos del sistema.
Para que una réplica secundaria se promueva y funcione como principal, debe tener todo lo necesario
para las aplicaciones y los usuarios finales. Todo lo que esté fuera de la base de datos, como inicios de
sesión, servidores vinculados, trabajos del Agente SQL Server y más, debe sincronizarse manualmente.
De forma predeterminada, la función AG está deshabilitada en SQL Server. Habilitarlo se realiza a través
del Administrador de configuración de SQL Server o PowerShell con Windows Server, o usando elmssql-
conf utilidad o editar el/var/opt/mssql/mssql.confarchivo con Linux. Para habilitar AG es necesario
reiniciar la instancia de SQL Server.
84|Alta disponibilidad y recuperación ante desastres
1. AG tradicionales
2. AG distribuidos
3. AG de escala de lectura
Los AG tradicionales se introdujeron en la edición Enterprise de SQL Server 2012 y requieren un clúster
subyacente. En SQL Server 2016 y versiones posteriores, la función AG en la edición estándar se denomina AG
básicos. La edición Enterprise no solo permite que las réplicas secundarias sean de solo lectura y realicen otras
tareas como copias de seguridad yComprobaciones de coherencia de la base de datos (DBCC ) si lo desea,
pero permite que haya más de una base de datos en el mismo AG. La edición estándar está limitada a una única
base de datos.
Para implementaciones basadas en Windows Server, el clúster subyacente es unClúster de conmutación por error
de Windows Server (WSFC ) y para todas las implementaciones basadas en Linux, esMarcapasos.
Nota
Las diferentes distribuciones de Linux pueden llamar a la función de manera diferente. Por ejemplo, la
función de Red Hat Enterprise Linux (RHEL) se conoce como complemento de alta disponibilidad.
Los AG tradicionales requieren que todas las réplicas en la configuración de un AG único formen parte del mismo
clúster, lo que significa la misma versión del sistema operativo y tipo de clúster. Otros tipos de AG que se describen
más adelante en este capítulo pueden permitir la combinación de sistemas operativos y tipos de clústeres.
Para proporcionar abstracción de modo que las aplicaciones y los usuarios finales no necesiten saber qué
instancia es la instancia principal, existe un componente llamado escucha del grupo de disponibilidad, o
simplemente escucha. El oyente también se puede utilizar para enviar tráfico a réplicas secundarias
configuradas para permitir la lectura.
En un WSFC, el oyente es la combinación de dos recursos: un nombre de red y una dirección IP. En
Pacemaker, es sólo un recurso de dirección IP. En el backend, si está utilizando los Servicios de
dominio de Active Directory con un AG basado en WSFC, será necesario crear un objeto de
computadora para el oyente, así como una entrada en DNS. Para los AG basados en Pacemaker,
solo se requiere una entrada DNS para el oyente. Por ejemplo, si tienesNodoAyNodoB como los
servidores subyacentes y un WSFC con el nombreMi WSFC, el oyente tendrá un nombre
completamente diferente, comoAppLsnr. Todas las conexiones de aplicaciones, ya sea para lectura o
escritura, usaríanAppLsnr, no los nombres de los nodos, las instancias (si tienen nombre) o el WSFC.
Descripción general de las funciones de disponibilidad de SQL Server |85
Los AG no tienen requisitos de almacenamiento compartido, pero se pueden combinar con FCI (consulte la
siguiente sección para obtener más información) para aumentar la resiliencia. Debido a que lo sincrónico y
asincrónico se configuran por réplica, los AG le permiten tener disponibilidad local y recuperación ante desastres
en la misma función, ya que lo asincrónico es mucho más tolerante con la distancia entre los centros de datos. La
conmutación por error automática puede ocurrir con el movimiento de datos sincrónico si las réplicas están en
un estado sincronizado.
Para implementaciones AG tradicionales, la elección del sistema operativo dictará el nivel de integración
con el clúster subyacente. Un AG (o FCI) basado en Windows Server tiene una estrecha integración a
través de un recurso.dll, lo que convierte a SQL Server en una aplicación compatible con clústeres.
Aunque Pacemaker se entrega con distribuciones de Linux, no lo desarrollan ellas, pero se puede
personalizar. Microsoft proporciona un componente de integración (servidor-mssql-ha) para Pacemaker
conocido como agente de recursos, que debe descargarse (servidor-mssql-ha) e instalado en el servidor
físico o virtual. Al crear un AG, debe seleccionar un tipo de clúster. Para el marcapasos, esEXTERNO.
Nota
Ya sea que utilice Linux o Windows Server, la versión y/o distribución del sistema operativo
deben ser las mismas para un clúster Pacemaker o WSFC. Por ejemplo, no se puede mezclar
Ubuntu y Red Hat Enterprise Linux en el mismo AG.
86|Alta disponibilidad y recuperación ante desastres
La mayoría de los WSFC basados en Windows Server (e implementaciones de SQL Server) utilizanServicios de
dominio de Active Directory (ADDS ). Windows Server 2016 permite la creación de un WSFC que no utiliza AD,
llamado Clúster de grupo de trabajo. También puede tener servidores participando en diferentes dominios, lo
que se conoce como Clúster Multidominio. La seguridad de endpoints utiliza certificados, no una cuenta de AD
DS.
Todos los servidores, o nodos, del clúster deben poder comunicarse entre sí y ver el sistema de
nombres de dominio. Esto permite que SQL Server pueda crear AG en entornos no basados en
dominios. Estos se denominan AG independientes del dominio. Un ejemplo se muestra enFigura
3.2donde los nodos del Centro de datos 1 podrían unirse a un dominio, mientras que los del
Centro de datos 2 no. SQL Server llama a esta configuración AG independiente del dominio y
requiere el uso de certificados para los puntos finales.
En una configuración típica, donde el clúster subyacente se extiende a lo largo de varios sitios para la
recuperación ante desastres, toda la infraestructura central normalmente debe existir en ambos lugares. Esto
hace que ciertos elementos de diseño, como un testigo de un WSFC, sean potencialmente más desafiantes.
En la figura se muestra un ejemplo de un AG distribuido en dos centros de datos. Figura 3.2.
Introducidos en SQL Server 2016, los grupos de disponibilidad distribuidos le permiten crear un AG que
abarca más de un AG subyacente. Cada AG subyacente está en su propio grupo. Ese clúster podría estar
en Linux, Windows Server o incluso en un grupo de disponibilidad de escala de lectura, que se describe en
la próxima sección. El uso de un AG distribuido es una de las únicas formas de combinar Windows Server y
Linux, diferentes versiones de sistemas operativos como Windows Server 2016 y Windows Server 2019,
versiones de SQL Server y tipos de AG (escala de lectura y "normal") en el mismo configuración. En la figura
se muestra un ejemplo de un AG distribuido que abarca tanto un WSFC como un Pacemaker.Figura 3.3.
Por ejemplo, AG 1 podría ser SQL Server:
Para un AG distribuido, en lugar de usar los nombres del servidor al configurar, se usa el nombre del
oyente (o dirección IP). Sólo hay una copia de lectura/escritura de los datos. EnFigura 3.4, esta es la
base de datos en la réplica principal de AG 1. Si bien la réplica principal de AG 2 es técnicamente
primaria desde la perspectiva de AG, se la conoce comopromotor. Se utiliza para sincronizar las
réplicas secundarias en ese AG. El flujo de sincronización de datos se puede ver enFigura 3.4.
Nota
Un AG distribuido es una construcción exclusiva de SQL Server y no aparece en un clúster
subyacente. Para administrar, debe utilizar los DMV. Hay muy poco en SSMS a partir de la
versión 18.
Una única réplica principal puede alimentar dos AG diferentes en un AG distribuido, y un reenviador
también se puede utilizar como principal para otro AG distribuido, como se muestra enFigura 3.4. Esta
configuración es buena para escalar réplicas legibles. Todavía hay sólo una copia de lectura y escritura, y
está en AG1.
Figura 3.4: AG1 alimentando a AG2 y AG2 alimentando a AG3 en dos AG distribuidos
Otro uso de un AG distribuido es para actualizaciones y migraciones. Por ejemplo, enFigura 3.5, se
configura un AG distribuido entre las instancias de SQL Server 2016 y 2019. Esas instancias se
encuentran en diferentes WSFC con diferentes versiones de sistema operativo. Una vez que se produce
la transición, se puede desconfigurar el AG distribuido y se puede retirar la configuración anterior.
Descripción general de las funciones de disponibilidad de SQL Server |89
Figura 3.5: Uso de un AG distribuido para actualizar SQL Server y migrar a un WSFC diferente
Nota
Los AG distribuidos no funcionan con versiones de SQL Server anteriores a 2016, por lo que un AG de
2012 o 2014 no puede participar en un AG distribuido ni siquiera para actualizaciones o migraciones.
Un AG de escala de lectura requiere un tipo de clúster deNINGUNO, lo que significa que no utiliza WSFC ni
Pacemaker, y no se considera una configuración de disponibilidad porque un clúster subyacente
proporciona elementos como comprobaciones de estado y la capacidad de tener conmutación por error
automática. Tampoco es posible con un tipo de cluster deNINGUNO. Sin embargo, en determinadas
circunstancias, un AG de escala de lectura puede proporcionar recuperación ante desastres. Un ejemplo
sería si implementara una FCI con Storage Spaces Direct, no se podría configurar un AG tradicional, por lo
que uno de escala de lectura funcionaría para D/R.
En un AG de escala de lectura, la réplica principal es el escucha y permite que las réplicas de SQL
Server basadas en Linux y Windows Server participen en el mismo AG. Esto es diferente a un AG
tradicional, que requiere que todas las réplicas estén en el mismo SO/distribución o un AG
distribuido donde los AG basados en Linux y Windows Server están en el mismo AG distribuido,
pero en AG separados.
90|Alta disponibilidad y recuperación ante desastres
Siempre en FCI
Una FCI Always On proporciona protección a nivel de instancia. La protección a nivel de instancia significa que
todo lo que esté dentro de la instancia, como inicios de sesión, trabajos del Agente SQL Server y servidores
vinculados, existe después de la conmutación por error. Las FCI requieren tanto un clúster subyacente (WSFC o
Pacemaker) como almacenamiento compartido. El almacenamiento compartido puede ser un desafío para
algunas implementaciones virtualizadas y basadas en la nube pública, y es por eso que los AG suelen ser una
mejor opción para la disponibilidad de SQL Server no físico.
Las FCI no son una característica de escalamiento horizontal; sólo un nodo de un clúster posee todos los
recursos en un momento dado. Para lograr rendimiento, la instancia debe contabilizarse mediante métodos de
ampliación. Figura 3.6muestra una vista de alto nivel de una FCI. La línea continua indica que ese nodo es
propietario de la FCI y de la conexión al almacenamiento, mientras que la línea discontinua muestra que el otro
nodo está conectado y podría ser propietario del recurso, pero actualmente no lo es.
Cuando se produce una conmutación por error, la FCI se detiene en un nodo de un clúster Pacemaker o un
WSFC y luego comienza en otro. SQL Server pasa por una recuperación completa como lo haría si iniciara o
reiniciara un servidor. Esto significa que no hay pérdida de datos en el sentido de que los datos serán
consistentes hasta el punto de la conmutación por error: si una transacción está incompleta, se revertirá y todos
los datos que deban avanzar se revertirán.
Una diferencia importante entre un FCI basado en Pacemaker y su contraparte WSFC es que el
proceso de instalación es completamente diferente. Con un WSFC, las FCI son parte de la
configuración de SQL Server, lo que significa que no se pueden configurar después de instalar SQL
Server. En Linux, SQL Server se instala completamente localmente en cada nodo antes de configurar
la parte FCI en Pacemaker.
Otra diferencia entre las FCI basadas en Linux y Windows Server es que solo se puede configurar
una instalación de SQL Server en Linux. Eso significa que cada instalación de SQL Server en Linux es
una instancia predeterminada; Actualmente no existe el concepto de instancia con nombre en
Linux. Por lo tanto, no se puede configurar más de un FCI por grupo de Pacemaker. En un WSFC, se
admiten hasta 25 FCI (dependientes de los recursos).
Descripción general de las funciones de disponibilidad de SQL Server |91
Envío de registros
El trasvase de registros es una de las funciones más antiguas de SQL Server en cuanto a disponibilidad y, a menudo, se
utiliza para la recuperación ante desastres, pero también para actualizaciones y migraciones. Se basa en copia de
seguridad y restauración. Al igual que un AG, proporciona protección a nivel de base de datos y cualquier objeto fuera
de la base de datos debe contabilizarse por separado. El trasvase de registros utiliza trabajos del Agente SQL Server
para realizar una copia de seguridad del registro de transacciones en el origen, copiarlo en su destino y restaurarlo en
el servidor de espera activa. Desde el punto de vista de RPO, su valor es tan bueno como el último registro de
transacciones al que tiene acceso.
Debido a que la unidad de transacción es la copia de seguridad del registro de transacciones, registre las cuentas de
envío en busca de errores humanos. Si alguien emite unACTUALIZARsin unDÓNDEy eso no se ha aplicado al modo de
espera, podrías cambiar al modo de espera. Todas las transacciones se envían inmediatamente a una réplica
secundaria en un AG.
El envío de registros se puede combinar con AG y FCI y permite que instancias basadas en
Linux y Windows Server participen en la misma solución. Esto no es posible con FCI y, como se
describió anteriormente, combinar SQL Server en diferentes sistemas operativos con AG solo
se puede hacer con ciertas configuraciones.
Duplicación de bases de datos (DBM ) quedó obsoleto en SQL Server 2012. Su reemplazo oficial son los
AG y se documentaron como tales cuando SQL Server 2016 introdujo grupos de disponibilidad básicos y
la capacidad de usar AG con certificados. Si bien DBM todavía se incluye como parte de SQL Server 2019
para Windows Server (no para Linux), no debe usarse para nuevas implementaciones. Microsoft a
menudo ya no elimina funciones obsoletas. Los clientes que actualicen desde versiones anteriores de
SQL Server, donde DBM era la principal estrategia de continuidad del negocio, deberían migrar a AG.
La replicación no es una característica oficial de continuidad del negocio de la misma manera que lo son los AG,
FCI y el envío de registros. Sin embargo, se puede utilizar para mejorar la disponibilidad de datos y muchos
todavía lo utilizan en esta capacidad. Considere un escenario en el que los ejecutivos necesitan acceso a los
datos. Puede que no necesiten toda la base de datos, sino un subconjunto. La replicación permite este
escenario: el esquema puede ser diferente, tener una estrategia de indexación diferente, etc.
Si desea utilizar AG o envío de registros para generar informes, obtendrá los mismos datos en la fuente
y la misma estrategia de indexación.
Recuperación acelerada de bases de datos (ADR ) es una característica que se introdujo en Azure SQL Database pero que
ahora se incluye en SQL Server 2019 para implementaciones locales e IaaS. ADR acelera la recuperación cuando una base de
datos se pone en línea después de una conmutación por error o un evento en el que la base de datos no se desconectó
limpiamente. Habilitar ADR significa que las bases de datos estarán en línea y listas para ser utilizadas por los usuarios finales y
las aplicaciones más rápidamente, lo que reducirá el tiempo de inactividad y la falta de disponibilidad.
Aunque no es nuevo en SQL Server 2019, el concepto de una réplica de solo configuración se
introdujo después de SQL Server 2017 en la Actualización acumulativa 1. Se requiere una réplica de
solo configuración para una configuración de dos réplicas (primaria y secundaria) al implementar AG
en Linux. Para admitir la edición Standard y no afectar la licencia, se puede configurar una réplica de
solo configuración en Express. El punto final utilizado debe tener unROLEo TESTIGO, como se
muestra en el código de ejemplo siguiente:
CREAR AGEP DE PUNTO FINAL
ESTADO = INICIADO
COMO TCP (
Mejoras de disponibilidad en SQL Server 2019 |93
OYENTE_PORT = 5022,
OYENTE_IP = TODOS)
PARA BASE DE DATOS_ESPEJAMIENTO (
Figura 3.8muestra un AG basado en Linux que tiene dos réplicas y una réplica de solo
configuración.
A veces se requieren certificados para implementaciones FCI o AG. En este contexto, los
certificados son aquellos asociados con los nombres de la FCI o del oyente de un AG. Los
certificados para FCI y oyentes son certificados a nivel de red. En el pasado, estos
certificados debían aplicarse manualmente en cada nodo del clúster.
Con SQL Server 2019, ahora puede aplicar un certificado en todos los nodos de un WSFC para FCI
y oyentes usandoAdministrador de configuración de SQL Server (SSCM ). SSCM no existe para
Linux, por lo que esta mejora es solo para configuraciones AG y FCI basadas en Windows Server.
Recuerde que un certificadoNombre alternativo del sujeto (SAN ) para nodos AG debe incluir
los oyentes así como el nombre del nodo.Figura 3.9muestra un ejemplo de gestión de
certificados para una FCI:
Nota
Los certificados utilizados por los puntos finales para AG independientes del dominio, grupos
de escala de lectura y AG distribuidos son diferentes; se generan desde SQL Server y se
restauran en SQL Server.
Mejoras de disponibilidad en SQL Server 2019 |95
A partir de SQL Server 2019, es posible crear o reconstruir unÍndice de almacén de columnas
agrupado (CCI ) como operación en línea. Para hacerlo, deberá agregar el (EN LÍNEA = ENCENDIDO)
opción a laCREARoALTERARdeclaración. A continuación se muestran ejemplos. El primer ejemplo es la
creación de una nueva CCI:
EN Mi Mesa
CON (EN LÍNEA = ENCENDIDO);
EN Mi Mesa
RECONSTRUIR CON (EN LÍNEA = ENCENDIDO);
Configuración predeterminada con ámbito de base de datos para operaciones DDL en línea y reanudables
A través de SQL Server 2017, todas las operaciones de mantenimiento en línea deben especificarse como parte de la
declaración Transact-SQL. Los ejemplos mostrados arriba utilizanEN LÍNEA = ENCENDIDO. En SQL Server 2019, tiene
la opción de cambiar el comportamiento predeterminado de cada base de datos para EN LÍNEA = ENCENDIDOpor lo
que no es necesario que forme parte de la declaración Transact-SQL. Lo mismo ocurre con la nueva operación de
índice reanudable, dondeREANUDABLE = ENCENDIDOse puede ajustar.
Para cambiar el comportamiento predeterminado de una base de datos, modifique la configuración del ámbito de la
base de datos. Las dos opciones sonELEVATE_ONLINEyELEVATE_RESUMABLE. A continuación se muestra un código de
ejemplo. Las opciones sonAPAGADO(el comportamiento predeterminado),CUANDO_SOPORTADO, yFALLO_ NO
SOPORTADO:
Nota
Al momento de escribir este capítulo, esta es una opción exclusiva de Transact SQL y no se puede
configurar mediante SSMS.
96|Alta disponibilidad y recuperación ante desastres
Compatibilidad con instancias de clúster de conmutación por error para servicios de aprendizaje automático
La funcionalidad de lenguaje de máquina ahora es compatible con la instalación como parte de una
FCI. Sin embargo, no es compatible con clústeres como el propio SQL Server, el Agente SQL Server o
un AG. El recurso en la función, SQL Server Launchpad, es solo un servicio genérico, lo que significa
que no tiene detección de estado. La función solo pasará a otra si la propia FCI lo hace, ya que
depende del propio recurso de la FCI. Un ejemplo se muestra enFigura 3.10:
Más réplicas sincrónicas permiten diferentes escenarios. Por ejemplo, puedes tener:
• Hasta tres réplicas secundarias más dedicadas al acceso de solo lectura casi en tiempo real,
distribuyendo la carga aún más utilizando la función de equilibrio de carga del enrutamiento de
solo lectura.
La desventaja de configurar más réplicas síncronas es que su red debe ser sólida y las
IOPS deben estar optimizadas; de lo contrario, la sincronización se retrasará.
Si actualmente tiene problemas con la sincronización, agregar réplicas no mejorará la
situación.
Los índices de almacén de columnas son un tipo de índice que mejora el rendimiento de las consultas para cargas de
trabajo que utilizan grandes cantidades de datos. Un ejemplo sería un almacén de datos. En lugar de almacenarse en
un formato tradicional basado en filas, los índices de almacén de columnas se almacenan en un formato basado en
columnas y comprimen los datos. La creación o reconstrucción de un índice de almacén de columnas antes de SQL
Server 2019 era una operación fuera de línea, lo que significaba que no se podían producir cambios mientras se creaba
o recreaba el índice.
Con SQL Server 2019 Enterprise Edition, el mantenimiento del índice del almacén de columnas se puede realizar como
una operación en línea. Esto significa que cualquier base de datos que utilice índices de almacén de columnas estará
más disponible para su uso.
Aquí se muestra un ejemplo de instrucción Transact-SQL para crear un nuevo índice de almacén de columnas
como una operación en línea: la clave es la(EN LÍNEA = ENCENDIDO)parte:
EN Mi Mesa
CON (EN LÍNEA = ENCENDIDO);
Aquí se muestra un ejemplo de instrucción Transact-SQL para reconstruir un índice de almacén de columnas
existente para usar la nueva funcionalidad en línea:
EN Mi Mesa
RECONSTRUIR CON (EN LÍNEA = ENCENDIDO);
Nota
Esta mejora también se aplica a Azure SQL Database.
98|Alta disponibilidad y recuperación ante desastres
La forma de decirle a un AG que se pueden usar réplicas secundarias para acceso de lectura es configurar el
enrutamiento de solo lectura. En versiones anteriores deEstudio de administración de SQL Server (SSMS ), esto no fue
posible. A partir de SSMS 17.3, el enrutamiento de solo lectura se puede configurar en SSMS a través del Asistente para
nuevo grupo de disponibilidad, así como en las propiedades del propio AG. Un ejemplo del uso de SSMS para la
configuración de enrutamiento de solo lectura se muestra enFigura 3.11:
Nota
Si usa SSMS, se debe configurar un escucha antes de configurar el enrutamiento de solo lectura.
Cuando se lanzó SQL Server 2017, una de las características que faltaban en Linux era la replicación. En
SQL Server 2019, la replicación ahora es una característica incluida para las configuraciones de SQL
Server basadas en Linux. Se admiten las siguientes variantes de replicación:
• Replicación de instantáneas
• Replicación transaccional
• Fusionar replicación
• Publicación de Oracle
A diferencia de las configuraciones en clúster en SQL Server, la replicación no se preocupa por los
sistemas operativos subyacentes, por lo que los editores, distribuidores y suscriptores pueden
ejecutar el sistema operativo de su elección siempre y cuando se mantengan las restricciones de
versión para lo que puede constituir un editor, distribuidor o abonado.
La replicación requiere que el Agente SQL Server esté habilitado. Para hacer esto en Linux, primero verifique/ var/opt/
mssql/mssql.confpara ver si el Agente está habilitado. De lo contrario, ejecute los siguientes comandos. La habilitación
del Agente requiere reiniciar SQL Server, lo que significa un breve tiempo de inactividad:
Esta nueva capacidad en SQL Server 2019 permite conexiones que utilizan un escucha para garantizar
que los comandos basados en escritura siempre lleguen a la réplica principal, incluso si apunta a una
réplica secundaria. Hay dos aspectos a considerar en cuanto a la configuración:
El siguiente es un ejemplo de Transact-SQL para cambiar un AG existente para admitir esta nueva
funcionalidad:
A continuación se muestra un ejemplo de ejecución que muestra el funcionamiento de esta nueva funcionalidad. Intención de
aplicaciónse establece enLeer escribir, como se muestra enFigura 3.12, para una conexión hecha a AGN2.AGN2es
actualmente la réplica secundaria:
Después de conectarse a AGN2, observe el resultado de las dos consultas enFigura 3.13. La primera
es preguntarle a SQL Server qué réplica está usando la conexión y si cree que es la réplica principal,
que en este caso esAGN1. Sin embargo, mire el cuadro resaltado en la parte inferior: la conexión en
realidad es aAGN2:
Nota
Las versiones de SQL Server compatibles con Windows Server 2019 son SQL
Server 2016, 2017 y 2019.
Mejoras en la disponibilidad de Windows Server 2019 |103
Cambiar el estado de AD DS de un WSFC para todas las versiones anteriores a Windows Server
2019 implicó la destrucción completa del WSFC y de todo lo que se ejecuta en él. Eso fue muy
perturbador. Windows Server 2019 admite la capacidad de cambiar la membresía del dominio
de un WSFC y sus recursos.
Coordinator
Volúmenes compartidos en clúster (CSV ) han sido compatibles como almacenamiento para FCI desde
SQL Server 2014. Sin embargo, si necesitara un almacenamiento en clústerCoordinador de
transacciones distribuidas de Microsoft(MS DTC,MSDTC, o soloDTC), que debía colocarse en un disco
con una letra de unidad. Windows Server 2019 permite configurar DTC mediante CSV.
Figura 3.14muestra un DTC agrupado. Tenga en cuenta que el valor del objeto coincide con el ID
del CSV:
Los AG independientes del dominio pueden utilizar un WSFC que tenga nodos unidos a los Servicios de dominio de
Active Directory. Un aspecto importante de todos los WSFC es configurar el recurso de testigos adecuado para el
quórum. En Windows Server 2016, las únicas opciones que funcionan para esta configuración son la nube o el testigo
de disco. El testigo en la nube está basado en Azure, lo que no es una opción para algunos, especialmente aquellos en
una DMZ. El testigo de disco anula el propósito de tener una configuración de disco no compartido y complica ciertos
tipos de implementaciones. Un testigo de recurso compartido de archivos es la elección natural para un WSFC local
donde no hay almacenamiento compartido, pero un recurso compartido de archivos requiere conectividad de
dominio.
104|Alta disponibilidad y recuperación ante desastres
Windows Server 2019 permite la creación de un testigo de recurso compartido de archivos sin dominio. Todas las
ACL se configuran localmente en el recurso compartido de archivos y, cuando se crea el testigo, se proporcionan las
credenciales. Un ejemplo de esto se muestra enFigura 3.15. Un archivo compartido puede ser incluso algo tan
simple como una memoria USB conectada a un enrutador:
Antes de Windows Server 2019, los WSFC usaban NTLM para muchas cosas, como la
comunicación dentro del nodo. En Windows Server 2019, Microsoft rediseñó la seguridad de
WSFC y ya no hay dependencias NTLM. La autenticación SMB basada en certificados se utiliza
entre los nodos WSFC. Algunas aplicaciones pueden requerir NTLM, pero el WSFC ya no lo
requiere y, si se desea, se puede desactivar en el servidor.
La réplica de almacenamiento es una característica de Windows Server que le permite tener FCI que abarcan dos
ubicaciones para la recuperación ante desastres. Esto se logra mediante la replicación basada en disco. Storage Replica
no es para configuraciones AG donde las réplicas se mantienen sincronizadas a través de SQL Server.
Mejoras en la disponibilidad de Windows Server 2019 |105
Esto significa que una FCI solo puede tener un disco configurado con ella.
Nota
Para usar la réplica de almacenamiento para una FCI, primero cree todo el almacenamiento y la replicación y luego
Figura 3.18muestra cómo funciona un espejo bidireccional anidado. Windows Server contiene cuatro
copias de los datos en los dos servidores. Solo hay una copia de lectura/escritura de los datos, similar
a un AG distribuido:
La paridad acelerada por espejo anidado combina el espejo bidireccional con la paridad anidada. Por lo
tanto, obtiene paridad local para la resiliencia y la duplicación entre los servidores. VerFigura 3.19para ver
cómo se ve esto:
Actualmente, todas las configuraciones en clúster de SQL Server en Azure requieren el uso de un
equilibrador de carga interno para controlar las direcciones IP flotantes para el escucha, una FCI o un
WSFC. Windows Server 2019 es compatible con Azure. El proceso de creación de WSFC detectará si
está ejecutando Azure y, de ser así, creará un nombre de red distribuida. Normalmente, un nombre
de red requiere su propia dirección IP. Un nombre de red distribuida utiliza la dirección IP del nodo
subyacente.
108|Alta disponibilidad y recuperación ante desastres
Otra mejora en Windows Server 2019, cuando se implementa en Azure, es que Windows Server ahora detecta si
se está realizando mantenimiento en el host para la máquina virtual IaaS y registra eventos. Esto ayuda a la
hora de solucionar problemas. Esto se rastrea en el registro operativo de clústeres de conmutación por error.
Los nuevos ID de eventos son:
Hay una nueva propiedad en el WSFC llamadaDetectar eventos administrados. Hay cinco valores que esto
puede tener:
Una de las capacidades únicas de SQL Server es la capacidad de aprovechar el poder de la infraestructura de
nube híbrida. Hay varias formas de aprovechar Azure para mejorar la alta disponibilidad y la recuperación ante
desastres de una implementación local de SQL Server. Azure Storage es un servicio principal ofrecido por
Microsoft Azure: Azure Storage. Ofrece soluciones de almacenamiento flexibles, altamente escalables y listas
para la empresa a precios competitivos. SQL Server 2019 y Azure Storage trabajan juntos para beneficiar a los
usuarios. Podemos aprovechar Azure Blob Storage para desarrollar e implementar soluciones híbridas, como
realizar copias de seguridad de bases de datos de SQL Server locales en la nube (también llamado Copia de
seguridad en URL) y crear archivos de datos de SQL Server en Azure Storage para usar copias de seguridad de
instantáneas de archivos.
112|Funciones híbridas: SQL Server y Microsoft Azure
También es posible mejorar su estrategia de recuperación ante desastres aprovechando Azure para
que, en última instancia, se convierta en su centro de datos secundario. Hay muchas maneras de
beneficiarse de esto. Un enfoque común es que puede ampliar su grupo de disponibilidad local
aprovisionando una réplica asíncrona secundaria en una máquina virtual de Azure con SQL Server
instalado. Otro escenario híbrido utilizado por los clientes empresariales es la configuración de la
replicación transaccional entre SQL Server local y Azure SQL Database para ayudar con la migración
a Azure con un tiempo de inactividad mínimo.
Una excelente estrategia para las bases de datos de SQL Server locales es realizar una copia de seguridad en Azure
Storage. Hay muchos beneficios al aprovechar la escala masiva de la nube para realizar copias de seguridad.
Beneficios
• Puede considerar el uso de Azure Storage como una ubicación de copia de seguridad externa rentable que
es una extensión de su propio centro de datos local y que tiene un alto rendimiento y una alta
disponibilidad. Con la ayuda de Microsoft, puedes escalar fácilmente tu cuenta de almacenamiento a 5
PB.
• No existenRedes de matrices de almacenamiento (SAN) o recursos compartidos de archivos para que usted los
administre y dé soporte. Los servicios de Azure se encargarán de esto, reduciendo así los costos de administración
del hardware.
• Usando la última versión deEstudio de administración de SQL Server (SSMS) hace que la configuración
sea rápida y sencilla con soporte nativo para Copia de seguridad en URL. Una vez que haya comprendido
los requisitos de alto nivel, utilizar T-SQL también es una opción alternativa válida y sencilla.
Requisitos
Para implementar con éxito la función de copia de seguridad en URL, deberá configurar
los siguientes componentes:
La cuenta de almacenamiento
Debe crear contenedores para organizar el contenido de su cuenta de almacenamiento. Hay dos tipos de
almacenamiento de blobs que puede usar: blobs en páginas y en bloques (técnicamente, existe otro tipo de blob,
llamado blob anexado, que no se tratará en este capítulo). El tipo de blob que utilice viene dictado por la ruta de
seguridad que tome. Si decide usar una clave de almacenamiento dentro de la credencial de SQL Server, se
usarán blobs en páginas; Si configura un SAS para la credencial, se utilizarán blobs en bloques. La práctica
recomendada es utilizar blobs en bloques por tres motivos principales. En primer lugar, utilizar un SAS es una
forma más segura que utilizar una clave de almacenamiento para autorizar el acceso al almacenamiento de
blobs. Proporciona un nivel de acceso más granular sin la necesidad de exponer las claves de la cuenta de
almacenamiento principal (primaria o secundaria). Con los blobs en bloques como destino, puede aprovechar
varios blobs (separación) para mejorar el rendimiento de las copias de seguridad y las restauraciones de bases
de datos más grandes. Por último, los blobs en bloques son la opción más rentable en comparación con los
blobs en páginas.
114|Funciones híbridas: SQL Server y Microsoft Azure
Configuración
3. Una vez que haya completado los tiempos de vencimiento y los permisos, deberá hacer clic en Crear
y copiar la cadena de consulta, como se muestra enFigura 4.4:
• st/sedefine la hora de inicio y las horas de vencimiento definidas para el SAS para el recurso.
• spmuestra los permisos definidos; para este ejemplo, son lectura, escritura y
eliminación (RWD).
Ahora comprendemos los diferentes componentes de la cadena de consulta anterior. En última instancia, esto
se convertirá en el secreto de la credencial de SQL Server en el proceso de Copia de seguridad en URL (ofuscado
por motivos de seguridad):
LA BASE DE DATOS DE RESPALDO procesó con éxito 191265 páginas en 30,078 segundos
(49,679 MB/seg).
La cuenta de almacenamiento |117
Si vuelve a iniciar sesión en la cuenta de almacenamiento a través de la herramienta Storage Explorer, verá el archivo de copia
de seguridad:
Nota
Otro beneficio de esta característica al utilizar blobs en bloques es el hecho de que puede
asuntoCON COMPRESIÓN,MAXTRANSMISIÓN, yTAMAÑO DE BLOQUEargumentos para la copia de seguridad
comandos para mejorar aún más el rendimiento de la copia de seguridad y ahorrar espacio para esos
archivos más grandes.
La restauración a partir de esta copia de seguridad no es diferente de lo que haría con archivos de copia de seguridad
vinculados localmente. Simplemente indique elDESDE URLargumento en lugar deDESDE DISCO:
USO [maestro]
URL = N'https://aksproddiag844.blob.core.windows.net/sqlbackups/CodeDB_
Apr_5_2019_9_19AM.bak' CON ARCHIVO = 1,
MOVER N'CodeDB_Data' A N'D:\SQL\Codedb2.mdf',
MOVER N'CodeDB_Log' A N'D:\SQL\Codedb2_Log.ldf',
NOUNLOAD, ESTADÍSTICAS = 5
118|Funciones híbridas: SQL Server y Microsoft Azure
Esta característica permite a los usuarios crear bases de datos de SQL Server 2019 localmente, pero los archivos de
datos subyacentes (MDF, NDF y LDF) están vinculados al almacenamiento de Azure Blob en lugar del almacenamiento
local:
Nota
Esta técnica híbrida solo se recomienda y admite para bases de datos de usuarios y no para
bases de datos del sistema.
Cuando se utiliza esta técnica de separación, se le asigna un pequeño costo por el almacenamiento real y las
transacciones que ocurren por archivo de base de datos en forma de renovaciones de arrendamiento de blobs,
que ocurren cada 45 a 60 segundos.
Nota
Por favor visitahttps://azure.microsoft.com/pricing/ para calcular sus costos mensuales.
Configuración y conceptos
Para la configuración, los conceptos son muy similares a los de Copia de seguridad en URL. Las prácticas
recomendadas dictan que el contenedor de Azure Storage debe ser privado. Aquí es donde se ubicarán
los archivos de datos. Luego será necesario crear una SAS en este contenedor, donde se convertirá en el
secreto dentro del almacén de credenciales de SQL Server.
Esta característica utiliza blobs en páginas en lugar de blobs en bloques, que es el tipo de blob más eficiente
para patrones aleatorios de lectura y escritura:
Genere el SAS a través del Explorador de almacenamiento. EnFigura 4.8tenemos un nuevo contenedor privado llamado
archivos de datos sql:
5. Utilice la cadena de consulta generada como secreto para una credencial de SQL Server, que se
muestra aquí y se ofusca en este capítulo:
(NOMBRE = IOT_DB_log,
NOMBRE DE ARCHIVO = 'https://aksproddiag844.blob.core.windows.net/sqldatafiles/
IOT_DBLog.ldf')
7. Confirme que los archivos de la base de datos ahora estén en Azure Storage:
8. Utilice una consulta SSMS para verificar que los archivos estén vinculados a Azure Storage:
SELECCIONAR * DE sys.sysfiles
Consideraciones
Hay algunos puntos importantes a considerar cuando se analizan las ventajas de los archivos de datos de SQL Server.
La cuenta de almacenamiento utilizada para almacenar los archivos de datos no debe utilizar ninguna forma de
replicación geográfica a nivel de almacenamiento. Más específicamente, esto significa que no se deben utilizar cuentas
GRS. Esto se debe a que esta opción replica datos de forma asincrónica en dos regiones geográficas, y si se produce
una conmutación por error donde la ubicación secundaria ahora sirve como principal, entonces es posible que se dañe
la base de datos debido a la forma en que funciona la replicación asincrónica.
122|Funciones híbridas: SQL Server y Microsoft Azure
Como mencionamos cuando analizamos la copia de seguridad en URL, las concesiones se utilizan en
objetos de Blob Storage y las renovaciones se realizan cada 45 a 60 segundos. El impacto de esto es
diferente para esta característica porque si SQL Server falla y luego se configura otra instancia para usar
los mismos blobs, la nueva instancia podría tener que esperar hasta 60 segundos para que caduque la
concesión. Puede solucionar esto rompiendo manualmente el contrato de arrendamiento si no puede
esperar 60 segundos.
Para cancelar el contrato de arrendamiento, debe hacer clic derecho en los objetos dentro de su contenedor y hacer clic en
Arrendamiento de ruptura:
Nota
En términos de características de SQL Server, FILESTREAM y el procesamiento de transacciones en línea
(OLTP) en memoria no son compatibles. Estos necesitarán almacenamiento local. Los AG son compatibles
siempre que no agregue nuevos archivos de base de datos a la base de datos principal.
Copias de seguridad de instantáneas de archivos |123
Uno de los beneficios de configurar archivos de datos de SQL Server en Azure es la capacidad de aprovechar las copias
de seguridad de instantáneas de archivos. Esto se resume enFigura 4.13, donde 1 muestra la configuración exitosa de
los archivos de datos en Azure (un requisito previo tratado anteriormente) y 2 es el diseño de alto nivel de cómo los
archivos de datos y los archivos de instantáneas interactúan entre sí después de que se realiza una copia de seguridad
completa:
La copia de seguridad completa de la base de datos que utiliza tecnología de instantáneas crea una instantánea de cada dato y archivo
de registro que forma parte de la base de datos y establece la cadena de copia de seguridad del registro de transacciones para la
recuperación en un momento dado. Cuando se realizan las siguientes copias de seguridad del registro de transacciones, se generan
copias de seguridad de instantáneas de los archivos del registro de transacciones, que también contienen instantáneas de todos los
archivos de la base de datos. Luego se pueden utilizar para realizar una restauración de base de datos o una restauración de registros
en un momento determinado. Este enfoque significa que no necesita copias de seguridad completas o diferenciales adicionales después
de la primera copia de seguridad completa inicial. Esto simplifica los comandos de restauración de copias de seguridad.
Configuración
Se necesitan los mismos componentes que para las funciones anteriores. La credencial de SQL
Server con el secreto relevante (basado en SAS) debe estar vigente antes de hacer esto. Para este
ejemplo, usaremos el mismo contenedor privado que en la sección anterior. Como puede ver en el
código de respaldo, el argumento clave esCON ARCHIVO_INSTANTÁNEA:
USAR maestro;
IR
ALTERAR BASE DE DATOS [IOT_DB] ESTABLECER RECUPERACIÓN COMPLETA;
124|Funciones híbridas: SQL Server y Microsoft Azure
IR
A URL = 'https://aksproddiag844.blob.core.windows.net/sqldatafiles/IOTDB_
FULL_SNAPSHOT.bak'
CON FILE_SNAPSHOT;
IR
La velocidad de restauración es rápida porque la secuencia de restauración es diferente a la de una configuración de copia de seguridad
de transmisión tradicional, donde necesitaría una cadena de copia de seguridad completa que incluya una copia de seguridad completa
(tal vez también una diferencial) junto con las copias de seguridad de registros relevantes. Con copias de seguridad de instantáneas de
archivos, mirarFigura 4.16donde ocurrió un problema en101.00 (cuadro rojo), solo necesitaríamos las dos últimas copias de seguridad de
registros (círculos rojos). Esto se debe a que también incluyen una instantánea de todos los archivos de datos (como se mencionó
Un requisito previo muy importante para esta técnica híbrida es la necesidad de una
conexión VPN de sitio a sitio, necesaria para conectar su red local a su infraestructura de
Azure.
Nota
Para obtener más detalles sobre la configuración, consulte la siguiente documentación:
https://docs. microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-site-to-site-
classicportal .
126|Funciones híbridas: SQL Server y Microsoft Azure
A través de SSMS, debe aprovechar el asistente Agregar réplica de Azure para guiarlo a través del proceso
en el que, en última instancia, extenderá el AG para incluir una réplica basada en Azure (una máquina
virtual).
Una vez que se haya creado el AG, deberá configurar un oyente interno. Este proceso consta de muchos
pasos, como la creación de un punto de conexión en cada máquina virtual de Azure que hospeda una
réplica y la creación de recursos de clúster de puntos de acceso de cliente.
Nota
Puede encontrar un conjunto completo de pautas y guiones en:https://docs.microsoft.com/
enus/azure/virtual-machines/windows/sqlclassic/virtual-machines-windows-classicps-sql-int-
listener#create-load-balanced-vm-endpoints-with-direct- retorno del servidor .
Una de las tecnologías de mayor éxito de Azure dentro del ecosistema de bases de datos es Azure SQL
Database. Una de las principales ventajas de esta tecnología es que elimina por completo la administración
física a la que probablemente esté acostumbrado con SQL Server local. Ya no necesitamos administrar el
hardware, el almacenamiento, las copias de seguridad, el sistema operativo y el software de la base de datos
en sí. Incluso tareas como las comprobaciones de coherencia (DBCC CHECKDB) son responsabilidad de
Microsoft. Esto lo libera para otras tareas importantes, como la optimización de consultas y las estrategias de
indexación, donde realmente puede concentrarse en hacer que su aplicación sea más rápida. El otro factor
clave que impulsa el cambio a Azure SQL Database es la infraestructura integrada, tolerante a fallas y de alta
disponibilidad que equivale a una garantía de SLA de tiempo de actividad del 99,99 %.
No debería sorprenderle saber que Microsoft tiene una estrategia que da prioridad a la nube.
Dado que Azure SQL Database comparte la misma base de código que SQL Server Database
Engine local, todas las características y capacidades más nuevas se lanzan primero en Azure.
Esto significa que usted, como cliente, se beneficiará al saber que su software de base de datos
siempre está parcheado y actualizado a la última versión disponible. Por lo tanto, muchos
clientes eligen esta tecnología como estándar empresarial. Al implementar la replicación
transaccional desde SQL Server local a Azure SQL Database, podrá migrar sus datos con un
tiempo de inactividad mínimo.
Nota
Esta sección ilustra la replicación transaccional unidireccional. Para la replicación
bidireccional, se requiere SQL Data Sync. Esto está fuera del alcance de este capítulo.
Replicación transaccional |127
Enfoque clásico
El método más común para migrar a Azure SQL Database es a través deAsistente de migración de datos
(herramienta DMA). Como se muestra en la figura 14.17, esto implica muchos pasos, desde una
evaluación real hasta cualquier cambio y corrección relevante, hasta la migración real de datos y el
esquema en sí:
La desventaja de esta técnica es que genera más tiempo de inactividad. Por lo tanto, si no puede permitirse
este tiempo de inactividad para la producción de bases de datos de misión crítica, entonces se debe considerar
seriamente la replicación de transacciones en Azure SQL Database.
Replicación transaccional
Una vez que haya completado la configuración y los cambios finales en los datos se hayan aplicado al
suscriptor (Azure SQL Database), todo lo que se necesita es la redirección de la configuración de la
aplicación desde su base de datos local a Azure. Tenga en cuenta que Azure SQL Database debe ser un
suscriptor push de un editor de SQL Server. No se admiten suscriptores de extracción.
128|Funciones híbridas: SQL Server y Microsoft Azure
También podría utilizar esta técnica para mover un subconjunto de tablas a Azure, que se convertiría en una
base de datos de informes. Una vez configurado, sus usuarios podrían utilizar herramientas como Servicios de
informes de SQL Server(SSRS) y Power BI para consultar los datos. Esta es una excelente técnica porque no
solo se dividen las cargas de trabajo OLTP y las cargas de trabajo basadas en lectura entre sí, sino que esta
base de datos de informes secundaria se beneficia de estar en Azure. Como tal, todas sus necesidades de alta
disponibilidad y recuperación ante desastres se satisfacen con un tiempo de actividad SLA del 99,99 %:
Requisitos previos
• Acceso a una base de datos Azure SQL (se permite cualquier región).
• Las tablas necesarias para la replicación deben tener una clave principal.
Configuración
6. Solo se admite la replicación transaccional, por lo que se seleccionó para esta demostración:
7. Agregue todas sus tablas o simplemente seleccione las tablas que necesita:
12. Para completar el proceso de publicación, deberá seleccionar el editor correcto. Para
este ejemplo, se llama al editor a la nube:
13. Se requiere la conexión con el suscriptor, este es Azure SQL Database. Nuevamente,
se deben utilizar cuentas dedicadas:
14. Una vez conectado, elija la base de datos correcta para convertirse en suscriptor:
Una vez completado, verá, a través del monitor de replicación, los objetos que se crean en
Azure con las transacciones relevantes que se envían y que contienen los datos:
17. Al conectarse a Azure SQL Database, verá que el esquema y los datos ahora
existen:
Si decide adoptar este enfoque para su estrategia de informes, entonces todo estará completo. Sin
embargo, como se mencionó anteriormente, si esto se hizo para migrar datos, una vez que vea que no
es necesario replicar más transacciones, todo lo que se requiere es un cambio en la configuración de la
aplicación para que apunte a esta nueva ubicación en la nube.
Las ubicaciones geográficas de su base de datos Azure SQL y de las instancias locales de SQL
Server dictan sus cifras de latencia. Para este ejemplo, mis datos, con sede en el Reino Unido, se
replican en Europa occidental con una latencia total de 6 segundos, lo cual es aceptable para mi
entorno de demostración:
Para aquellos nuevos en Linux, existe una historia rica y profunda de la plataforma, al igual que la hay para
Windows. En un momento, la mayoríaadministradores de bases de datos (administrador de bases de datos
s) evitó ejecutar bases de datos en Linux debido a la antigüedad delSistema operativo (SO ) en comparación
con distribuciones más maduras de Unix. Linux fue introducido recién en 1991 por Linux Torvalds, y participó
activamente en gran parte de su desarrollo después de intentos fallidos con otras distribuciones (incluidas
versiones de Unix de código abierto) comohurd .
Al igual que con otras distribuciones Unix de código abierto, el desarrollo de Linux se realiza en el ÑU o
Compilador Intel C. Linus esperaba limitar cualquier actividad comercial, pero al final, Linux se ha
convertido en la distribución de sistema operativo más utilizada en servidores empresariales. Existen
numerosas distribuciones de Linux, incluidasDebian ,ubuntu ,CentOS ,Sombrero rojo , y sombrero .
Microsoft anunció recientemente que ahora hay másmáquinas virtuales (VM) ejecutando Linux que
Windows en la nube de Azure.
144|Servidor SQL 2019 en Linux
Al reconocer el poder de este cambio, Microsoft ha adoptado el mismo sistema operativo empresarial
para su plataforma de base de datos empresarial. Esto se logró, sorprendentemente, con pocos cambios
en el código subyacente de SQL Server. Microsoft introdujo por primera vez el soporte de Linux con SQL
Server 2017 y continuó con el lanzamiento de SQL Server 2019 en 2019. Hay características nuevas e
increíbles que ofrecen virtualización de datos como PolyBase, lo que le permite consultar cualquier
fuente de datos, incluidos clústeres de Hadoop, NoSQL, Oracle y Teradata. El científico de datos, por
primera vez, tiene acceso a Machine Learning Services como parte de SQL Server 2019. El soporte de
Linux ha aumentado desde una simple instalación hasta configuraciones avanzadas, contenedores y
soporte avanzado de multidistribución y, Sea honesto, está leyendo este capítulo porque desea obtener
más información sobre lo que se ofrece para Linux con respecto a SQL Server 2019.
Con SQL Server 2019, se ofrece soporte para una lista de distribuciones de Linux sólidas y
conocidas:
Estas distribuciones son compatibles con los formatos de unidad XFS o EXT4 y se pueden usar
junto con Docker 1.8 en Windows, Mac o Linux con su plataforma favorita de contenedor
Linux.
Existe una amplia gama de distribuciones de Linux disponibles para su instalación y es posible que
tenga la tentación de ejecutar SQL Server 2019 en una distribución que no figura en la matriz de
certificación. Además de probar una instalación, es mejor evitar distribuciones de Linux no certificadas
para cualquier uso de producción de SQL Server 2019 en su entorno. La matriz de certificación no es
una declaración de la estabilidad de ninguna plataforma de distribución de Linux sobre otra, pero
puede garantizar que las enumeradas han sido probadas exhaustivamente por el equipo de SQL Server
para satisfacer las demandas de su entorno de base de datos empresarial.
¿Por qué mover bases de datos a SQL Server en Linux? |145
Muchas distribuciones de Linux descienden de una base de código común y utilizan instalaciones y
configuraciones similares. Comprender las similitudes de distribución es importante, y un ejemplo
de esto es la instalación de Linux Red Hat para SQL Server 2019. Se pueden usar pasos de
instalación de software de base de datos muy similares en CentOS o Fedora, pero esto no cambia
el hecho de que de los tres distribuciones enumeradas, Microsoft solo admite Linux Red Hat.
Esto da como resultado la necesidad de mejores prácticas para que se sienta cómodo con las
instalaciones de Linux compatibles y para crear políticas que requieran el uso de distribuciones
compatibles con SQL Server 2019 para garantizar que tenga soporte, junto con las actualizaciones
certificadas que se requieren para cualquier entorno de base de datos empresarial.
A medida que las prácticas de desarrollo ágiles y DevOps se conviertan en la norma, se espera que avancemos más
rápido y con menos entornos aislados. A medida que los equipos comienzan a formarse en múltiples áreas técnicas,
que a menudo incluyen partes interesadas del negocio, SQL Server 2019 también puede ampliarse para admitir
todas estas áreas.
Las habilidades necesarias para mantener un servidor Windows son muy diferentes a las necesarias para
soportar Linux. Aunque Linux es un "sabor" de distribución Unix, otras distribuciones directas de Unix,
como HP-UX y AIX, en su mayoría han sido abandonadas por una oferta unificada de Linux. Linux se ha
convertido en el sistema operativo preferido para esta revolución.
146|Servidor SQL 2019 en Linux
Las instalaciones de escritorio de Windows todavía dominan el mundo, pero los datos de las investigaciones han
demostrado que Linux es el sistema operativo para las empresas. TOP 500 (https://top500.org ) es un sitio web que
proporciona información estadística relacionada con empresas y supercomputadoras, incluidos proveedores de
computación, CPU y sistemas operativos. Los datos se basan en los 500 mejores de cualquier categoría y, como lo
demuestraFigura 5.1, solo las versiones de Linux se encuentran entre los 500 principales sistemas de uso general
utilizados para aplicaciones de alto nivel:
Figura 5.1: Linux gobierna el mundo de los servidores web empresariales. Fuente: https://top500.org
Armado con este tipo de información valiosa, es evidente por qué Microsoft
adoptó Linux y decidió hacerlo parte de la nube Azure.
Instalacion y configuracion
Existen diferentes utilidades de instalación según la distribución de Linux que elija. Los
procesos de instalación de SQL Server 2019 en las distintas distribuciones son muy
similares, sin importar en qué distribución esté trabajando:
2. Instale el paquete.
3. Configurar la instalación.
¿Por qué mover bases de datos a SQL Server en Linux? |147
Usando RedHat como ejemplo (los comandos pueden ser diferentes para otras distribuciones), el primer paso
es actualizar el repositorio con la instalación de SQL Server 2019, que actualmente se encuentra en versión
preliminar.
Para transferir la instalación de SQL Server 2019 desde dentro de un servidor Red Hat, ejecute el
siguiente comando:
Luego se le pedirá que confirme su acuerdo con los términos de la licencia y luego que
establezca la contraseña del administrador de SQL Server y luego la confirme. Si las entradas
no coinciden, se le dará otra oportunidad de ingresar la contraseña y la confirmación.
Una vez hecho esto, el script de configuración completará el proceso. Se creará un enlace
simbólico y los procesos de SQL Server se reiniciarán para finalizar la instalación.
Luego podremos verificar que el servicio se esté ejecutando. Como se trata de un proceso de Linux, hay dos
formas de hacerlo:
El resultado es el siguiente:
El control del sistema devolverá una validación del servicio (si se está ejecutando) e identificará
qué ID de proceso forman parte del servicio. Para SQL Server, hay dos que se bifurcan del
servicio, como se muestra en el ejemplo anterior como10172y10196.
También puede ver esta misma información utilizando el siguiente comando de la utilidad de proceso:
Como puede ver en el ejemplo, se muestran los mismos dos procesos (10172y10196),
junto con los ID del proceso principal (1,10172), la hora de inicio (21:20), y la ruta
ejecutable (/opt/mssql/bin/sqlservr).
El último paso es asegurarse de que los puertos necesarios para las conexiones remotas estén
abiertos. Si no se realiza este paso, las conexiones expirarán:
Una vez que haya instalado SQL Server, existen varias formas de interactuar con su instancia.
Es esencial tener acceso desde el host y para ello se requiere lautilidad sqlcmd. Para
instalarlo, primero debes agregarlo al repositorio (si aún no está disponible). Debe cambiar al
usuario root para actualizar los archivos del repositorio:
$ sudo su
Una vez que hayas cambiado, actualiza el repositorio con una nueva entrada:
Una vez que se complete la instalación, puede iniciar sesión en su nueva instancia de SQL Server usando
el siguiente comando e ingresando la contraseña cuando se le solicite:
Ahora que instaló SQL Server, configuró su instalación y tiene herramientas de línea de
comandos para interactuar con la instancia, es hora de obtener más información sobre cómo
interactuar con Linux.
Machine Learning es un servicio, pero se puede acceder a él desde SQL Server 2019 en una máquina
virtual Linux o en un host Linux local. Los científicos de datos pueden conectarse y crear nuevos
modelos de datos en Azure Notebooks o los conocidos Jupyter Notebooks, utilizando Python y/o R para
elegir canalizaciones o ejecutar canalizaciones para realizar aprendizaje automático.
• Ubuntu (apto)
• SUSE (zipper)
6. Reinicie todos los servicios y la base de datos para que los cambios de configuración entren en vigor.
administrador-clies necesario para configurar y administrar la web y los nodos informáticos que forman parte
de la puesta en funcionamiento de los servidores de aprendizaje automático. Esto incluye detener e iniciar
recursos de Linux que forman parte de la configuración del servidor de aprendizaje automático y ejecutar
diagnósticos cuando algo anda mal.
ElArizonaEl comando se utiliza para realizar los siguientes pasos para probar y configurar puntos finales:
inicio de sesión az
El siguiente paso es utilizar los comandos específicos de Machine Learning para configurar los servidores
que formarán parte del servicio de Machine Learning:
Una vez que haya ejecutado el comando para agregar todos y cada uno de los servidores a la configuración,
ejecute un diagnóstico para validar las adiciones:
administrador de az ml –ayuda
Luego, los datos se pueden almacenar dentro de SQL Server 2019 y los procedimientos almacenados
preempaquetados simplifican el aprendizaje automático y utilizan recursos de Azure Machine Learning para
distribuir la carga de trabajo.
152|Servidor SQL 2019 en Linux
Las predicciones sobre modelos continuos (también conocidos como modelos de regresión), pronósticos y
clasificaciones se pueden realizar utilizandoAutoMLTrain. Esto entrenará, validará, incluirá en listas blancas y
negras, junto con otros entrenamientos de modelado de datos de aprendizaje automático, y luego se
almacenará dentro de tablas de SQL Server. Luego, las métricas se devuelven cuandoAutoMLGetMetrics Se
ejecuta el procedimiento almacenado y se crean nuevas predicciones a partir de los valores entrenados
originalmente con elAutoMlPredictprocedimiento almacenado.
Esta es una actualización impresionante considerando que solo Python estaba disponible en SQL Server 2017
y necesitábamossp_execute_external_scriptpara ejecutar Python dentro de la base de datos.
Kubernetes
Microsoft, para adoptar aún más el paradigma de código abierto de contenedores, ha agregado capacidades
adicionales en SQL Server 2019 al ejecutar imágenes de Docker en implementaciones basadas en Kubernetes. Al
igual que con otras plataformas de orquestación de implementación, el objetivo principal de Kubernetes es
ejecutar cargas de trabajo orquestadas basadas en contenedores dentro de clústeres de múltiples nodos. Para
el administrador de bases de datos de SQL Server, Kubernetes se utiliza a menudo con el objetivo dealta
disponibilidad (HA) , oescalabilidad . SQL Server 2019 puede aprovechar en gran medida esta orquestación,
permitiendo tiempos de recuperación más rápidos debido a la interrupción del servicio e implementaciones de
orquestación de conmutación por error dentro de múltiples pods entre clústeres, lo que también puede
aumentar las oportunidades de escalabilidad.1
Una vaina, como se demuestra enFigura 5.5, puede contener uno o varios contenedores. Uno de los
beneficios de los pods es que tienen todos los beneficios asociados con la contenedorización, incluida la
portabilidad y la utilización de recursos altamente optimizada. Junto con los pods y contenedores, existen
controladores de implementación que ejecutan
Para que los contenedores de SQL Server 2019 se ejecuten correctamente dentro de Kubernetes, se debe configurar la
persistencia del estado. Se basa en recursos de almacenamiento (es decir, volúmenes) a los que pueden acceder los nodos del
clúster subyacentes.
Figura 5.6: Diagrama de clúster de Kubernetes de alta disponibilidad con SQL Server 2019 y almacenamiento persistente
Los volúmenes genéricos suelen servir como almacenes persistentes para cargas de trabajo en contenedores. También
pueden servir como discos locales conectados directamente a nodos de clúster individuales o como almacenamiento
compartido montado en varios nodos si es necesario para configuraciones específicas.
En caso de falla de un SQL Server 2019 implementado en un clúster de Kubernetes, se puede lograr una
recuperación más rápida debido a la agrupación gracias a la configuración de almacenamiento y
agrupación.
Para el monitoreo, las herramientas estándar de Kubernetes son la mejor opción y los contenedores de
SQL Server están disponibles para monitorear desde herramientas estándar de administración y
monitoreo de bases de datos. Con mayores opciones de recuperación, flexibilidad y escalabilidad,
Kubernetes es una opción atractiva para SQL Server 2019 con Linux.
154|Servidor SQL 2019 en Linux
Verifique los contenedores Docker existentes que están disponibles actualmente y su estado:
$ ventana acoplable ps -a
Cada contenedor debe tener un nombre único. Asegúrese de utilizar valores adecuados para el
contraseña, puerto(s) y nombre del contenedor antes de ejecutar el siguiente comando:
- e "MSSQL_SA_PASSWORD=<contraseña>"
- p <puerto:puerto>
-d mcr.microsoft.com/mssql/server:2019-CTP3.2 ubuntu
Vea una lista de sus contenedores y verifique que el contenedor no solo se haya creado, sino que se
esté ejecutando:
$ ventana acoplable ps -a
Docker debería iniciar sesión en el contenedor y debería aparecer el símbolo del sistema. Ahora
está interactuando con Linux y no con el símbolo del sistema de su estación de trabajo. Aunque
estos pasos no son muy diferentes a otros comandos de Docker, es importante saber lo fácil
que es crear una imagen de Docker con Linux y SQL Server. Si ya tiene una imagen de Linux
Docker, las instrucciones para instalar SQL Server se pueden realizar con cambios menores para
agregarle SQL Server, luego se puede crear una imagen para ahorrar tiempo y administración
en el futuro.
Agregar Kubernetes a esta combinación la lleva aún más lejos al permitir que los pods se creen a partir de
contenedores Docker que forman parte de un grupo: contenedores de aplicaciones, bases de datos y web que
pertenecen todos como parte de una implementación, otorgando al DBA la capacidad de trabajar con el resto
del sistema de TI para servir mejor al negocio. Al hacer todo esto en Linux, el DBA de SQL Server puede ser más
colaborativo, menos aislado y puede hacerlo todo más rápido.
Cambiar captura de datos |155
Elcambiar la captura de datos (CDC) La característica de SQL Server es una forma valiosa de ingerir datos de
una fuente, transformarlos y luego publicarlos en nuevas tablas o en una base de datos secundaria. Esta
característica ahora está disponible en SQL Server 2019 para Linux.
Como la base del código es la misma en SQL Server para Linux que para Windows, se requiere el
mismo proceso para habilitar la característica:
EXEC sys.sp_cdc_enable_db
Esto creará los objetos del sistema, el usuario de CDC, los metadatos y el esquema de CDC como parte del
procedimiento para configurar CDC.
PMEM significa memoria persistente y es un área de almacenamiento no volátil que funciona de manera
similar a la memoria. Como el término también se puede utilizar para describir hardware, puede haber
cierta confusión en cuanto a cómo se llama; lo siguiente debería aclarar esto:
• PMEM o PM (Memoria persistente ) - Este es el término correcto para SQL Server 2019
Para SQL Server 2019, PMEM es parte del bus de memoria y elimina la latencia de E/S. Lo hace eliminando la
necesidad adicional de copiar páginas aDRACMA o la penalización de E/S por ir al disco. Se obtiene una
ganancia de rendimiento al acceder al almacenamiento persistente diseñado específicamente para este
propósito. Para mejorar esta característica, Microsoft ha agregado la capacidad de que Hybrid Buffer Pool se
ejecute en modo iluminado, permitiéndole usarmemcpyoperaciones para acceder al almacenamiento
persistente directamente.
156|Servidor SQL 2019 en Linux
• Registros de transacciones
Para utilizar PMEM, debe habilitar la iluminación de los archivos con los que desea que SQL Server
aproveche PMEM. Esto requerirá una utilidad de Linux utilizada para administrar la memoria no
volátil, llamadandctl. Si aún no está en el host Linux en el que instaló SQL Server 2019, deberá
instalarlo, probablemente usandommmoapto-obtener. Dependiendo de la distribución de Linux,
es posible que sea necesario realizar los siguientes pasos para configurarNDCTL después de la
instalación:
$ sudo install ndctl
Instalado:
Ndctl.x86_64 0:62-1.el7
$cual ndctl
/usr/bin/ndctl
Una vez configurado, para habilitar PMEM en un archivo, debe crear un espacio de nombres, una ubicación de
almacenamiento aislado que se utilizará para PMEM:
En el ejemplo, creé un espacio de nombres PMEM usando el almacenamiento en la nube que creé
específicamente para el grupo de búfer híbrido. Puede ver qué espacios de nombres se han
creado utilizando el siguiente comando:
$ lista ndctl
El siguiente paso es montar el espacio de nombres y establecer el tamaño de la extensión. Para nuestro ejemplo,
nombraremos la monturapmem1y hacer el tamaño de la extensión2m:
Ahora que ha verificado que se completó el reinicio, puede crear una nueva base de datos para
aprovechar PMEM o elegir mover archivos desde un SQL Server existente a la ubicación de
PMEM. Mover archivos de datos a esta nueva ubicación no es diferente a mover archivos a otra
unidad existente.
ALTERAR BASE DE DATOS nombre_base de datos MODIFICAR ARCHIVO ( NOMBRE = nombre_lógico, NOMBRE DE
ARCHIVO = '/dv1/pmem1/<dbname>/data' );
IR
Una vez que esto esté completo, ponga la base de datos en línea y disponible:
IR
Para los archivos de datos que se movieron a la nueva ubicación de PMEM, puede habilitar el grupo de búfer híbrido
usando:
O:
ALTERAR BASE DE DATOS <nombre de la base de datos> ESTABLECER MEMORIA_OPTIMIZADA = ACTIVADO;
Es importante recordar que solo se hace referencia directa a páginas limpias en un dispositivo PMEM. Las
páginas sucias se mantendrán en la DRAM y eventualmente se volverán a escribir en el dispositivo PMEM
una vez que estén limpias.
Para configurar estáticamente el puerto para que escuche MSDTC, use el siguiente comando:
Se debe reiniciar SQL Server para que este cambio surta efecto:
$ sudo systemctl reiniciar el servidor mssql
Después de este cambio de configuración, será necesario actualizar las reglas del firewall en el host
Linux. Dependiendo de la distribución de Linux, el comando puede diferir, pero para Red Hat es el
siguiente:
Haga esto para cada puerto que deba estar abierto para MSDTC, luego vuelva a cargar para que los cambios entren en
vigor:
Para completar el proceso, debe instalar los procedimientos almacenados para MSDTC en la
base de datos que aprovechará la configuración del host. Inicie sesión en la base de datos con
sqlcmde ingrese los siguientes comandos:
$ sqlcmd -U <iniciar sesión> -S "<dbserver>.database.windows.net" -d <nombre de la base de datos>
ejecutivo sp_sqljdbc_xa_install
Replicación
La capacidad de un DBA para proporcionar acceso a los datos de la empresa es una parte esencial de su
función. La replicación de datos en bases de datos secundarias, ya sea para informes, protección de
datos o transformación, es una característica importante. SQL Server 2019 en Linux ahora incluye
compatibilidad con la replicación fuera de la replicación de VM con Site Recovery. El soporte de
arquitectura incluye SQL Server 2019 en Linux en un contenedor con el Agente SQL.
• Editor
• Suscriptor
• Distribuidor
Herramientas de SQL Server |159
Debido a que el objetivo de la replicación es la conmutación por error si se produce una falla, una instancia de SQL
Server que sea parte de un escenario de replicación puede ser cualquiera de las tres opciones. La configuración de
la replicación se puede realizar desde la línea de comando con procedimientos almacenados o desde SSMS. Los
tipos de publicación se deciden según las necesidades del suscriptor:
• Unir: Los cambios se fusionan del entorno del editor al del suscriptor.
Las herramientas que utiliza para interactuar con la base de datos son increíblemente importantes para su
forma de trabajar todos los días. Con la introducción de Linux, el cambio en la forma de administrar la base
de datos no tiene por qué cambiar tanto como cabría esperar.
Azure Data Studio es la herramienta multiplataforma más nueva disponible de Microsoft. Si bien muchos
profesionales de bases de datos todavía usan SSMS, esto requería una máquina virtual Windows o Windows
para ejecutar el producto. Azure Data Studio brinda soporte no solo para Windows, sino también para macOS
y Linux.
Hay lanzamientos mensuales del producto y estas actualizaciones significan nuevas funciones y
mejoras constantes. Azure Data Studio está disponible para las distribuciones de Linux más
comunes:
•Ubuntu 16.04
160|Servidor SQL 2019 en Linux
Hay tres métodos de instalación diferentes para admitir las distintas distribuciones de Linux en
forma de un archivo Debian, un archivo RPM y un archivo TAR comprimido con gzip.
discos compactos ~
Para la instalación del archivo TAR, nuevamente, inicie sesión en el host o VM y luego debe descomprimir
(extraer) el archivo y agregar la ruta del entorno a la ruta principal para poder ejecutar el archivo de
comando (.bashrc):
discos compactos ~
Una vez que haya instalado Azure Data Studio, puede iniciarlo escribiendo lo siguiente en la
terminal:
azuredatastudio
Una vez iniciado, haga clic enNueva conexión. Se requieren los siguientes valores para
conectarse correctamente:
• Tipo de conección: Microsoft SQL Server, (Azure SQL, Azure Data Warehouse),
Microsoft BDC
Herramientas de SQL Server |161
• Servidor: Para Azure, esta información se muestra en la descripción general de recursos del servidor:
• Nombre: Opcional
Hay numerosos métodos abreviados de teclado preconfigurados en Azure Data Studio y puede
personalizar y agregar los suyos propios. Haga clic enArchivo|Preferencias|Atajos de teclado.
Aparecerá la siguiente ventana:
Figura 5.9: Configuraciones de métodos abreviados de teclado para Azure Data Studio
El beneficio de Azure Data Studio es la capacidad de desarrollar lo que se necesita para aumentar su
productividad. Hay visualizaciones extensas para monitorear el rendimiento y el uso de la base de datos,
lo cual es un beneficio para quienes son nuevos en la administración de bases de datos en hosts Linux.
Herramientas de consulta de línea de comandos para SQL en Linux |163
• sqlcmd
• mssql-cli
SQLCMD
Para SQL DBA, SQLCMD es una herramienta de línea de comandos familiar que también está disponible en Linux.
Esto es parte de la instalación de mssql-tools que estará disponible para la mayoría, si no para todos, los servidores
SQL en Linux, y puede usarse para ejecutar scripts, consultar bases de datos y procedimientos del sistema.
La instalación difiere dependiendo de la distribución de Linux, pero para nuestro ejemplo, la instalación de
Ubuntu se usará para mostrar cómo se realizaría una instalación para actualizar el paquete a su
actualización de Ubuntu para obtener el último paquete mssql-tools y luego la instalación:
•Ubuntu
• Ventana acoplable
• Mac OS
El siguiente es un ejemplo del usosqlcmdpara iniciar sesión en una base de datos de SQL Server en Linux y ejecutar
una consulta:
Una de las mayores incorporaciones a sqlcmd es una característica más antigua que se ha redescubierto y que resulta
beneficiosa para las migraciones de tablas grandes en la nube:Protocolo de copia masiva (BCP ). Muchas bases de
datos tienen solo unas pocas tablas muy grandes como parte de una migración que no se realizan mediante los
medios de migración tradicionales. Una de las formas de lograr una migración de datos exitosa es utilizar una utilidad
de migración simple que elimine todas las interfaces de usuario complejas y funciones adicionales, como BCP.
MSSQL-CLI
La nueva herramienta de línea de comandos centrada en el servidor Linux, MSSQL-CLI, se agregó en
SQL Server 2017 como una herramienta pensando en el futuro. La instalación se mantiene a través de
GitHub y actualmente se admite un gran conjunto de distribuciones de Linux:
• Debian 8 y 9
•Ubuntu
• CentOS 7
• OpenSUSE 42.2
• Fedora 25 y 26
Una vez instalado, tendrá acceso a otra herramienta de consulta para usar en interacción con bases de
datos de SQL Server en Linux, macOS y Windows. A diferencia de sqlcmd, MSSQL-CLI incluye T-SQL
IntelliSense, por lo que a medida que escribe su consulta, se proporcionarán opciones potenciales para
columnas, tablas y procedimientos para aliviar las demandas del usuario, disminuir la cantidad de entrada
manual y disminuir el potencial. para errores:
El modo de edición de varias líneas y el resaltado de sintaxis brindan la capacidad de formatear declaraciones para
facilitar la lectura y la administración. Un archivo de configuración también puede personalizar la configuración para
crear una mejor experiencia para el usuario final.
Con el lanzamiento de SQL Server 2019, una cantidad significativa de mejoras y lanzamientos de funciones para
la versión de Linux brindan una experiencia más sólida. Al reconocer que la industria de la tecnología ha
adoptado Linux como la plataforma de sistema operativo empresarial preferida, Microsoft ha invertido mucho
para facilitar que el administrador de bases de datos de SQL traslade las cargas de trabajo de bases de datos
actuales a Linux, con el menor impacto posible en el negocio.
Uno de los mayores avances desde el punto de vista de los administradores de bases de datos fue la
incorporación de PowerShell en Linux. A menudo se considera que un DBA es tan bueno como el conjunto
de scripts que utiliza para facilitar la administración, el mantenimiento y el monitoreo del entorno de la
base de datos. Tener la capacidad de levantar y cambiar estos scripts y su carga de trabajo reduce la
demanda del DBA de recrear algo en lo que ya han invertido un tiempo considerable.
Queda un hecho importante. No importa cuán esencial sea PowerShell para SQL DBA, todavía no está en un
punto en el que pueda competir con la historia y madurez de Bash. En todas las áreas de las herramientas de
SQL Server 2019, habrá una opción para exportar plantillas en múltiples formatos de script. El que figura
como elinterfaz de línea de comandos (CLI) realmente es Intento secuencias de comandos.
Puede ser un poco intimidante para cualquiera que se identifique fuertemente con PowerShell que otro
lenguaje de scripting de shell tenga actualmente la ventaja, pero a medida que PowerShell se desarrolla desde
su infancia en Linux, se enfrenta a una lucha cuesta arriba con Bash. Como alguien que fue entrenado en el
caparazón Korn, la situación me resuena. Aunque mi lenguaje de secuencias de comandos preferido es Korn,
reconozco que Bash es el lenguaje de secuencias de comandos de shell con mayor antigüedad y es importante
comprender que conocer más de un lenguaje de secuencias de comandos lo convierte en una ventaja adicional
en su carrera técnica.
A pesar de toda esta identificación, muy poco tiene significado para el kernel de Linux. Como
identifica todo como un archivo, no requiere comprensión de jerarquía y está programado para
identificar todo en una estructura horizontal. El kernel se refiere a todo a través de nodos. Los
identificadores únicos que representan cada archivo, directorio y permiso entre los nodos
permiten al kernel buscar, localizar e identificar todo el procesamiento a velocidades inmensas.
Usuarios y grupos
Junto con root, hay usuarios que se crean para crear inicios de sesión y accesos claros y definidos. Estos son los
inicios de sesión y los propietarios de los archivos en el sistema operativo, y cada uno de estos usuarios está
asignado a uno o más grupos que les permiten un conjunto de permisos para diferentes estructuras de
archivos. Para el DBA de Oracle, es común iniciar sesión como su nombre de usuario (por ejemplo, herrero) y
luego cambiar de usuario (con elsucomando) aOráculo(la base de datos y el propietario de la instalación de
Oracle) para realizar tareas críticas.
Pertenecer a un grupo le permite realizar las mismas tareas y tener acceso a archivos en directorios.
Cada usuario en un entorno de servidor Linux empresarial tiene un directorio de inicio que contiene
archivos de configuración y alias para el usuario. Los nombres de estos archivos a menudo van
precedidos de un punto, y esto es para garantizar que no se muestren en una lista simple (es) comando
a menos que se solicite específicamente.
Si está trabajando en una máquina virtual con SQL 2019, tiene la opción de interactuar con el host a través
de la línea de comandos en Azure Cloud Shell. Esta interfaz web ofrece acceso simplificado a todos los
recursos de la nube dentro de su entorno de Azure y, con la adición de almacenamiento en la nube de
Azure, un recurso de almacenamiento estático para almacenar archivos y scripts. Azure Cloud Shell ofrece
la opción de configurar la sesión en Bash o PowerShell, pero ambos tipos de scripts se pueden ejecutar
desde cualquier perfil de Shell.
Root, el superusuario
Root tiene poder sobre todo lo que hay dentro del sistema operativo Linux. Un DBA debe recordar esto al
otorgar acceso raíz a un host Linux. Las mejores prácticas dicen que nadie debe iniciar sesión como root a
menos que exista un requisito específico y, en ese caso, debe hacerse con extrema precaución.
Cambiar propietario del dominio de usuario (SUDO ) se otorgan privilegios a un usuario con el conocimiento
para realizar acciones de nivel profundo, pero todas las acciones SUDO se registran y se auditan fácilmente en
los registros del servidor si no se realizó ningún cambio desde su inicio de sesión original. SUDO también debe
usarse con precaución y solo cuando sea necesario debido a la gran capacidad del usuario root. El inicio de
sesión en el cuadro de Linux debe ser propiedad de un usuario único y luego el usuario debe cambiar de
usuario (su - <superusuario>) para realizar la tarea que requiere privilegios escalados.
168|Servidor SQL 2019 en Linux
Un aumento de las violaciones de seguridad en todo el mundo, junto con la incorporación de la nube, ha
enfatizado la importancia del diseño del servidor, incluidos los usuarios que tienen acceso a privilegios de
superusuario y otros privilegios. Los inicios de sesión de los usuarios de la aplicación solo deben usar SUDO, stick
bit, iptables,SUIDO ,SGID y otra creación/asignación adecuada de grupos cuando sea necesario.
La mayoría de las instalaciones actuales de SQL Server en un host Linux que he encontrado se instalan
como root, también conocido como propietario del dominio. Esta no es una instalación viable y la
vulnerabilidad se puede entender si usamos un ejemplo de un host Linux con SQL Server que utiliza un
proceso de carga de datos tradicional de Excel.
Si se carga una hoja de cálculo de Excel con malware no detectado en el host Linux, será
propiedad del root, lo que ofrecerá al hacker acceso completo y privilegios como root. Si se
hubiera elegido una configuración adecuada, con la instalación de SQL Server y las carpetas
propiedad de un usuario de la aplicación con privilegios limitados, este tipo de ataques estarían
aislados y por tanto tendrían un impacto menor.
Los DBA siguen pautas estrictas con respecto a la concesión de privilegios de bases de datos, y los
administradores de Linux solicitarán constantemente que un DBA o desarrollador de aplicaciones justifique
mayores permisos para cualquier directorio o archivo protegido en el host de Linux.
Mediante el usosuysudoprivilegios, el sistema operativo Linux puede auditar quién realiza tareas que requieren
sus privilegios e identificar claramente al usuario original. La necesidad de cambiar a un usuario con más
privilegios puede ayudar a evitar errores humanos.suysudotienen menos acceso a los datos que el propietario
de los archivos, lo que proporciona seguridad a los datos.
El objetivo de este capítulo fue presentarle las impresionantes características nuevas de SQL
Server 2019 en Linux y las grandes mejoras desde el lanzamiento de SQL Server 2017, que
incluyen:
Esta información debería brindarle una base sólida para las características y los cambios necesarios para
administrar SQL Server 2019 en Linux para ayudarlo a comprender por qué tantas personas han incorporado
esta plataforma de sistema operativo a su propia organización. Considere también dedicar tiempo a
profundizar en los capítulos dedicados a funciones como AG, contenedores y herramientas SQL para
aprovechar al máximo este libro.
Servidor SQL 2019
6
en contenedores y
Kubernetes
La mayoría de las implementaciones de SQL Server se logran mediante métodos tradicionales: en
servidores físicos o máquinas virtuales (locales o en la nube). Se consideran ofertas basadas en la nube,
como Azure SQL Database o Azure SQL Database Managed Instance.Plataforma como servicio (PaaS )
ofertas y ofrecen la capacidad de implementar bases de datos e instancias respectivamente sin necesidad
de preocuparse por administrar el subyacenteSistema operativo (SO ). Ahora hay una opción más nueva
a considerar para implementar SQL Server: los contenedores.
SQL Server 2017 fue la primera versión de SQL Server que admitió contenedores. Si bien los
contenedores son parte de los clústeres de Big Data de SQL Server (consulteCapítulo 9,Clústeres de
big data de SQL Server 2019), hay más en ellos que simplemente ser un componente de esa
historia. Este capítulo cubrirá qué son los contenedores, por qué son importantes y cómo se han
mejorado en SQL Server 2019.
Traducido del inglés al español - www.onlinedoctranslator.com
La virtualización revolucionó las implementaciones de servidores. En lugar de comprar e instalar un servidor físico
para cada instancia de SQL Server, un servidor, conocido como hipervisor, podría ejecutar múltiplesmaquinas
virtuales (máquinas virtuales ) que virtualizaba el hardware y podía tener un sistema operativo instalado en su
interior. Una máquina virtual es una representación definida por software de un servidor físico que proporciona
agilidad a la TI de una manera que el hardware tradicional no puede.
Si bien todavía se requiere un sistema operativo para un contenedor de SQL Server, la principal diferencia es que el
sistema operativo (específicamente su kernel) se comparte o virtualiza en todos los contenedores que se ejecutan en
el host que ejecuta la misma imagen de contenedor. Al igual que la virtualización tradicional, un host puede ejecutar
uno o varios contenedores, cada uno de los cuales tiene su propio procesador y recursos de memoria, junto con ID de
proceso independientes. Un contenedor es más pequeño y, por tanto, más portátil que una máquina virtual.
Las máquinas virtuales proporcionan un límite de seguridad natural porque el sistema operativo y lo que se ejecuta
dentro del huésped están aislados. Las máquinas virtuales no ofrecen aislamiento para las aplicaciones, ya que un
cambio en una puede afectar a la otra porque se ejecutan en el contexto de la misma instalación del sistema operativo.
Los contenedores brindan aislamiento para las aplicaciones y todas las dependencias están dentro de la imagen del
contenedor para que puedan actualizarse de forma independiente. Sin embargo, comprenda que varios contenedores
podrían verse afectados si algo le sucede al núcleo compartido subyacente, por lo que es importante prestar atención a
las actualizaciones de seguridad.
Debido a que un contenedor no tiene una instalación completa del sistema operativo, proporciona
abstracción para las aplicaciones. Puede agrupar código y dependencias, como scripts y ejecutables,
dentro de un contenedor de una manera que resulta difícil de hacer con una máquina virtual. ¿Necesita
implementar fácilmente una o cien aplicaciones iguales en todo el mundo? Utilice un recipiente. Tiene la
capacidad de entregar nuevas versiones de software (SQL Server, una aplicación, lo que tenga)
rápidamente y poder revertirlas (o adelantarlas con una actualización) fácilmente. Básicamente es tan
sencillo como cambiar el contenedor; no ejecuta instaladores individuales. Sin tener que parchear un
sistema operativo y SQL Server de forma tradicional, las cosas se ponen más interesantes.
Fundamentos técnicos de contenedores |173
Piense en un sistema operativo en dos partes: la funcionalidad principal y las API, y la capa de presentación. Una
interfaz de línea de comandos ointerfaz gráfica del usuario (GUI ) es solo una capa de aplicación/presentación que
interactúa con el sistema operativo principal. Es el sistema operativo central el que se virtualiza en diferentes
contenedores.
1. AsegurarHiper-Vestá habilitado.
2. Instale Docker.
3. Configure Docker para que los contenedores implementados puedan usar al menos2GB de memoria. Un
ejemplo se muestra enFigura 6.2:
sqlservr: Este programa requiere una máquina con al menos 2000 megabytes de
memoria.
/opt/mssql/bin/sqlservr: este programa requiere una máquina con al menos 2000
megabytes de memoria.
4. Extraiga la imagen de SQL Server del repositorio. Este ejemplo es para SQL Server 2019
CTP 3.0. Podrías tener más de una imagen descargada. Un ejemplo de extracción se
puede ver enFigura 9.3:
Nota
En Docker para Windows, no coloque nada después del-mientre comillas simples. El
contenedor no arranca. Otras plataformas pueden requerirlos.
Los ejemplos anteriores crean contenedores con almacenamiento efímero. Eso significa que cada vez
que se inicia el contenedor, todo se restablecerá. Para crear un contenedor con almacenamiento
permanente de base de datos, primero asegúrese de que la unidad que contiene la carpeta esté
compartida, como se muestra enFigura 6.6:
6. Compruebe que el contenedor de SQL Server que acaba de crear se esté ejecutando utilizando elventana acoplable ps
- adominio. Un ejemplo se muestra enFigura 6.8:
7. En este punto, puede probar la conectividad con el contenedor que ejecuta SQL Server. Hay dos
formas de abordar esto: conectarse directamente mediante Docker y Bash, o mediante las
utilidades locales de SQL Server en su estación de trabajo.
Implementar un contenedor de SQL Server usando Docker |179
Puedes usarsqlcmd,bcp,Estudio de administración de SQL Server (SSMS ), Azure Data Studio o cualquier
otra herramienta compatible para conectarse al contenedor Docker local. Debe especificar la dirección IP
de la máquina local con el puerto local que especificó cuando se creó el contenedor con elsacuenta y
contraseña. Un ejemplo de dirección IP con el puerto es192.168.1.104,1403.Figura 6.10muestra SSMS en
una estación de trabajo con esa dirección IP conectada a un contenedor Docker que se ejecuta en ella.
Tenga en cuenta que el valor de@@NOMBRE DEL SERVIDORes lo mismo que elidentificación del
contenedor, no el nombre descriptivo:
Una imagen de contenedor de SQL Server base tiene el motor de base de datos, el agente SQL Server y
Programa de mejora de la experiencia del cliente (CEIP ). Eso significa que el Agente y el CEIP se pueden
habilitar o deshabilitar. De forma predeterminada, el Agente SQL Server está deshabilitado y CEIP está
habilitado. La forma más sencilla de personalizar el contenedor es cuando se crea conejecución de la
ventana acoplable(o en elYAMLscripts para Kubernetes). El-miLa opción especifica los parámetros de tiempo
de ejecución al crear el contenedor. Las opciones siguen lo que se enumera en la sección "Configure los
ajustes de SQL Server con variables de entorno en Linux" tema enhttps://docs.microsoft. com/en-us/sql/linux/
sql-server-linux-configure-environment-variables?view=sqlserver-2019 . Por ejemplo, para habilitar el Agente
SQL Server, agregue-y MSSQL_AGENT_ENABLED=verdadero.
A diferencia de SQL Server en Linux implementado en un servidor físico o virtual, no haymssqlconfutilidad para
configurar SQL Server usando Bash, por lo que cualquier configuración de elementos importantes como el Agente
SQL Server debe realizarse en el momento de la creación.
Además de habilitar o deshabilitar esos dos componentes, las opciones para personalizar una
imagen de contenedor publicada por Microsoft para SQL Server son algo limitadas. Por ejemplo,
puede cambiar la intercalación y el idioma.
Si desea una imagen de contenedor totalmente personalizada, deberá comenzar con una imagen base
(Ubuntu o Red Hat), instalar SQL Server y agregar todos los componentes compatibles para la
personalización que necesite. Esto se puede hacer a través del archivo Docker o (https://docs.
docker.com/engine/reference/builder/#usage ) tomando la imagen y modificándola, por ejemplo,
creando una base de datos que será utilizada por todas las implementaciones. Luego puede crear la
nueva imagen confirmando los cambios que la dejarán lista para su implementación y, en algunos casos,
compilando la imagen.
Si bien Microsoft puede brindar más flexibilidad o más opciones en el futuro para personalizar las imágenes de
contenedor de SQL Server proporcionadas, como se señaló anteriormente, hoy solo obtiene la funcionalidad
principal de SQL Server en las imágenes de contenedor proporcionadas. Algunas de las funciones, como Always
OnGrupos de disponibilidad (AG ), no se puede agregar personalizando la imagen.
Los clústeres de Kubernetes tienen nodos, que son los servidores en los que se ejecutarán los
contenedores. Estos nodos pueden ser servidores físicos o máquinas virtuales que se ejecutan localmente
o en la nube pública. Un contenedor se implementa en un clúster K8 en un pod, que es un contenedor que
permite implementarlos en un nodo. Un pod puede representar uno o más contenedores en un grupo
lógico. El almacenamiento se presenta utilizando volúmenes persistentes (https://kubernetes.io/docs/
concepts/storage/persistent-volumes/ ), que son ligeramente diferentes a los volúmenes de Docker. Hay
dos conceptos: el disco, o volumen persistente, y una reclamación, que es la solicitud real de E/S del disco.
A partir de Kubernetes 1.14, junto con Windows Server 2019, los servidores Windows Server y Linux
pueden participar en el mismo clúster de Kubernetes. Windows Server 2019 permite que se ejecute
un contenedor basado en Linux. Kubernetes 1.9 introdujo soporte beta para contenedores de
Windows Server, lo que abre la puerta a la ejecución de aplicaciones .NET basadas en Windows y, en
el futuro, posiblemente SQL Server en contenedores basados en Windows Server 2019. Había
contenedores basados en Windows de Microsoft para SQL Server 2017, pero solo se admitía SQL
Server Express.
Con Windows Server 2019, un clúster de Kubernetes puede abarcar nodos de Windows Server y Linux. Un
nodo de Windows Server puede ejecutar un contenedor de Linux y un nodo de Linux puede ejecutar un
contenedor de Windows Server si está en la versión 1.14. Un ejemplo de cómo podría verse esto se muestra
enFigura 6.11:
Cuando se introdujeron por primera vez en SQL Server 2017, los contenedores se podían implementar de forma
similar a la de un Always On.Instancia de clúster de conmutación por error (FCI ). En una FCI tradicional, la
instancia de SQL Server puede alojarse en los nodos configurados correctamente de un clúster WSFC o
Pacemaker.
182|SQL Server 2019 en Contenedores y Kubernetes
Figura 6.12: Alta disponibilidad para una única implementación con Kubernetes
Nota
Para obtener más información e instrucciones sobre cómo configurar la disponibilidad
usando este método, consultehttps://docs.microsoft.com/en-us/sql/linux/tutorial-sql-
servercontainers-kubernetes?view=sql-server-2019 .
Virtualización de datos
7
Los sistemas analíticos tradicionales brindan inteligencia y conocimiento a las organizaciones al
integrar fuentes dispares en un solo sistema, moviendo y aislando la carga de trabajo analítica de la
carga de trabajo operativa. En este capítulo, aprenderá sobre un enfoque diferente para la
integración de datos: la virtualización de datos. Comenzará sumergiéndose en los desafíos que
enfrenta al realizar proyectos de integración de datos para que pueda diferenciar los casos de uso
de virtualización de datos de los patrones de movimiento de datos más establecidos. Una vez que
haya comprendido los tipos de problemas que puede resolver con este enfoque, explorará la
tecnología subyacente en SQL Server 2019 antes de explorar una solución concreta de un extremo a
otro en Azure.
186|Virtualización de datos
Este enfoque de integración de datos, también conocido como "esquema en escritura", puede llevar a largos
plazos de desarrollo, ya que el modelo de datos objetivo debe definirse antes de que se pueda completar el
proceso de movimiento de datos. Mientras tanto, el acto físico de copiar datos multiplica los costos de
almacenamiento, cortesía de la duplicación de datos, e introduce el desafío de la latencia de los datos en el
proceso de movimiento de datos. Además, el movimiento y la duplicación de datos aumentan la carga de
gestión de datos cuando se cumplen los requisitos de seguridad y cumplimiento, ya que ahora existen
múltiples versiones de los mismos datos.
Este "movimiento de datos" El patrón también es intrínseco a las arquitecturas modernas de big data. Si bien
algunos desafíos de velocidad de integración de datos se han abordado mediante métodos de "esquema en
lectura" enfoques, persisten los desafíos de la gestión de datos. Los datos aún terminan duplicándose desde los
sistemas operativos y pueden requerir más copias a medida que los datos se consolidan, transponen y
reformatean en formatos de archivos analíticos como Parquet. Los problemas de calidad de los datos tampoco
se resuelven mágicamente con los lagos de datos. Si los datos de origen son deficientes o están incompletos,
aún será necesario abordar este problema. Además, con la llegada del autoservicio de disputa de datos, es fácil
terminar con múltiples versiones de los mismos datos, y todas ellas aplican medidas de calidad de datos
ligeramente diferentes. Si no se controla, el empoderamiento del autoservicio puede generar un desperdicio
significativo de recursos, reduciendo rápidamente el lago de datos (algo bueno) a un pantano de datos (algo
malo).
Las arquitecturas de lagos de datos también presentan nuevos desafíos para las organizaciones. Puede resultar difícil
para los analistas consultar fácilmente datos basados en archivos utilizando las herramientas y la tecnología
existentes. Se pueden utilizar herramientas de big data, como Apache Spark, para emitir consultas SQL, pero estos
motores informáticos carecen de la capacidad de procesar de manera eficiente consultas complejas basadas en
conjuntos que presentan muchas uniones, por ejemplo. Esto se agrava cuando agregamos requisitos de auditoría y
control de seguridad granular, o escalamos el sistema para abordar las necesidades de simultaneidad de una
organización. En estos escenarios, la tecnología de bases de datos relacionales aún eclipsa a sus contrapartes de big
data.
Descubra cómo la virtualización de datos le ayuda a afrontar estos desafíos, ¡por supuesto!
Virtualización de datos es el nombre que se le da a cualquier enfoque que le permita realizar consultas
en sistemas dispares desde una única fuente sin tener que saber dónde residen físicamente esos datos.
Introduciendo la virtualización de datos |187
Las consultas se pueden ejecutar en una amplia variedad de conjuntos de datos relacionales y no relacionales,
algunos de los cuales pueden tener sus propios motores informáticos, mientras que otros no. Cuando existe un
motor de computación remoto, la tecnología de virtualización de datos le permite enviar la computación a esa
fuente de datos. Los motores de virtualización de datos avanzados también proporcionan almacenamiento en
caché transparente adicional de datos para reducir el impacto en el sistema de origen. Estas capacidades logran
una serie de beneficios importantes, que se resumen aquí para usted:
• Acceder a los datos utilizando el modelo de seguridad del sistema fuente,simplificando la gestión.
• Sólo los resultados de las consultas viajan de forma segura a través de la red.mejorar la eficiencia
de la red.
Al federar consultas entre datos dispares de una única fuente, la virtualización de datos le
permite crear unamoderno centro de datos empresarialespara todos estos sistemas sin tener
que construir tuberías complejas:
En esta sección, revisará tres escenarios específicos en los que un centro de datos empresarial moderno
implementado mediante tecnología de virtualización de datos agrega un valor significativo a su solución.
Un enfoque que ha ganado popularidad en los últimos tiempos es el análisis operativo, también conocido
comoprocesamiento analítico transaccional híbrido (HTAP ). Con este enfoque, combina la carga de
trabajo operativa y la carga de trabajo analítica en un único sistema para ese conjunto de datos. Esto tiene
la ventaja de la consolidación y puede limitar la duplicación de datos. También aborda los problemas de
calidad de los datos en la fuente, lo que conduce a una reducción de la carga de gestión de datos. Sin
embargo, hay una desventaja notable. La mayoría de las empresas tienen sistemas de múltiples fuentes,
lo que daría como resultado múltiples sistemas HTAP. Esto presenta el desafío para los usuarios de
consultar todos sus datos analíticos.
Ingrese a su moderno centro de datos empresariales. La virtualización de datos le permite construir una
única capa semántica sobre estos sistemas HTAP. Puede aprovechar la calidad mejorada de los datos y la
potencia de cálculo analítico de cada fuente. Esto significa que puede consultar datos en tiempo real para
obtener la máxima actualización y reducir el cálculo para optimizar los recursos.
Piense en un panel popular en su organización. Cada vez que se accede a él, se realizan las mismas solicitudes a
la fuente de datos. Este patrón es muy común en análisis. Se accede a las mismas consultas y, a menudo, a los
mismos datos una y otra vez, lo que a menudo produce el mismo resultado. La tecnología de virtualización de
datos puede ayudar a compensar esta sobrecarga mediante la implementación de varias técnicas de
almacenamiento en caché.
Nota
Referirse aCapítulo 9,Clústeres de big data de SQL Server 2019para obtener más información sobre la nueva tecnología de
Los almacenes de datos y las plataformas analíticas a menudo han adoptado la "visión única de la verdad"
arquitectura. Sin embargo, no siempre es práctico lograrlo. Algunas organizaciones están repartidas por
todo el mundo, operan en múltiples zonas horarias y dificultan el movimiento de datos. Otros operan en
un modelo subsidiario con muchas unidades de negocios diferentes que contribuyen al éxito del grupo. Es
posible que estas unidades de negocio hayan crecido orgánicamente, pero es igualmente probable que la
empresa haya crecido mediante adquisiciones.
Contrastación de virtualización de datos y movimiento de datos |189
No es raro ver que se utilizan diferentes tecnologías para el análisis en este tipo de modelos
organizacionales. Como resultado, estas empresas suelen elegir un modelo federado para su
plataforma de análisis.
En un modelo federado, cada unidad de negocio está facultada para crear sus propias soluciones
analíticas. En los casos en que la federación sea geográfica, los KPI pueden ser los mismos. Sin
embargo, eso no significa que la tecnología utilizada sea idéntica. Cuando el modelo federado se divide
por unidad de negocio, es probable que los KPI sean diferentes para reflejar las necesidades de cada
negocio. Sin embargo, eso no ayuda a que la junta obtenga una visión única de todos los KPI. En ambos
casos, la organización del grupo todavía necesita una manera fácil de entender la salud de la empresa.al
otro lado delas unidades de negocio.
A medida que la virtualización de datos abstrae la tecnología de la vista semántica, su centro de datos
empresarial moderno proporciona una capa unificada para consultas analíticas en todos sus datos. La
virtualización de datos proporciona una manera de reunir de manera lógica métricas y medidas en el
centro de datos empresarial moderno, independientemente de la tecnología subyacente.
Los lagos de datos han ganado un impulso significativo en los últimos años para crear soluciones analíticas.
Sin embargo, estos sistemas se basan naturalmente en archivos y los archivos no siempre son las cosas más
fáciles de consultar.Fila en columnas optimizada(ORCO) y Parquet, en particular, no se pueden abrir,
inspeccionar y consultar simplemente, especialmente cuando esos archivos han sido comprimidos. El acceso
directo a los archivos también plantea cuestiones de seguridad. ¿Debería un analista tener acceso a todas las
filas y columnas de este archivo? Posiblemente no.
La tecnología de virtualización de datos le permite colocar una capa de abstracción entre los archivos y los
analistas de datos que buscan consultar los datos. Esto significa que a los analistas se les presenta una solución
que entienden muy bien, es decir, SQL y tablas. La seguridad también se puede gestionar en nombre de los
analistas de datos, garantizando que los usuarios finales solo vean los datos que deberían. Finalmente, los
proveedores de tecnología avanzada de virtualización de datos aprovechan el procesamiento de consultas del
motor de base de datos, que brinda a los analistas la capacidad de ejecutar consultas mucho más complejas
contra datos subyacentes basados en archivos.
Incluso cuando los datos están disponibles, la virtualización de datos proporciona un conjunto más limitado de
capacidades de transformación de datos en comparación con una estrategia de movimiento de datos. Si bien puede
implementar algunas reglas rudimentarias de calidad de datos en su consulta, si los datos en sí requieren una limpieza
o transformación significativa, entonces un enfoque de movimiento de datos ofrece la máxima flexibilidad para la
curación de datos.
Es posible que las consultas analíticas también necesiten poder determinar el estado de los datos en
cualquier momento dado y no solo proporcionar el estado más reciente. Es posible que haya creado un
almacén de datos en el pasado para este fin. Los almacenes de datos incorporan datos seleccionados y
adoptan una estrategia de movimiento de datos para crear dimensiones que cambian lentamente y
tablas de hechos que versionan los datos bajo gestión. Por supuesto, podría cambiar el sistema fuente
para poder proporcionar este nivel de datos y curación. Sin embargo, esto no siempre es práctico, por lo
que en estos casos tiende a preferirse una estrategia de movimiento de datos.
¿Una estrategia de movimiento de datos significa que no se puede utilizar la virtualización de datos? La respuesta es
no.
Los almacenes de datos pueden utilizar la virtualización de datos para crear prototipos de una nueva
canalización o integrarla con un catálogo de referencia central. Alternativamente, si está creando un centro de
datos empresariales, puede mover datos dentro del centro utilizando su plataforma de virtualización de datos y
luego seleccionar esos datos para proporcionar la información que necesita. Este enfoque le permite crear
dimensiones conformadas, por ejemplo, en el centro de datos. Esto permite que se puedan reutilizar fácilmente
como parte de la solución de virtualización de datos sin necesidad de un sistema independiente.
En este capítulo, se centrará en las últimas innovaciones en PolyBase para que pueda crear un centro de
datos empresariales moderno en su organización.
PolyBase utiliza el modelo de seguridad de la fuente de datos subyacente para acceder a los datos.
Como solo leerá datos, los permisos requeridos en la fuente de datos se limitan a SELECCIONARo
acceso de sólo lectura. Sin embargo, las credenciales utilizadas para leer los datos se almacenan dentro
de su centro de datos, por lo que necesitará saber cómo crearlas y protegerlas. En esta sección,
aprenderá cómo hacer esto.
Acceso seguro a los datos |191
La clave maestra se crea dentro de la base de datos de SQL Server que está utilizando para actuar como centro de
datos. Luego se utiliza para proteger las claves privadas creadas porcredenciales con ámbito de base de datos. Sólo
puedes tener una clave maestra en una base de datos. A continuación se muestra un ejemplo de la sintaxis para crear
una clave maestra de base de datos:
Si está utilizando el centro de datos para otros fines, es muy posible que ya haya creado una
clave maestra, ya que otras funciones del producto pueden requerir una. Si es así, genial; puede
reutilizarlo para proteger las credenciales del ámbito de la base de datos para la virtualización de
datos. Puede verificar si su centro de datos tiene una clave maestra mediante la siguiente
consulta:
SELECCIONAR * de sys.metric_keys;
Las credenciales con ámbito de base de datos son objetos creados por el usuario que existen dentro de la base
de datos que está utilizando como centro de datos. Contienen la identidad y el secreto necesarios para acceder
a una fuente de datos externa. Solo necesita crear una credencial con ámbito de base de datos por fuente de
datos externa. Sin embargo, puede crear más de uno si desea acceder a la fuente de datos externa utilizando
una credencial diferente. Sin embargo, también deberá crear un segundo objeto de origen de datos externo
para utilizar la segunda credencial con ámbito de base de datos.
Las credenciales con ámbito de base de datos proporcionan la abstracción del modelo de seguridad utilizado para
acceder a la fuente de datos. SQL Server 2019 admite los siguientes modelos de seguridad cuando se utiliza
PolyBase para la virtualización de datos:
Nota
Una cuenta proxy puede ser una combinación básica de inicio de sesión y contraseña, como la autenticación
SQL para SQL Server, o una configuración más compleja, como una identidad Kerberos, que requiere una
configuración adicional. El punto clave a tener en cuenta es que cualquiera que sea el método de proxy que
se utilice, todo el acceso a la fuente de datos externa se realiza a través de esta cuenta.
192|Virtualización de datos
En última instancia, es la fuente de datos externa la que determina qué modelo de seguridad se puede
utilizar con cada fuente de datos. Revise la matriz de compatibilidad en elFuentes de datos admitidas
sección de este capítulo para obtener más información.
A continuación se muestra un ejemplo de la sintaxis utilizada para proporcionar a SQL Server el contexto de
seguridad para una conexión a una fuente de datos externa de PostgreSQL:
, SECRETO = '!@rsen@l@re@m@zing!' ;
Nota
La identidad equivale al nombre de usuario de la fuente de datos externa. Por ejemplo, en el caso
anterior, el nombre de usuario se define utilizando la convención nombre de
usuario@nombredeservidor, ya que así es como se define el nombre de usuario en PostgreSQL. Si
olvida especificar la identidad utilizando la convención de nomenclatura correcta de la fuente de
datos, es posible que obtenga un error cuando intente crear una tabla externa, ya que las
credenciales no se validarán hasta ese momento.
Puede validar qué credenciales con ámbito de base de datos existen en su centro de datos consultando la vista de
catálogo para obtener credenciales con ámbito de base de datos:
Una vez que haya configurado su acceso a los datos, puede continuar y crear la fuente de datos
externa.
Las fuentes de datos externas son su camino para virtualizar datos de otros sistemas. Recopilan los metadatos
de conectividad en un único objeto de base de datos. Cada fuente de datos externa proporciona la ubicación,
el puerto, las credenciales y las opciones de conectividad necesarias para acceder a la fuente externa. Al igual
que los otros objetos analizados, las fuentes de datos externas tienen un alcance de base de datos y residen
en la base de datos elegida como centro de datos.
Fuentes de datos externas |193
La cantidad de fuentes de datos externas ha aumentado significativamente en SQL Server 2019 y ahora
admite muchos sistemas de administración de bases de datos relacionales, almacenes de valores clave
(no relacionales) y formatos de archivos de big data para consultar datos residentes en Hadoop. La
siguiente tabla resume todas las fuentes de datos externas disponibles en SQL Server 2019 y destaca el
modelo de seguridad requerido para esa fuente:
Nota
En la tabla anterior, SQL Server incluye toda la familia de bases de datos de SQL
Server: SQL Database, instancia administrada de SQL y SQL Data Warehouse.
Una de las fuentes de datos externas más interesantes de SQL Server 2019 es laConectividad de
base de datos abierta(ODBC) fuente de datos externa. El estándar ODBC proporciona un modelo
de extensibilidad abierto, que aumenta drásticamente la cantidad de fuentes de datos externas a
las que puede conectarse. Por ejemplo, puedestrae tu propio conductor (BYOD ) y conectarse
directamente a otros motores de Azure SQL Database, como PostgreSQL, MySQL y MariaDB.
Incluso puedes conectarte a sistemas de terceros como Salesforce y SAP Hana.
El siguiente ejemplo muestra todos los argumentos que necesita al crear un origen de datos
externo para un servidor de Azure Database for PostgreSQL.
Actualmente, Azure Database para PostgreSQL admite las versiones 10, 9.6 y 9.5. Necesita saber qué
versión está utilizando, ya que esto afecta la elección del controlador. Para PostgreSQL, puedes
descargar el controlador ODBC desde su sitio web:https://www.postgresql.org/ftp/odbc/versions/
msi/ . En términos generales, debería utilizar el controlador más reciente para su versión.
Para configurar el controlador PostgresSQL para una instancia de Azure, necesitará la siguiente
información:
Utilice esta información para completar la configuración del controlador. Una vez completado, puede probar
y guardar la configuración. A continuación se muestra un ejemplo de la pantalla de configuración antes de
guardar:
Nota
Recuerde dejar el campo Modo SSL configurado enrequerirpara la conectividad con Azure. Si
cambia esto, su comunicación con la base de datos puede fallar con el siguiente error:FATAL:
Se requiere conexión SSL. Especifique las opciones SSL y vuelva a intentarlo.
CON
( UBICACIÓN = 'odbc://jrjpg.postgres.database.azure.com:5432'
, CONNECTION_OPTIONS = 'Controlador={Controlador ODBC PostgreSQL (ANSI)};
sslmode=requerir'
, CREDENCIAL = pg_credencial
, EMPUJE HACIA ABAJO = ENCENDIDO
)
;
196|Virtualización de datos
ElCREDENCIALmapas de argumentos en la credencial con ámbito de base de datos que creó anteriormente.
Recuerde que todas las consultas sobre esta fuente de datos externa utilizarán esta credencial de ámbito de base de
datos.
ElEMPUJE HACIA ABAJOEl argumento se puede establecer enENoAPAGADOy es opcional (el valor
predeterminado esEN). Este argumento se utiliza para indicarle a PolyBase si está permitido optimizar
consultas "presionando hacia abajo" cálculo a la fuente de datos externa. Los JOIN y GROUP BY de tablas
externas que pertenecen a una fuente de datos externa son buenos ejemplos de "push down".
ConfigurandoEMPUJE HACIA ABAJOaAPAGADO, deshabilitaría esta optimización.
Finalmente, es posible que necesite utilizar configuraciones adicionales al configurar una fuente de
datos ODBC. Puedes usar elOPCIONES_CONEXIÓNargumento para adaptar su conexión a las
necesidades del conductor. Para este escenario ODBC, deberá establecer dos valores. El primero es
el Conductorparámetro, que indica qué controlador utilizar. El segundo parámetro esmodo ssl. Esta
configuración fuerza la conexiónCapa de sockets seguros (SSL ), que es un requisito
predeterminado para comunicarse con Azure Database for PostgreSQL.
Una vez creada, puede verificar la configuración de la fuente de datos externa consultando la vista del
catálogo de fuentes de datos externas:
Para que SQL Server pueda acceder a la fuente de datos externa, es posible que deba permitir
conexiones entrantes desde su centro de datos al recurso de Azure. Esto dependerá en gran
medida de si la fuente de datos externa está dentro o conectada a la misma red virtual que su
instancia de SQL Server. La siguiente captura de pantalla muestra la pantalla de configuración del
firewall para Azure Database for PostgreSQL. Si su fuente de datos externa no permite que su
instancia de SQL Server se conecte a la fuente de datos externa, debe navegar a la configuración de
seguridad de la conexión en Azure Portal y agregar una regla para permitir el paso del tráfico desde
SQL Server. Eche un vistazo a este ejemplo:
Formatos de archivos externos |197
Nota
La captura de pantalla anterior también resalta la configuración SSL predeterminada para la
comunicación con PostgreSQL. Como vio anteriormente, es importante recordar esto al configurar la
fuente de datos externa. La comunicación a través de SSL es la mejor práctica.
Cuando trabaja con archivos como CSV, o incluso archivos de big data como ORC o Parquet, necesita crear un
formato de archivo externo para indicarle a SQL Server cómo interpretar el archivo. En el siguiente ejemplo, el
formato de archivo externo está configurado para interpretar un archivo CSV utilizando un signo de intercalación
como terminador de campo. Existen otras opciones para la compresión de datos, terminación de cadenas y
codificaciones de archivos:
CON
Una vez creado, puede reutilizar el formato de archivo externo para todas las tablas externas
de ese tipo. También puedes comprobar cuáles ya has creado usando la vista de catálogo:
Recuerde, los formatos de archivos externos solo son necesarios al crear una tabla externa sobre un
archivo. No son necesarios para otras fuentes de datos externas relacionales o no relacionales.
Nota
Los datos a los que hace referencia a través de una tabla externa no están directamente bajo la
administración de SQL Server. Esto significa que los datos podrían cambiar o eliminarse y no se incluirán
en operaciones como la copia de seguridad o la restauración.
Las columnas de una tabla externa están asignadas por posición y, por lo tanto, puede elegir los
nombres de columna que desee. Por lo tanto, puede tratar las tablas externas como una abstracción
útil para asignar alias a nombres de columnas. En este sentido, una tabla externa opera como vista:
)
CON
( FUENTE DE DATOS = páginas_eds
Nota
ElUBICACIÓNEl valor utilizado para la tabla externa es un nombre de tres partes:
<base de datos>.<esquema>.<tabla>. ElFUENTE DE DATOSEl parámetro asigna el exterior.
objeto de origen de datos a la tabla. Recuerde que el objeto de fuente de datos externo
incluye el nombre del servidor para que SQL Server pueda ubicar la instancia.
Ahora tiene los objetos que necesita para ejecutar una consulta en una fuente de datos externa. Sin
embargo, hay una última cosa que puedes hacer para ayudar al optimizador. Puede crear estadísticas en
las columnas de la tabla externa para proporcionar al optimizador heurísticas adicionales. Usar estándar
CREAR ESTADÍSTICASsintaxis para hacer esto.
200|Virtualización de datos
El paso más importante del asistente para crear tablas externas es el paso 4: la pantalla de
asignación de tablas, que se muestra en la siguiente captura de pantalla. Aquí puede elegir qué
tablas externas se generan en su centro de datos, decidir en qué esquema se crearán esas tablas y
aceptar o ajustar los nombres y la asignación de tipos del esquema de origen a SQL Server:
Mesas exteriores PolyBase |201
Nota
La principal ventaja de utilizar el Asistente para tablas externas en Azure Data Studio es que
puede generar muchas tablas externas a la vez.
El asistente de tablas externas está disponible para crear tablas externas de SQL Server y Oracle.
También puede crear resúmenes de tablas externas, así como tablas.
Los servidores vinculados han estado disponibles en SQL Server desde hace mucho tiempo.
Proporcionan a los usuarios la capacidad de conectar fuentes de datos dispares y proporcionan un
mecanismo para ejecutar consultas entre instancias. A nivel superficial, pueden parecer similares a
las mesas externas PolyBase. Sin embargo, existen algunas diferencias importantes que debes tener
en cuenta a la hora de elegir qué tecnología utilizar.
202|Virtualización de datos
Las tablas externas se han diseñado para manejar volúmenes de datos mucho mayores y pueden
escalar lecturas en grandes conjuntos de datos. Por lo tanto, las tablas externas se adaptan mejor a
escenarios de análisis, como la virtualización de datos, donde este patrón es más común.
Los servidores vinculados operan a nivel de instancia, mientras que las tablas externas están contenidas
dentro de una base de datos y, por lo tanto, tienen un alcance de base de datos. Esto tiene algunos
beneficios importantes. Significa que una tabla externa se incluirá automáticamente en un grupo de
disponibilidad Always On y no requiere ninguna configuración especial. La contención de la base de datos
es muy útil para la consolidación y la gestión de versiones, ya que no hay artefactos adicionales que se
filtren al resto de la instancia, que de otro modo requerirían un tratamiento especial.
PolyBase se puede instalar en uno de dos modos: modo independiente o como grupo escalable. En modo
independiente, SQL Server funciona como servidor "principal" y un "calcular" nodo. Esta es una buena opción
cuando se conecta a fuentes relacionales más pequeñas. Cuando configura PolyBase como un grupo de
escalabilidad horizontal, SQL Server funciona como un clúster con un grupo "cabezal". y múltiples procesos de
"cálculo" nodos. Esto proporciona escalabilidad y rendimiento mejorados para la solución. Los grupos de
escalamiento horizontal son particularmente relevantes cuando se consultan sistemas muy grandes con tablas
particionadas o un sistema de big data, que puede contener miles de millones de registros.
En esta sección, aprenderá cómo instalar PolyBase en cualquiera de los modos. Los pasos para
realizar esta tarea son diferentes dependiendo de si está utilizando Windows, Linux o Docker, por lo
que cada opción se trata en la siguiente sección.
Nota
Si está utilizando una máquina virtual SQL Server 2019 de la galería de Azure, SQL
Server ya está instalado. Sin embargo, aún necesitará actualizar la instalación para
incluir PolyBase y luego habilitarlo.
Instalación de PolyBase en SQL Server 2019 |203
Nota
Solo es necesario instalar un JRE si desea conectar su instancia de SQL Server para usar Azure
Blob Storage o un sistema de big data como Cloudera. No es necesario que haga esto si solo
planea utilizar fuentes de datos externas relacionales. También puedes agregarlo más adelante
si es necesario.
204|Virtualización de datos
El Centro de instalación de SQL Server, también conocido como instalador, es la forma más sencilla de
instalar PolyBase en Windows. Puede optar por instalar PolyBase como parte de la instalación inicial o
actualizar una implementación existente y agregarla más adelante.
Como puede ver, el conector Java paraSistema de archivos distribuido Hadoop(HDFS) fuentes de
datos es una opción adicional.
Instalación de PolyBase en SQL Server 2019 |205
Para implementaciones más avanzadas, puede instalar SQL Server desde la línea de comandos e
incluir los modificadores para habilitar también PolyBase. Aquí se proporciona un ejemplo:
/PBENGSVCACCOUNT="<NombreDominio>\<NombreUsuario>" /
PBENGSVCPASSWORD="<StrongPassword>"
/PBDMSSVCACCOUNT="<NombreDominio>\<NombreUsuario>" /
PBDMSSVCPASSWORD="<StrongPassword>"
Una vez instalado, puede continuar con los pasos posteriores a la instalación.
A partir de SQL Server 2017, puede operar SQL Server en Linux. Actualmente, SQL Server
admite las siguientes distribuciones:
Para instalar SQL Server en Linux, debe seguir las instrucciones proporcionadas en la documentación del
producto, ya que cubrir el proceso de instalación completo está fuera del alcance de este capítulo. Esto
está cubierto enCapítulo 5,Servidor SQL 2019 en Linux.
• RHEL:https://docs.microsoft.com/sql/linux/quickstart-install-connect-red-hat
• SLES:https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connectsuse
•Ubuntu:https://docs.microsoft.com/sql/linux/quickstart-install-connectubuntu
206|Virtualización de datos
Desde su terminal, puede actualizar su instalación de SQL Server usando uno de los
siguientes comandos:
#RHEL
sudo yum install -y mssql-server-polybase
#Ubuntu
sudo apt-get install mssql-servidor-polybase
#SLES
sudo zypper instala mssql-server-polybase
Una vez instalado, se le pedirá que reinicie la instalación de SQL Server. Puede hacerlo con
el siguiente comando desde la ventana de su terminal:
# RHEL, SLES y Ubuntu usan el mismo comando para reiniciar sudo
systemctl restart mssql-server
Eso es todo. Ahora puede continuar con los pasos posteriores a la instalación.
SQL Server 2019 está disponible para descargar como imagen de Docker. Sin embargo, la imagen
no contiene componentes opcionales como PolyBase. Deberá crear una imagen de Docker e incluir
el paquete PolyBase. Afortunadamente, esto es muy fácil de hacer usando un Dockerfile.
En primer lugar, debe crear un Dockerfile para indicarle a Docker qué compilar. Crea un archivo
llamado archivo acoplableen un directorio y luego navegue hasta ese directorio en su ventana
cmd o terminal. Copie el siguiente código en su Dockerfile:
# mssql-servidor-polybase
# Mantenedores: Microsoft Corporation
#GitRepo: https://github.com/Microsoft/mssql-docker
# Instale los requisitos previos, incluida la configuración del repositorio para el servidor SQL y PolyBase.
Instalación de PolyBase en SQL Server 2019 |207
CMD /opt/mssql/bin/sqlservr
Ahora puede crear la imagen y asignarle una etiqueta usando el siguiente comando a continuación:
La compilación descargará todas sus dependencias y creará una nueva imagen que incluye SQL Server y la
imagen de Docker. Ahora todo lo que necesitas hacer es crear el contenedor, lo cual puedes hacer con lo
siguienteejecución de la ventana acoplabledominio:
En cuestión de segundos, tendrá un contenedor Docker en funcionamiento y podrá continuar con los
pasos posteriores a la instalación.
208|Virtualización de datos
Al utilizar SQL Server en Docker, es posible que necesite aumentar los recursos disponibles para
Docker para ejecutar los contenedores correctamente. SQL Server normalmente necesita al menos
2 GB de RAM, por ejemplo. Cuando utilice PolyBase, probablemente querrá aumentar esa cantidad
aún más, ya que utilizará memoria al consultar fuentes de datos externas:
Primero debes validar que PolyBase esté instalado ejecutando el siguiente comando:
SELECCIONE SERVERPROPERTY ('IsPolyBaseInstalled') COMO IsPolyBaseInstalled;
Nota
Saber que la instancia tiene PolyBase instalado y habilitado es un excelente punto de partida para
solucionar problemas de una implementación. Es fácil olvidar habilitar PolyBase después de la
instalación, ¡pero la característica no funcionará a menos que lo hagas!
Instalación de PolyBase como grupo escalable |209
Para mejorar el rendimiento y la escalabilidad de SQL Server 2019, puede implementar PolyBase como un
grupo escalable. En este modo, todas las instancias del grupo funcionan como una sola al consultar fuentes
de datos externas. Los grupos de escalamiento horizontal son particularmente útiles al consultar tablas
particionadas grandes o archivos grandes en Hadoop o en Azure Blob Storage. Los grupos de escalamiento
horizontal subdividen y paralelizan el procesamiento de consultas entre los nodos del grupo de escalamiento
horizontal, lo que aprovecha al máximo la arquitectura distribuida.
Nota
Los grupos de escalamiento horizontal solo se admiten en el sistema operativo Windows. Si desea
crear una plataforma de virtualización de datos escalable en Linux, utilice SQL Server 2019 Big Data
Clusters, que está optimizado para este escenario mediante Kubernetes. Para obtener más
información sobre los clústeres de Big Data de SQL Server 2019, consulteCapítulo 9,Clústeres de big
data de SQL Server 2019.
Figura 7.11: Topología del grupo de escalamiento horizontal PolyBase de la máquina virtual de Azure
210|Virtualización de datos
El uso de diferentes grupos de recursos para cada componente de la arquitectura le ayuda a gestionar
los activos que crea. De esta manera, puede eliminar fácilmente el grupo de escalamiento horizontal
eliminando su grupo de recursos sin destruir el controlador de dominio, por ejemplo.
Si crea las máquinas virtuales primero, la hoja de aprovisionamiento de redes intentará crear
los NSG en el nivel de la interfaz de red. El uso de NSG en el nivel de interfaz de red hace que su
implementación sea mucho más compleja, ya que habrá introducido otra barrera con la que
deberá lidiar cuando intente que las máquinas se comuniquen entre sí.
En este punto, también puede continuar y agregar las reglas de entrada al NSG que pueda necesitar para poder
configurar las máquinas virtuales. El escritorio remoto (3389) y el tráfico SQL (1433) son los puertos más
comunes para abrir. Sin embargo, estos deben configurarse cuidadosamente, limitando el acceso únicamente
desde direcciones IP de origen conocidas.
Consejo n.º 3: coloque las instancias de SQL Server del grupo escalable dentro de una subred
Todas las máquinas virtuales de un grupo de escalamiento horizontal se comunican a través de varios puertos. De forma
predeterminada, el rango de puertos para PolyBase es 16450-16460. Sin embargo, los grupos de escalamiento horizontal
también utilizan Coordinador de transacciones distribuidas de Microsoft (MSDTC ), que utiliza un rango de puertos
dinámico, lo que hace que la gestión de la red sea más desafiante.
Instalación de PolyBase como grupo escalable |211
Al colocar todas las máquinas virtuales del grupo de escalamiento horizontal dentro de una única subred, se simplifica
la topología. Todas las máquinas virtuales pueden comunicarse en cualquier puerto, ya que la red está protegida a
nivel de subred y usted no necesita preocuparse por fijar MSDTC en un puerto conocido.
La implementación de un grupo escalable contiene algunos inconvenientes que podrían sorprenderlo. Esta lista de
verificación está diseñada para ayudar a que su experiencia sea más fluida. Revíselo y asegúrese de tener una
respuesta para cada pregunta:
• ¿Ha creado nombres DNS para cada una de sus máquinas virtuales?
• ¿Están todas las máquinas del grupo de escalamiento horizontal unidas al mismo dominio?
• ¿Tiene una cuenta de usuario de dominio adicional para ejecutar los servicios de PolyBase?
• ¿Una de las máquinas tiene licencia de SQL Server 2019 Enterprise Edition?
• ¿Ha agregado reglas de entrada de acceso de clientes a los NSG para poder acceder de forma remota a las
máquinas virtuales desde su máquina?
• ¿La cuenta que está utilizando para instalar PolyBase tiene acceso a SQL Server?
• ¿Ha instalado algún controlador ODBC en todos los nodos de su grupo de escalamiento horizontal?
La última pregunta es particularmente importante. Los grupos de escalamiento horizontal deben tener el
controlador ODBC instalado en cada nodo del grupo de escalamiento horizontal. Si olvida hacer esto, podría
obtener fallas de consulta esporádicas cuando una consulta utiliza el nodo que no tiene el controlador
instalado.
212|Virtualización de datos
El primer y más importante punto es quetodoLos nodos del grupo de escalamiento horizontal deben
tener PolyBase instalado usando la segunda opción,Utilice este servidor SQL como parte del grupo de
escalamiento horizontal de PolyBase. No importa si la instancia de SQL Server que está instalando será
el nodo principal o un nodo de cálculo; asegúrese de utilizar esta opción:
Figura 7.12: Habilitación de la funcionalidad de grupo de escalamiento horizontal durante el proceso de instalación de SQL Server
Es posible que deba ampliar o cambiar el rango de puertos predeterminado de 16450-16460, según las
reglas y directrices de su administrador de red. Además, cualquier firewall que exista entre las máquinas
de este dominio deberá permitir que el tráfico pase a través de estos puertos; de lo contrario, PolyBase
no funcionará correctamente.
En la página de configuración, deberá proporcionar la misma cuenta de usuario de dominio para ambos
servicios de PolyBase. Es importante tener en cuenta que debe utilizar la misma cuenta de usuario de
dominio para ambos servicios en todas las instancias. De lo contrario, no podrá continuar en esta pantalla:
Figura 7.13: Configuración del servidor: use la misma cuenta de usuario de dominio para ambos servicios
214|Virtualización de datos
Antes de que podamos continuar con la configuración del grupo de escalamiento horizontal, primero debe
completar los pasos posteriores a la instalación discutidos anteriormente para habilitar PolyBase. Inicie sesión,
ejecute el siguiente script y reinicie todos los nodos:
Ahora que PolyBase está instalado y habilitado en todos los nodos, está listo para configurar el
grupo de escalamiento horizontal. Elija una instancia de SQL Server como nodo principal. En un
grupo escalable, el nodo principal debe tener una licencia Enterprise Edition. Deja esta instancia en
paz. Una las instancias restantes de SQL Server al nodo principal usando elsp_polybase_join_grupo
sistema:
EXEC sp_polybase_join_group
@head_node_address = N'jrj-sql19-cp-01.infra.internal' =
, @dms_control_channel_port 16450
, @head_node_sql_server_instance_name = N'MSSQLServer' ;
Nota
Asegúrese de utilizar el nombre DNS que coincida con la red interna para el
sp_polybase_join_groupprocedimiento almacenado. Quiere asegurarse de que el tráfico de la
red permanezca dentro de la red virtual. Utilice el nombre DNS para la dirección IP pública
cuando acceda a SQL Server desde un cliente.
Eso es todo. Si bien hay una serie de pasos a seguir, con un poco de planificación y previsión
puedes crear fácilmente tu propio grupo de escalamiento horizontal. Ahora que ha comprendido
todos los conceptos y ha instalado su propio centro de datos empresarial moderno, puede seguir
adelante y crear su primera solución utilizando la virtualización de datos.
Reuniéndolo todo: su primera consulta de virtualización de datos |215
• Cuatro esquemas
Utilizando el conocimiento que ha adquirido en este capítulo, puede crear todos los objetos que necesita en su
centro de datos. Todo lo que queda por hacer es crear y ejecutar la consulta. Para ello, puede utilizar la
característica más reciente de Azure Data Studio: un cuaderno SQL:
Figura 7.15: Informes a nivel de grupo utilizando la virtualización de datos de SQL 2019 en un
¡Éxito! Observe cómo la consulta final es "simplemente" ¿SQL? Utilizando herramientas y tecnología
familiares, ha podido consultar cuatro fuentes externas en tiempo real y proporcionar el estado más reciente
de las ventas a la junta.
Hemos visto cómo SQL Server 2019 le permite crear un centro de datos empresarial moderno
utilizando tecnología de virtualización de datos impulsada por PolyBase. Ha visto cómo puede
diseñar su centro de datos para realizar consultas en todos sus sistemas de origen en tiempo real.
Ha pasado por el proceso de instalación de Windows, Linux y Docker, y ha visto cómo crear un
grupo de escalamiento horizontal en Azure. Finalmente, reunió todo en una sola consulta para
proporcionar informes a nivel de grupo en su centro de datos a la junta directiva de
AdventureWorks utilizando la última innovación en Azure Data Studio: un cuaderno SQL.
"Ciencia de datos" es el término más amplio que se le da a las técnicas de análisis de datos realizadas de
manera científica: crear una hipótesis, crear una prueba de la hipótesis y validar los resultados (la mayoría de
las veces con una revisión por pares). Implica técnicas estándar de análisis de datos, como consultas, informes y
exploración de datos mediante inteligencia empresarial, y va más allá al configurar pruebas utilizando
herramientas estadísticas y algorítmicas para el aprendizaje automático.
Comenzará con una descripción general rápida del aprendizaje automático y luego pasará a
trabajar con las herramientas para crear modelos predictivos y clasificación. Luego, pasará a
instalar la función y luego cubrirá la arquitectura y los componentes del sistema, que
necesitará para trabajar con los lenguajes que usará para las cargas de trabajo de aprendizaje
automático. . Terminará este capítulo con un proceso completo a seguir para combinar la
arquitectura, los componentes, los lenguajes y los entornos para crear una solución completa.
2.Inteligencia artificial: Aplicar información sensorial para aprender de los datos (a menudo utilizando
técnicas de aprendizaje automático)
3.Aprendizaje profundo: Uso de capas de métodos de aprendizaje automático para crear redes que imiten
el procesamiento de datos de la mente humana
El aprendizaje automático es el "núcleo" de la mayoría de las técnicas utilizadas en las tres ramas, y SQL Server 2019
proporciona una función de Servicios de aprendizaje automático para que pueda implementar el aprendizaje
automático, la inteligencia artificial o incluso el aprendizaje profundo directamente en el motor de la base de datos
sobre los datos almacenados en una base de datos o combinados con datos externos.
1.supervisado: Tiene datos (llamados características) que incluyen la respuesta que desea obtener
(llamadas etiquetas)
2.sin supervisión: Tiene datos (llamados características) que no incluyen la respuesta que
desea obtener (sin etiquetar)
Descripción general del aprendizaje automático |221
Por ejemplo, si desea predecir un determinado nivel salarial de una persona aleatoria, primero deberá
recopilar muchos datos sobre muchas personas, incluidos sus salarios (la etiqueta). A partir de los datos,
seleccionaría características que se correlacionen altamente con la etiqueta que desea predecir. Es posible
que descubra que la educación, la experiencia, la ubicación, etc. (las características) son muy útiles para
predecir cuánto gana alguien en un año. Luego toma esos datos, los introduce a través de uno o más
algoritmos y el sistema "aprende" los datos. cómo esas características afectan el valor de la etiqueta. Una
vez que produce un resultado, puede guardar esa información "entrenada". Algoritmo como modelo de
aprendizaje automático. Luego, utilizando solo las características de alguien que el modelo nunca ha visto,
el sistema produce la etiqueta que estaba buscando; esto se llama predicción o puntuación, ya que la
predicción generalmente contiene información sobre qué tan "seguro" el algoritmo es de su predicción.
Este es un ejemplo de aprendizaje supervisado, ya que originalmente proporcionaste los datos
etiquetados.
En otro ejemplo, es posible que desee agrupar a personas, tal vez para encontrar sus hábitos de
gasto comunes, pero no está seguro de qué los hace similares. En este caso, proporcionas muchas
funciones, pero no etiquetas, ya que no estás seguro de lo que estás buscando. En este caso, el
algoritmo compara todas las características e intenta minimizar la distancia entre los puntos de los
conjuntos de datos. El resultado son las agrupaciones de datos que muestran la mayor similitud
entre las personas. Este es un ejemplo de aprendizaje no supervisado, ya que no se
proporcionaron etiquetas.
Nota
La parte más complicada de este proceso para cualquier tipo de aprendizaje es recopilar los
datos correctos (los más predictivos: las características) y limpiarlos para que los algoritmos
puedan procesarlos adecuadamente. Estas tareas conforman el trabajo de "ingeniería de
datos", que suele ser parte del equipo de ciencia de datos. El "científico de datos" suele ser
alguien que trabaja con los algoritmos para crear el modelo entrenado.
1. ¿Es esto A o B?
3. ¿Cuánto o cuántos?
Tomando la primera pregunta como ejemplo, nuestra predicción salarial permite a un banco
decidir si comercializarle una oferta de servicios de jubilación, incluso si no conocen su salario
(es posible que tenga más de un banco). En el caso de¿Es esto raro?, pueden monitorear sus
hábitos de gasto para ver si hay algo fraudulento en su cuenta. El¿Cuánto o cuántos?La
pregunta se puede utilizar para ver si deberían otorgarle un préstamo en función de cuánto
ha aumentado su salario a lo largo de los años.¿Cómo se organiza esto?permite al banco
agruparlo con otros clientes para fines de marketing. Y el ¿Qué debería hacer después?La
respuesta puede automatizar la respuesta al fraude del banco.
4. "Tren" con los datos pasándolos a través de uno o más algoritmos, usando las características
(en el aprendizaje supervisado) y las respuestas (etiquetas) para crear un modelo.
5. "Prueba" el modelo ejecutándolo con más datos para los que tenga la respuesta.
6. Repita el último paso cambiando el algoritmo o las variables que utiliza el algoritmo
(llamadas hiperparámetros).
7. Guarde el modelo deseado en formato binario para poder llamarlo para realizar predicciones o
clasificaciones, lo que se denomina "puntuación".
Los conjuntos de datos necesarios para producir predicciones y cálculos fiables son demasiado grandes y
complejos para calcularlos a mano. Para estos cálculos se utilizan con mayor frecuencia varios lenguajes
de programación, en particular R, Python y Java.
Descripción general del aprendizaje automático |223
Hay cuatro métodos que puede utilizar para trabajar con estos grandes conjuntos de datos en aprendizaje
automático mediante SQL Server 2019:
1. El marco de extensibilidad de Machine Learning Services: una combinación del servicio SQL Server
Launchpad, un servidor de lenguaje que ejecuta el código y un procedimiento almacenado que
permite que el servicio y el tiempo de ejecución del lenguaje interactúen de forma segura.
4. Spark en SQL Server 2019 Big Data Clusters: utiliza elChispa - chispearbibliotecas para crear, entrenar,
almacenar y calificar modelos de aprendizaje automático utilizando bibliotecas comoPySpark,
chispaR, oSparkMLdeclaraciones.
Microsoft SQL Server 2016 introdujo "Servicios R para SQL Server" para incorporar la capacidad de
enviar datos desde una consulta del servidor SQL a una serie de declaraciones R y devolver los
resultados. En SQL Server 2017, Microsoft agregó Python al servidor y cambió el nombre de la
función a "Servicios de aprendizaje automático". En SQL Server 2019, Java también está disponible.
En este capítulo, aprenderá cómo implementar esos lenguajes para el aprendizaje automático y
sobre los componentes dentro de la plataforma que los ejecuta. Hay cambios que descubrirá en las
configuraciones anteriores de los servicios R (2016) y Machine Learning Services (2019). En este
capítulo, también se centrará en la adición de Java, ya que R y Python existían en versiones
anteriores, pero los abordaremos brevemente en caso de que sea nuevo en ellos.
Los servicios de aprendizaje automático de Microsoft SQL Server 2019 están disponibles para los
lenguajes R y Python en las siguientes ediciones:
La extensión del lenguaje R está disponible en la plataforma de base de datos Microsoft Azure para bases
de datos únicas y grupos elásticos que utilizan el modelo de compra basado en núcleo virtual en los
niveles de servicio de uso general y críticos para el negocio.
224|Marco de extensibilidad de servicios de aprendizaje automático
Después de realizar la selección, puede elegir los idiomas con los que desea trabajar y el
instalador marca los componentes adicionales para que se instalen en ese idioma. Como
en cualquier instalación de SQL Server, es importante comprender todas las
ramificaciones e interacciones, que puede encontrar aquí:https://docs.microsoft.com/en-
us/ sql/advanced-analytics/install/sql-machine-learning-services-windowsinstall?
view=sqlallproducts-allversions .
Tenga en cuenta que, si bien el lenguaje Java ahora es compatible con SQL Server 2019, no está incluido
en Machine Learning Services. Necesitarás instalarOracle Java SEoZulú OpenJDK Javaen su servidor. Si
no está allí y lo selecciona (o lo solicita desde el instalador de Linux), los requisitos previos fallarán y
saldrá del instalador. Una vez que instales tu Java y establezcas unJRE-INICIOconfiguración del sistema (
COLOCARen Windows,exportaren Linux), luego puede reiniciar el instalador y seleccionarlo
nuevamente.
En Linux, existe un proceso diferente para instalar la compatibilidad con Java. Usando el
administrador de paquetes de su distribución (comoaptoommm), instalará elmssql-servidor-
extensibilidadjavapaquete una vez que se complete la instalación básica de SQL Server 2019 y Java,
como se describe en la documentación completa.
Puede ver una explicación completa del proceso de instalación de Java tanto para Windows
como para Linux aquí:https://docs.microsoft.com/en-us/sql/advanced-analytics/java/
extension-java?view=sqlallproducts-allversions .
Nota
SQL Server sólo llamará a lenguajes que hayan sido codificados para funcionar con esta
arquitectura, llamadalanzador confiable . En SQL Server 2019, estos lenguajes son R, Python
y Java.
226|Marco de extensibilidad de servicios de aprendizaje automático
Al trabajar juntos, varios componentes permiten que las llamadas funcionen de forma rápida y segura en
toda la instancia. Cada área de componente obtiene un espacio de proceso para proteger la integridad
de las bases de datos y los motores de procesamiento. Junto con otros componentes, esto conforma el
marco de extensibilidad de Machine Learning Services.
Nota
La extensión del lenguaje Java se ejecuta de manera diferente al diagrama de procesos que se muestra en la siguiente
Componentes
Figura 8.2: Marco de extensibilidad de SQL Server 2019 Machine Learning Services
228|Marco de extensibilidad de servicios de aprendizaje automático
En cuanto a las llamadas al servidor, las comunicaciones estándar de SQL Server como TCP/IP, el
Flujo de datos tabulares (TDS) y el cifrado aún se aplican.
Nota
La agrupación en clústeres de conmutación por error para Machine Learning Services ahora está habilitada en SQL
Server 2019 si el servicio Launchpad está activo y ejecutándose en todos los nodos.
Configuración
Una vez instalados Machine Learning Services y cualquier idioma con el que desee trabajar,
puede habilitar Machine Learning Services para la instancia mediante Transact-SQL (T-SQL ) con
estos comandos:
EXEC sp_configure 'scripts externos habilitados', 1 GO
IR
Arquitectura y componentes de los servicios de aprendizaje automático de SQL Server 2019 |229
Puede probar para ver si la implementación fue exitosa con este script para R:
/* Prueba R */
EXEC sp_execute_external_script @language =N'R',
@script=N'
Conjunto de datos de salida <- Conjunto de datos de entrada; ',
Si esos devuelven un valor de1, está listo para usar el marco de extensibilidad de Machine
Learning Services para sus cargas de trabajo de aprendizaje automático.
Nota
Si el sistema no puede ejecutar los scripts correctamente, detenga e inicie la instancia nuevamente y
asegúrese de que el servicio SQL Server Launchpad se esté ejecutando en su sistema.
230|Marco de extensibilidad de servicios de aprendizaje automático
Python, R y Java utilizan el marco de extensibilidad de Machine Learning Services para ejecutar código de
aprendizaje automático. Las siguientes secciones proporcionarán una descripción general de cómo funciona
ese proceso desde el proceso de desarrollo, comenzando con R.
Nota
Puede utilizar dos métodos generales para codificar sistemas de aprendizaje automático en SQL
Server: escribir el código en la base de datos; o crear código Python y R localmente y procesar las
llamadas en la base de datos usando funciones en las bibliotecas de aprendizaje automático de
Microsoft en R o Python. Este capítulo se centra en el primero. Para obtener más información sobre la
función de procesamiento remoto, consulte:https://docs.microsoft.com/en-us/sql/advanced-analytics/
r/ref-r-sqlrutils?view=sql-server-ver15 .
SQL Server 2019 utiliza la distribución mejorada de Microsoft R de la distribución de código abierto
R. Microsoft mejoró el lenguaje base R reemplazando ciertas bibliotecas de nivel inferior para
procesar datos y cálculos, agregando múltiples funciones y paquetes extendidos, y eliminando la
limitación en memoria de R al habilitar un formato de lectura de archivos para estructuras de datos,
entre una serie de otras mejoras.
Nota
Microsoft R fue escrito originalmente por una empresa llamadaAnálisis de la revolución(Revo-R), y aún
notará vestigios de los nombres de productos en las bibliotecas y llamadas a funciones en Microsoft R
que comienzan conrx_yrevólver.
Aprendizaje automático utilizando el marco de extensibilidad de los Servicios de aprendizaje automático |231
Si bien R es un lenguaje de procesamiento de datos de propósito general, los paquetes y bibliotecas (más sobre esto en
un momento) lo convierten en un lenguaje principal para el aprendizaje automático.
sp_execute_external_script
@language = N'R',
@input_data_1 = 'SQL_Code_Goes_Here'
@input_data_1_name = 'Nombre que usarás en R para los datos T-SQL'
@script = N'R_Code_Goes_Here'
@output_data_1_name = N'nombre de datos de salida' CON
• @idioma = N'R': establece el idioma que utiliza el proceso externo, en este caso, R.
• @input_data_1 = ' ': Su script T-SQL para lo que desea enviar al programa R va
aquí. Puede abarcar líneas, pero debe estar dentro de las marcas.
• @guión = N' ': El texto de su programa R va aquí. Puede abarcar líneas, pero debe estar encerrado
entre las marcas. Ha pasado como unVARCHAR(MAX)tipo de datos. Tenga en cuenta que dentro
del script R, puede usardatos_entrada_1como un marco de datos R, completado por su script T-
SQL.
232|Marco de extensibilidad de servicios de aprendizaje automático
Nota
De particular importancia en las funciones estadísticas utilizadas en el aprendizaje automático son las
diferencias entre los tipos de datos de R y los tipos de datos de SQL Server. R admite alrededor de 9 tipos de
datos básicos, mientras que SQL Server admite más de 30. Es importante probar cada declaración que
ejecute para asegurarse de declarar las conversiones explícitas de manera adecuada.
A continuación se muestra un ejemplo rápido de esta llamada. Utilizando elTrabajo de aventurabase de datos, esto
calcula la suma de las órdenes de compra:
UTILICE AdventureWorks;
IR
EXEC sp_execute_external_script
@language = N'R'
, @input_data_1 = N'SELECCIONAR LineTotal FROM Purchasing.PurchaseOrderDetail'
, @input_data_1_name = N'elementos de línea'
La plataforma de procesamiento y lenguaje Python es un software de código abierto que se utiliza ampliamente
para el aprendizaje automático, la inteligencia artificial y el aprendizaje profundo. Es un lenguaje de propósito
general, orientado a objetos, altamente extensible y que se está convirtiendo rápidamente en un lenguaje muy
popular para el aprendizaje automático. Hay dos versiones principales de Python: 2.xy 3.x. La mayoría de las
implementaciones modernas de Python son 3.x, y eso es lo que usa SQL Server.
Java y aprendizaje automático en SQL Server |233
SQL Server 2019 Machine Learning Services instala la distribución de código abierto de
Python 3.x y también le permite usar elrx_bibliotecas para mejorar el rendimiento, el
paralelismo y la escala del lenguaje.
El uso del lenguaje Python en SQL Server 2019 Machine Learning Services funciona igual que en R:
se utiliza el procedimiento almacenado externo, se proporciona el nombre del idioma ("Python", en
este caso) y luego se envían los datos desde SQL Server. trabaje con los datos en Python y devuelva
el conjunto de resultados. La sintaxis es la misma que la de los ejemplos de R que viste antes, con
una distinción importante: Python es muy sensible al espaciado. En el script de Python que pegue,
asegúrese de que se mantenga el espaciado del script original.
Los tipos de datos admitidos por Python son diferentes a los de R (y SQL Server), por lo que
debe tener en cuenta cómo se convertirán en los resultados. Pero la mayor diferencia es que
Python es muy sensible al espaciado y a las tabulaciones, por lo que, en la declaración del
script, deberá tener mucho cuidado al ingresar la cadena.
Nota
Siempre debe declarar implícitamente sus tipos de datos cuando trabaje con varios
lenguajes, especialmente porque la ciencia de datos implica fórmulas estadísticas, e incluso
una pequeña diferencia en los tipos de datos puede desviar completamente un cálculo, y no
siempre recibe una advertencia de que los datos no son fiables. AsegúreseELENCOo
CONVERTIRlos datos en exactamente lo que cada idioma entiende a medida que pasa los datos
de un lado a otro.
Aunque Java no se asocia comúnmente con el aprendizaje automático como lo están R y Python, se utiliza en
muchos sistemas de procesamiento de big data y para tareas de procesamiento generales. Eso no quiere decir
que no se utilice en absoluto en el aprendizaje automático; de hecho, existen varias bibliotecas que puedes
cargar para el aprendizaje automático en Java. Sin embargo, es muy adecuado para ciertas tareas de
procesamiento de datos, como extraer n-gramas para el procesamiento del lenguaje natural, llamar a una
etiqueta blockchain para incluirla en el proceso de aprendizaje automático, etc.
Nota
La intención de SQL Server 2019 Machine Learning Services es que tenga varios lenguajes de
procesamiento para elegir según la tarea que necesite realizar. Puede procesar gran parte de
los datos usando T-SQL, procesar aún más los datos en R, extraer o transformar datos en Java y
pasar los resultados a una biblioteca de aprendizaje profundo en Python, todo mientras usa
SQL Server de forma segura.
Para aquellos que no están familiarizados con Java, algunos de los términos utilizados en el entorno Java
pueden resultar confusos. Para ejecutar programas Java, necesita unmáquina virtual de Java (JVM ): la
capa de abstracción que protege el programa del resto del sistema operativo. Junto con la JVM, necesita
las bibliotecas de clases en su código. Estos se combinan en elEntorno de ejecución de Java (JRE ). Los
desarrolladores de Java también tienen compiladores, depuradores, herramientas de documentación y
más, y estos se proporcionan en unKit de desarrollo Java (JDK ):
Para SQL Server 2019 Machine Learning Services, solo necesita instalar un JRE (versión 8).
Si aún no tiene un JRE instalado en su sistema, primero deberá instalarlo
– no se instala con el instalador de SQL Server como lo hacen R y Python.
Nota
Si bien no necesita un SDK de Java completo para ejecutar código Java en SQL Server, sí lo
necesita para escribir, compilar y empaquetar código Java en su estación de trabajo de
desarrollador. Esta sección asume que está familiarizado con el desarrollo de código Java.
El código Java que escribe se compila en código de bytes y se combina con otros activos en un archivo (
.frasco)para uso con JRE. Ese proceso significa que funciona de manera diferente a R o Python en SQL
Server 2019. En R y Python, el código se ejecuta simplemente envolviéndolo en un procedimiento
almacenado. Dado que Java se compila y ejecuta en JRE, el proceso tiene pasos adicionales.
Primero, cree una carpeta en el sistema SQL Server donde almacenará su código Java compilado como.
frascoarchivos. Esta debería ser una ubicación segura, ya que permite que el código se ejecute en su
servidor SQL.
El siguiente paso es ligeramente diferente para Linux y Windows, pero, en general, debe otorgar
permisos de extensión al proceso de Windows o Linux que ejecuta SQL Server 2019 para el directorio
donde se encuentra su.frascose almacenan los archivos.
Colocar el.jar archivo que descarga en el directorio que creó hace un momento. Esto permite que las llamadas
desde su código Java regresen al programa SQL Server que realiza la llamada. Proporciona una clase de
controlador para los datos de entrada y salida, que se ocupa de ciertos tipos de datos y maneja la configuración
de seguridad para su.frascodirectorio.
A continuación, debe establecer una variable de entorno (COLOCARcon Windows,exportarcon Linux) llamado
JRE_HOMEpara conocer la ubicación de la JVM en su sistema. Asegúrese de que esto esté configurado de
forma permanente, ya sea en el panel de control de Windows o en la configuración del entorno de su
distribución de Linux.
236|Marco de extensibilidad de servicios de aprendizaje automático
Una vez completados estos pasos, la instancia de SQL Server estará configurada y estará listo para
comenzar. Aquí está el proceso completo para usar Java en SQL Server 2019:
importar com.microsoft.sqlserver.javalangextension.PrimitiveDataset;
importar com.microsoft.sqlserver.javalangextension.
AbstractSqlServerExtensionExecutor;
Y si se trata de datos entrantes, lo más probable es que también necesite estas líneas:
importar java.util.LinkedHashMap;
importar java.util.LinkedList;
importar java.util.ListIterator;
Ahora, puede utilizar las extensiones Java de SQL Server de esta manera:
Y luego comienza a crear tus clases. Su conjunto de datos de entrada y cualquier parámetro toman esta
forma:
Nota
Si esto parece un poco complejo, la documentación de las extensiones de Java en SQL Server 2019 tiene
un ejemplo extenso que involucra el uso deexpresión regular (Expresiones regulares ) en Java que
puedes recorrer. Los desarrolladores de Java estarán familiarizados con estos fragmentos de código;
como profesional de datos, la mayoría de las veces simplemente obtendrá los.frascoarchivo
directamente del desarrollador.
3. Establezca un parámetro para que SQL Server encuentre las bibliotecas. Tiene dos opciones: puede
utilizar una variable de entorno del sistema llamadaRUTA DE CLASESque tiene la ubicación de tu.
frascoarchivos, o puede utilizar el siguiente código para establecer dónde.frascose ubican los
archivos. Este último es el método preferido. He aquí un ejemplo:
EXEC sp_execute_external_script
@idioma = N'Java'
, @script = N'paquete.sumlines'
, @input_data_1 = N'SELECT CONVERT(LineTotal to INT) FROM Compras. Detalle del
pedido de compra'
, @params = N''
con conjuntos de resultados ((sumlines int));
Como puede ver, trabajar con Java en SQL Server es un poco más complejo que usar las
extensiones R y Python, pero el poder y la flexibilidad del lenguaje Java brinda beneficios al taller
que se ha estandarizado en el desarrollo de Java. Esto permite que todo el sistema de
procesamiento de datos exista dentro de una única plataforma y límite de seguridad.
Como ejemplo, si creara la solución de agrupamiento de k-means en torno a las devoluciones de los
clientes mencionadas anteriormente, podría guardar ese modelo como un objeto binario, tal vez incluso
desde otro servidor que contenga los datos del cliente. Luego, podría implementar ese modelo en un
servidor ubicado en cada tienda y ejecutarlo usando elPREDECIRdeclaración para alertar a los
vendedores sobre el comportamiento que podría dar lugar a una devolución, evitando así la
insatisfacción del cliente.
Nota
Utilizando elPREDECIRcomando también se llamaPuntuación nativa .
1. Cree una tabla con una columna binaria para almacenar el modelo entrenado.
2. Cree un modelo de predicción utilizando los algoritmos respaldados por la puntuación nativa.
Puede encontrar una buena referencia sobre los algoritmos que puede utilizar aquí:https://
docs. microsoft.com/en-us/sql/advanced-analytics/sql-native-scoring?view=sql-server-2
https://docs.microsoft.com/en-us/sql/advanced-analytics/r/how -to-do-realtimescoring?
view=sql-server-2017017 .
Aprendizaje automático mediante el procedimiento almacenado sp_rxPredict |239
Otro método que puede utilizar para puntuar predicciones en la base de datos es utilizar elsp_rxPredecir
procedimiento almacenado. Como puede ver en el nombre, este proceso implica el uso de RevoScaleRo
elMicrosoftMLfunciones (puede encontrar una lista completa de los algoritmos en esas funciones en el
siguiente enlace).
Nota
Usarsp_rxPredict, deberás habilitar eltiempo de ejecución de lenguaje común
(CLR ) en SQL Server, pero no es necesario instalar R o Python. También deberá habilitar la
puntuación en tiempo real siguiendo las instrucciones aquí:https://docs.microsoft. com/en-
us/sql/advanced-analytics/real-time-scoring?view=sql-server-ver15#bkmk_ enableRtScoring
.
Una vez completados los requisitos previos, debe seguir este proceso para calificar las
predicciones en T-SQL:
3. Llame alsp_rxPredictfunción.
Aquí hay un ejemplo simple que supone que tiene un modelo almacenado en la base de datos en una tabla
llamadamis_modelosy el nombre del modelo espredecir_compra:
EXEC sp_rxPredict
@modelo = @nombredelmodelo,
Para ver un ejemplo completo de este proceso y las funciones que puede utilizar, visite:https://
docs.microsoft.com/en-us/sql/advanced-analytics/real-time-scoring?view=sqlserver-ver15 .
240|Marco de extensibilidad de servicios de aprendizaje automático
Estos términos pueden resultar un poco confusos. En R, un paquete contiene una o más funciones, archivos de ayuda
y datos de muestra, todos agrupados como archivos. Una biblioteca R es donde se almacenan los paquetes.
Dado que Java es un lenguaje orientado a objetos, las bibliotecas contienen clases. Dado que Java es
independiente del sistema operativo, incluye laBiblioteca de clases Java (JCL ), que proporciona acceso
de bajo nivel a llamadas para cosas como acceso a archivos y redes. Estos suelen estar incluidos en un
archivo Java (.frasco) archivo para fácil transporte, y cargado con un RUTA DE CLASESllame como vio en
la discusión sobre el uso de Java en SQL Server.
En todos los casos, la gestión de paquetes y bibliotecas es de suma importancia. Los paquetes y
bibliotecas afectan todo lo que el sistema puede hacer, desde la funcionalidad hasta la seguridad. La
versión del entorno del lenguaje y la versión del paquete o biblioteca también se afectan entre sí.
Debido a que está instalando un servidor de idiomas junto con SQL Server, tiene todas estas
preocupaciones y más, ya que está mezclando un entorno de usos múltiples con lenguajes que a
menudo están destinados a que interactúe un solo programador.
Un curso completo sobre gestión de paquetes y bibliotecas está más allá del alcance de este
libro, pero debe saber que es una de las áreas más importantes que deben comprender el
desarrollador, administrador y científico de datos.
En los lenguajes R y Python, Microsoft incluye varios paquetes y bibliotecas para el aprendizaje
automático. Se almacenan en la ubicación que seleccione durante la instalación, que es
diferente para Linux y Windows.
Nota
Puede encontrar la ruta de sus bibliotecas y paquetes usando código estándar R, Python y Java,
usando elsp_execute_external_scriptprocedimiento almacenado. Puede obtener una lista de los
paquetes y bibliotecas que están actualmente instalados de la misma manera.
Gestión |241
Puedes instalar nuevos paquetes y bibliotecas que necesites en SQL Server con varios métodos,
específicos para cada idioma, como administrador desde la línea de comandos de tu servidor.
Sin embargo, el mejor método para R, Python y Java con SQL Server 2019 es el T-SQL mejorado.
CREAR BIBLIOTECA EXTERNAdominio. Tendrás que ser parte delpropietario de db_rol, y luego
simplemente descarga los paquetes o bibliotecas a la carpeta apropiada para ese idioma.
Después de eso, es una llamada estándar al proceso de instalación en cada idioma, ya que el
paquete o biblioteca estará disponible en la ubicación segura para ese idioma.
EXEC sp_execute_external_script
@idioma =N'R',
@script=N'biblioteca(paquete personalizado)'
Es un proceso similar para Python. Viste un ejemplo de la llamada al proceso Java anteriormente: si bien
Java está más involucrado, la administración de paquetes asociada con esta declaración es bastante
trivial.
Gestión
La gestión de cualquier sistema implica seguridad, protección, seguimiento, rendimiento y optimización.
En el caso de SQL Server Machine Learning Services, la parte de seguridad (copias de seguridad,
disponibilidad y similares) son parte del entorno de la base de datos. El ajuste del rendimiento implica
optimizar el código y las llamadas T-SQL y específicos del lenguaje. Eso le deja con un conjunto específico
de procesos y herramientas para la seguridad, así como para el monitoreo y el rendimiento.
242|Marco de extensibilidad de servicios de aprendizaje automático
Seguridad
En su mayor parte, la seguridad para utilizar Machine Learning Services sigue el mismo modelo que
otros elementos asegurables de SQL Server. La persona o entidad principal de SQL Server que llama a
las funciones del marco de extensibilidad de Machine Learning Services debe ser un usuario de base de
datos de Windows o SQL Server, debe tener acceso a las tablas o vistas que están pasando, la capacidad
de escribir datos (si lo hacen con los datos devueltos) y poder crear procedimientos almacenados si
están creando código nuevo para ejecutar los modelos.
Monitoreo y desempeño
Después de haber instalado, configurado y asegurado su sistema, ahora es el momento de configurar
el monitoreo del sistema. Esta sección cubre las herramientas y procesos que debe agregar a su
proceso actual de monitoreo y ajuste para sus instancias de SQL Server: dimensionamiento,
configuración de monitoreo, registro e informes, establecimiento de una línea base, etc.
Para monitorear los procesos que conforman el marco de extensibilidad de Machine Learning Services, puede usar
herramientas de monitoreo de procesos estándar de Windows o Linux. Busque componentes que se ejecuten como
servicios o demonios que se muestran en el diagrama de componentes de la arquitectura anteriormente en esta
sección para incluirlos en las herramientas de monitoreo de su sistema operativo.
Para los componentes específicos del motor SQL Server, el primer lugar para comenzar es con un
conjunto de informes de Microsoft SQL Server Reporting Services escritos enIdioma de definición de
informe (RDL ) formato específicamente para servicios de aprendizaje automático. Descargue los
informes aquí:https://github.com/Microsoft/sql-server-samples/tree/master/samples/features/machine-
learning-services/ssms-custom-reports y luego siga las instrucciones de instalación de esos
componentes. Puede encontrar todo en estos informes, desde los eventos extendidos que puede
monitorear hasta una lista de los paquetes y bibliotecas instaladas para cada idioma. La mayoría de los
informes también incluyen un botón para el script T-SQL utilizado para obtener esta información, por lo
que este es el mejor lugar para comenzar.
Gestión |243
Después de instalar los informes estándar para Machine Learning Services, puede pasar a
utilizar elVistas de gestión dinámica (DMV ) en SQL Server 2019 incluido con Machine
Learning Services. Estas vistas funcionan de manera similar a otras DMV en SQL Server y
exponen todo, desde información de la sesión hasta el uso de recursos, y también objetos
específicos de Machine Learning Services, como los paquetes y bibliotecas instalados, y mucho
más. Puede encontrar una lista completa de estos DMV aquí:https://docs.microsoft. com/en-us/
sql/advanced-analytics/administration/monitor-sql-server-machinelearning-services-using-
dynamic-management-views?view=sqlallproducts-allversions .
Para encontrar información detallada sobre todas las partes de Machine Learning Services que se
ejecutan en su instancia de SQL Server 2019, puede utilizar el subsistema de eventos extendidos de
SQL Server. La lista completa de eventos que puedes monitorear está aquí:https://
docs.microsoft.com/en-us/sql/advanced-analytics/r/extended-events-for-sql-server-r-services?
view=sqlserver-ver15 .
Una vez que haya habilitado su monitoreo, puede establecer límites sobre cómo los Servicios de
aprendizaje automático en SQL Server 2019 usan la CPU, la memoria y algunos de los componentes
de E/S en su instancia. Puede leer una discusión completa sobre este proceso aquí; tenga en cuenta
que esta función solo está disponible en Enterprise Edition:https://docs.microsoft.com/en-us/sql/
advanced-analytics/administration/resource-governance?view=sql-server-ver15 .
El ajuste del sistema sigue el mismo proceso que cualquier otra aplicación de producción de SQL
Server. Utilizando los datos de monitoreo que ha estado recopilando, dimensionará su servidor,
refactorizará su código (tanto T-SQL como el lenguaje que está utilizando), ampliará y ampliará los
sistemas y ajustará constantemente las esperas principales en el sistema.
Puede leer una discusión completa sobre el ajuste del rendimiento del modelo y otras
tareas enhttps://docs.microsoft.com/en-us/sql/advanced-analytics/r/managing-
andmonitoring-r-solutions?view=sql-server-ver15 .
Ahora que tiene instalados, configurados y protegidos los servicios de aprendizaje automático, está listo
para usar las herramientas de monitoreo y rendimiento para establecer una base de uso cero para su
sistema. Esa línea de base se utiliza como comparación con las mediciones que registra más adelante para
encontrar deltas para el rendimiento de cada componente.
Con una comprensión del aprendizaje automático, ahora tiene una plataforma para implementar varios lenguajes para
trabajar con él. A continuación, combinemos eso con un proceso que combine los servicios de aprendizaje automático
con muchas otras características de SQL Server 2019 para obtener una plataforma completa de aprendizaje
automático.
244|Marco de extensibilidad de servicios de aprendizaje automático
En inteligencia empresarial, se puede construir un único cubo que pueda responder muchas
preguntas. Pero en la ciencia de datos, no se puede utilizar un algoritmo k-means en una predicción
que requiere regresión lineal, y las características y etiquetas necesarias para cada una serían
completamente diferentes: cada pregunta que desee responder requiere un nuevo proyecto. Algunos
serán pequeños, otros serán más implicados, pero todos requieren que se trabaje en equipo.
En los primeros días de la ciencia de datos, un científico de datos definiría un área problemática, obtendría
y seleccionaría un conjunto de datos, limpiaría los datos, realizaría modelos estadísticos, seleccionaría el
modelo apropiado, implementaría el modelo para las predicciones o clasificación y luego compararía los
resultados. a la "verdad fundamental" de lo que realmente ocurrió para que el modelo pudiera ser
reentrenado y mejorado. Con el tiempo, el científico de datos se vio abrumado por múltiples proyectos y
dedicó gran parte de su tiempo a la limpieza de datos, la programación u otras tareas no algorítmicas. Es
posible que el científico de datos no conozca la ubicación de ciertos conjuntos de datos, el modelo de
seguridad empresarial, la infraestructura de red o cualquiera de las docenas de otros factores del
proyecto.
Por estas razones, se han desarrollado equipos en torno a la práctica de la ciencia de datos,
incluidos ingenieros de datos, científicos de datos, desarrolladores y analistas de negocios. Con
este arreglo complejo, necesita un proceso formal para controlar el proyecto con roles y tareas
definidas para cada miembro del equipo, y una forma de comunicarse entre cada etapa del
proyecto.
El TDSP se compone de cinco "fases", cada uno con pasos definidos. Echemos un vistazo a cada
uno de estos y dónde se asignan a las características y componentes de SQL Server 2019 con
Machine Learning Services.
Uso del proceso de ciencia de datos en equipo con servicios de aprendizaje automático |245
La parte más importante de un proyecto de ciencia de datos, incluso más que el algoritmo, los lenguajes,
la plataforma y cualquier otro componente, es asegurarse de tener un problema claramente definido que
desea resolver. SQL Server 2019 lo ayuda en esta área al garantizar que la organización haya agotado
todas las demás funciones de consulta, informe y inteligencia empresarial para obtener la respuesta que
busca. Muchos proyectos de aprendizaje automático podrían reemplazarse con un informe o un cubo bien
diseñado.
Los problemas de aprendizaje automático implican las "cinco preguntas" definidos en este capítulo. Su
organización debe tener muy claro lo que quiere saber y qué hará cuando lo descubra. Tenga en cuenta
que una predicción equivale a un proyecto de ciencia de datos, a diferencia de un proyecto de informes
que puede responder muchas preguntas en un solo informe.
Puede utilizar T-SQL, Reporting Services, R, Python y Java para explorar los datos para
análisis de patrones, limpieza y más.
Fase 3: Modelado
Utilizando elPREDECIRdeclaración, lasp_rxPredictprocedimiento almacenado, Python, R y Java, puede
crear, entrenar y probar modelos y luego almacenarlos en el motor de base de datos o en otro lugar.
Fase 4: Implementación
Con los modelos almacenados en la base de datos, puede llamar a un procedimiento almacenado para realizar
una única predicción o clasificación directamente desde el código T-SQL enviado desde una aplicación cliente.
También puede ejecutar el procedimiento almacenado que contiene la llamada en una tabla de datos,
almacenando las predicciones y otros datos en otra tabla para usarlos en informes, consultas o automatización.
Además, puede exportar los modelos de la base de datos en una secuencia binaria a otra ubicación para
que otro sistema los utilice en la puntuación.
246|Marco de extensibilidad de servicios de aprendizaje automático
SQL Server 2019 proporciona todo lo que necesita para crear una ecoestructura completa de ciencia
de datos para arquitecturas seguras (locales, en la nube o híbridas) para cualquier proyecto que su
organización necesite, utilizando múltiples lenguajes y bibliotecas para preparar su entorno de ciencia
de datos para el futuro.
Si desea seguir un tutorial completo que incluya todos estos procesos y herramientas en un
ejemplo de agrupación en clústeres, consulte:https://aka.ms/sqlserverml .
SQL Server 2019 grande
9
Clústeres de datos
EnCapítulo 8, Marco de extensibilidad de los servicios de aprendizaje automático, aprendió sobre los servicios de
aprendizaje automático mediante los servicios de aprendizaje automático de SQL Server. La fase de entrenamiento del
desarrollo del modelo requiere una gran cantidad de datos; es mejor tener más ejemplos para que los algoritmos
"aprendan" los resultados. de. Sin embargo, el aprendizaje automático no es el único caso de uso que requiere mucha
información: todo, desde la inteligencia empresarial hasta la minería de datos, aprovecha grandes conjuntos de datos.
La función Big Data Clusters de SQL Server 2019 facilita el trabajo con conjuntos de datos mucho más grandes que los
tradicionalesSistema de gestión de bases de datos relacionales (RDBMS ) normalmente puede manejar, al tiempo
que incorpora otros beneficios y características también.
Los primeros dispositivos de almacenamiento magnético eran grandes, voluminosos y costosos, y requerían
enormes cantidades de energía y refrigeración. También fracasaron con bastante frecuencia. Pero, a medida que
pasó el tiempo, los tamaños de los componentes informáticos (especialmente el almacenamiento) se han reducido
y los costos han disminuido. Sin embargo, las capacidades, confiabilidad y potencia de esos componentes han
aumentado. Esto nos permite almacenar muchos más datos y, dado que contamos con esas tecnologías por más
tiempo, hemos podido almacenar más datos con el tiempo.
¿Y qué podemos hacer con todo ello? ¿Por qué conservarlo? Dado un sistema que procesa y entrega los
datos con la suficiente rapidez, en realidad existen bastantes ejemplos de casos de uso específicos para
grandes conjuntos de datos. El uso más básico de big data es simplemente consultarlo, utilizando T-SQL
estándar oExpresiones multidimensionales (MDX ).
Para ampliar su entorno informático, necesita varias computadoras o nodos. Pero, por
supuesto, agregar y quitar computadoras físicas de la ecoestructura es costoso y requiere
mucho tiempo, por no decir complicado.
"Virtualmente" Las computadoras son una mejor solución. Una tecnología llamadahipervisorutiliza
software para representar la CPU, las E/S, la memoria y los componentes de red de la computadora física
en el instalador de un sistema operativo, ejecutando una computadora completa dentro de una
computadora. El sistema operativo se instala en un archivo que actúa como un disco duro, encapsulando
toda la computadora en un archivo.
Esta solución permite un mayor grado de flexibilidad para crear y quitar computadoras, es
mucho menos costosa y es más rápido moverlas. Por ejemplo, puede utilizar una única
computadora física para alojar varias computadoras virtuales que ejecutan Hadoop y
apagarlas y encenderlas rápida y fácilmente.
Sin embargo, incluso este nivel de abstracción tiene desventajas. Sólo puedes dividir los
componentes físicos de la computadora tantas veces antes de que el rendimiento se vea afectado.
Pero el mayor inconveniente es que estás reinstalando varias veces el sistema operativo, con todos
sus drivers, parches, bibliotecas para mostrar la pantalla y trabajar con el ratón, etcétera. En
realidad, sólo desea ejecutar Hadoop, Python o algún otro programa de software, pero, en una PC
virtual, debe asumir el costo de todo el sistema operativo.
Aplicación de arquitecturas escalables a SQL Server |251
Contenedores
Los contenedores ofrecen una mejor solución. Un sistema contenedor no representa los subsistemas de
CPU, E/S, memoria y red en una PC para que pueda instalar un sistema operativo completo. En cambio,
utiliza un motor de ejecución de contenedor en el sistema operativo actual. "Capas" de archivos binarios
que se ejecutan en el motor de ejecución del contenedor, aislados de otros contenedores y del sistema
operativo host.
Las ventajas de un sistema de contenedores se ilustran mejor con un ejemplo. Suponga que desea
ejecutar un programa Python. Para hacer eso, necesita una computadora, un sistema operativo, los
archivos binarios del programa Python, cualquier código que desee ejecutar y cualquier activo
(archivos de gráficos, bases de datos y archivos de texto, etc.) que cree y use en el programa. que se
instala para cada versión de la aplicación que desea ejecutar. En una máquina virtual, la
arquitectura se ve así:
Las ventajas de esta arquitectura son que el sistema solo lleva los activos que necesita para ejecutar
el programa Python y ese entorno está completamente encapsulado: su propia versión de Python,
su aplicación y sus archivos. Si el motor determina que es el mismo Python en todo momento, solo
carga esa versión una vez. Podría volver a implementar una copia de ese programa con una versión
diferente de Python o su aplicación, y funcionaría de forma independiente.
La otra gran ventaja asociada con este sistema es cómo se crea e implementa un
contenedor. El proceso general es declarativo:
2. Tú "compones" este archivo a una imagen, que es un archivo binario que contiene todos esos activos.
Puede almacenar esta imagen en un repositorio público o privado. Luego puedes ejecutar unjalar
comando para traer la imagen binaria a su sistema.
4. Dependiendo de lo que su programa necesite hacer, puede permitir el acceso a la red dentro
y fuera del contenedor.
Aplicación de arquitecturas escalables a SQL Server |253
Kubernetes
kubernetes (Griego para piloto de barco) es un sistema de orquestación para contenedores.
También proporciona sistemas de almacenamiento y redes mejorados que permiten un entorno de
clúster sólido. Se comprende mejor comenzando con las definiciones de sus componentes. Ya
conoces el componente más básico: el contenedor. Para administrar los contenedores que desea
implementar, Kubernetes implica los siguientes componentes adicionales:
Un clúster de Kubernetes se controla con un conjunto deYAMLarchivos que dictan el diseño de los
componentes anteriores. El programa de control principal para implementar, configurar y
administrar un clúster de Kubernetes se llamakubectl.
Por supuesto, hay mucho más que saber sobre Kubernetes; un buen lugar para comenzar
es aquí:https://kubernetes.io/docs/tutorials/kubernetes-basics/ .
Ahora que comprende qué constituye big data, los usos de big data, una forma de escalar, calcular y procesar
big data, los contenedores para realizar ese procesamiento y un mecanismo de agrupación para controlar los
contenedores, todo lo que queda para SQL. El servidor para escalar de esta manera es la capacidad de
ejecutarse en estos componentes, la mayoría de los cuales se ejecutan en Linux.
Los orígenes de SQL Server son de Unix. El código base original para SQL Server tenía licencia de
Sybase, pero todo el producto se ha reescrito con el tiempo para tener únicamente componentes
basados en Microsoft Windows desarrollados por Microsoft. Sin embargo, las arquitecturas que
aprenderá en este capítulo están basadas en gran medida en Linux.
Aplicación de arquitecturas escalables a SQL Server |255
Aprendió mucho sobre el uso de SQL Server en Linux en un capítulo anterior, pero, a modo de revisión, para
permitir que los clientes basados en Linux trabajen con SQL Server, Microsoft implementó la Capa de
abstracción de plataforma (CAMARADA ) para actuar como una "cuña" entre las llamadas de nivel más bajo
en SQL Server y el sistema operativo en el que se ejecuta. PAL también permite que SQL Server se ejecute no
sólo en instalaciones básicas de Linux, sino también en tecnologías de contenedores que conoció
anteriormente. Esto también significa que todo el sistema se puede implementar usando Kubernetes, como vio
anteriormente.
Nota
Existen diferentes distribuciones de Linux y, si bien los comandos básicos funcionan de la
misma manera en la mayoría, la principal diferencia que notará es la administración de
paquetes. Un administrador de paquetes de Linux dicta cómo instalar, actualizar y eliminar
software; generalmente es un comando más que un proceso gráfico. Controlar Capítulo 5,
Servidor SQL 2019 en Linux, para más información.
polibase
Aprendió sobre PolyBase enCapítulo 5,Virtualización de datos, y la función de clúster de big data aprovecha
esta tecnología en gran parte de su escala. SQL Server puede almacenar y procesar datos en el rango de
petabytes, siempre que se proporcione el hardware y la planificación adecuados. A RDBMS tiene ciertos
requisitos sobre el modelo de coherencia que garantiza la seguridad y confiabilidad de los datos, lo que hace
que los tamaños más grandes sean más desafiantes. AProcesamiento masivo en paralelo (MPP ) el sistema
divide los datos y el procesamiento de una manera similar al ejemplo discutido hace un momento, pero esta
no es la forma en que funciona un RDBMS de forma nativa. Sin embargo, hay formas de manejar conjuntos
de datos más grandes dentro de un entorno de SQL Server, y las características del clúster de big data de
SQL Server 2019 implementan varios componentes para trabajar con esos grandes conjuntos de datos.
Aprovechar las funciones de escalabilidad horizontal de PolyBase es la clave para la función de clúster
de big data de SQL Server 2019. Como aprendiste enCapítulo 5,Virtualización de datos, PolyBase le
permite consultar múltiples fuentes de datos y, si bien los clústeres de big data permiten esas fuentes,
también le permite consultarSistema de archivos distribuido Hadoop (HDFS ) datos directamente
como verás en un momento. Además de esa capacidad, el sistema HDFS del Big Data Cluster puede
"montar" datos. otro almacenamiento (como fuentes S3 y Azure), lo que permite otra forma de
virtualizar datos. Veamos ahora cómo encaja todo esto.
256|Clústeres de big data de SQL Server 2019
Todos los componentes de los clústeres de big data de SQL Server 2019 se ejecutan en un clúster de
Kubernetes, que ya conoce. Varios nodos en el clúster brindan las capacidades que necesita para
ejecutar sus cargas de trabajo de datos, desde el propio SQL Server hasta los sistemas de control, el
almacenamiento, Spark y HDFS. Esto aumenta la cantidad de fuentes de datos externas que puede
consultar, amplía el procesamiento de consultas, proporciona computación push-down para Parquety
CSVarchivos, e incluso le permite montar otro almacenamiento.
Una vez más, es útil utilizar un diagrama para comprender cómo encaja cada parte:
Figura 9.5: Componentes del clúster de big data de SQL Server 2019
Nota
Puede especificar la cantidad de pods/nodos de Kubernetes para muchos de estos
componentes, por lo que el diagrama anterior es simplemente una disposición arbitraria
para explicar cómo funciona. Un clúster de big data puede utilizar uno o varios nodos en
diversas disposiciones según cómo desee configurarlo.
Instalación y configuración |257
Están sucediendo muchas cosas en este diagrama, por lo que aquí hay un gráfico de lo que proporciona
cada componente dentro del sistema de clúster de big data:
En un momento, recorrerá los patrones de programación comunes para esta arquitectura, así que
tenga esta sección a mano como referencia mientras trabaja en las rutas de datos.
Instalacion y configuracion
Ahora que comprende los componentes del clúster de big data, puede planificar su
instalación. Para una discusión completa de sus opciones, puede encontrar una referencia
completa para cada una de estas opciones aquí:https://docs.microsoft.com/en-us/sql/big-
data-cluster/deploy-get-started?view=sqlallproducts-allversions .
258|Clústeres de big data de SQL Server 2019
Hagamos ahora un breve recorrido por las principales opciones que tiene para implementar clústeres de
big data de SQL Server 2019. Luego, examinará los comandos de instalación principales y conocerá otras
opciones de implementación.
Nota
Una descripción completa del proceso de planificación e instalación es bastante extensa y
usted debe tomarse su tiempo y revisar minuciosamente la documentación de instalación
antes de implementar el sistema en producción. Aquí cubriremos los conceptos principales de
instalación y configuración para que tenga una idea del proceso general.
Opciones de plataforma
Tiene una amplia gama de entornos posibles para implementar clústeres de big data de SQL Server
2019. Estos van desde utilizar un servicio de un proveedor de nube hasta configurar su propio
entorno dentro de un límite seguro que usted establezca. Dado que los clústeres de big data de SQL
Server 2019 utilizan Kubernetes, necesitará tener un clúster del tamaño y almacenamiento
adecuados para ejecutar el producto, que verá para cada entorno en la siguiente sección. Una vez
que haya verificado los recursos de su clúster, instalará y configurará Kubernetes antes de
implementar un clúster de big data de SQL Server 2019 en él.
Tiene tres objetivos principales para crear un clúster de Kubernetes (que incluye Cambio
abierto):
Con diferencia, la forma más fácil, rápida y sencilla de instalar Kubernetes es no instalarlo en
absoluto. La nube de Microsoft Azure tiene un servicio llamado AKS que puedes usar para un
clúster de Kubernetes con solo unos pocos clics. Puede leer más sobre AKS aquí:https://
docs.microsoft.com/en-us/azure/aks/intro-kubernetes .
Puede leer más sobre cómo configurarlos, junto con las especificaciones para un sistema
"base". configuración, aquí:https://docs.microsoft.com/en-us/sql/big-data-cluster/deployon-
aks?view=sqlallproducts-allversions .
Una vez que se completa la implementación de Kubernetes en AKS, puede continuar con la instalación de los
clústeres de big data. Más sobre esto en un momento.
Una vez más, los tamaños de los nodos y la configuración de almacenamiento son importantes
para el funcionamiento del clúster de big data. Puedes leer más sobre la "base" configuración
de un clúster de big data implementado localmente aquí:https://docs.microsoft.com/en-us/sql/
big-data-cluster/deploy-with-kubeadm?view=sqlallproducts-allversions .
Una vez que se completa la implementación local de Kubernetes, puede continuar con la
instalación de los clústeres de big data. Más sobre esto en un momento.
Otra opción para crear un clúster de Kubernetes es utilizarminikubo. Esta utilidad crea un clúster de un
solo nodo, adecuado sólo para desarrollo y pruebas. Debe tener al menos 64 GB de RAM,
almacenamiento rápido y amplia potencia de procesamiento para utilizar este entorno para grandes
clústeres de datos.
Nota
A menudo, puede implementar un entorno de desarrollo/pruebas de forma más rápida y económica utilizando AKS.
Los recursos para una implementación de un solo nodo enminikuboPuede resultar costoso implementarlo en su
propio sistema.
260|Clústeres de big data de SQL Server 2019
Una vez que la implementación de Kubernetes esté en marchaminikuboCuando esté completo, puede continuar
con la instalación de los clústeres de big data. Más sobre esto en un momento.
Antes de completar la configuración de Kubernetes como preparación para implementar clústeres de big
data, debe comprender los impactos en el almacenamiento al trabajar con una base de datos en un
clúster de Kubernetes. El almacenamiento confiable y duradero es esencial para un sistema de base de
datos, y Kubernetes implementa el almacenamiento duradero como volúmenes persistentes. A menudo,
el objetivo de implementación los implementa como clases de almacenamiento y AKS.kubeadm, y
minikuboTodos tienen formas ligeramente diferentes de garantizar la configuración de almacenamiento
adecuada. Puedes leer más sobre ellos aquí:https://docs.microsoft.com/en-us/sql/big-datacluster/
concept-data-persistence?view=sqlallproducts-allversions .
Con su clúster de Kubernetes implementado y sus volúmenes persistentes configurados, está listo
para crear su clúster de big data de SQL Server 2019.
La implementación de los clústeres de big data se realiza mediante un cuaderno en la herramienta Azure
Data Studio o una herramienta Python llamadaazdata. Centrémonos en elazdatautilidad. Después de
descargarlo e instalarlo (más sobre eso aquí:https://docs.microsoft.com/en-us/sql/big-datacluster/
deploy-install-azdata?view=sqlallproducts-allversions . correrásazdata, dirigido a su clúster de
Kubernetes. Elazdatala utilidad utiliza variosYAMLarchivos integrados dentro de la herramienta, que
especifica la configuración de todos los pods, nodos y servicios que conoció anteriormente. Puede
anular esas configuraciones con un interruptor cuando llama al comando o, con otro interruptor, puede
apuntar la utilidad a una ubicación separada. YAMLarchivo. Para obtener una descripción completa de
los conmutadores que puede utilizar y cómo leer la implementaciónYAML, visita:https://
docs.microsoft.com/en-us/sql/big-data-cluster/reference-deployment-config?view=sqlallproducts-
allversions . Esto describe la implementación completa usando la utilidad y cómo puede modificar esas
opciones usandoYAML archivos.
Nota
La herramienta Azure Data Studio tiene una serie de pasos que puede usar para implementar
clústeres de big data en su Kubernetes y, después de ingresar varios parámetros, ejecuta el
azdatautilidad para usted.
Instalación y configuración |261
Microsoft creó una secuencia de comandos de Python que configurará un clúster de big data completo
de SQL Server 2019 en AKS. Necesitará una suscripción a Microsoft Azure con derechos para crear los
recursos adecuados y las herramientas de instalación (como Python,kubectl, yazdata) instalado y
configurado. Con todo esto implementado, es un comando simple implementar un clúster de big data:
Python implementar-sql-big-data-aks.py
Puede leer más sobre cómo instalar las herramientas y otros preparativos para la
implementación aquí:https://docs.microsoft.com/en-us/sql/big-data-cluster/quickstartbig-
data-cluster-deploy?view=sqlallproducts-allversions .
Una vez instalado el sistema, puede ver los pods, nodos y servicios que proporciona con el
kubectlcomandos. Este, por ejemplo, obtiene los nombres de los servicios y las direcciones IP
internas y externas del servicio del controlador:
kubectl get svc controlador-svc-externo -n <nombre-de-clúster-de-grandes-datos>
Una vez que tenga esa dirección IP externa, puede usarla para enumerar todos los componentes del
clúster con laazdataherramienta. Primero, inicia sesión en el clúster utilizando la información del
comando anterior y el nombre y la contraseña que estableció durante la instalación:
Y luego puede enumerar los puntos finales que utilizará para conectarse al componente que desea:
Nota
Los puntos de conexión también se muestran en el panel del Big Data Cluster en la herramienta Azure Data Studio.
Entraremos en más detalles sobre elkubectlcomandos mientras interactúan con los clústeres de big
data de SQL Server 2019 en un momento. Hay una gran referencia sobre todos los disponibles.
kubectl comandos aquí:https://kubernetes.io/docs/reference/kubectl/cheatsheet/ .
262|Clústeres de big data de SQL Server 2019
Después de instalar su clúster de big data de SQL Server 2019, es hora de ponerlo en uso. Si bien las opciones
para aplicaciones que utilizan clústeres de big data varían desde casi cualquier cosa que pueda hacer con SQL
Server hasta trabajar con Spark, existen cuatro áreas generales para usar el sistema, con todos los rangos de
tamaños de datos: Procesamiento de transacciones en línea (OLTP)/consultas estándar , virtualización de datos,
como mercado de datos y como lago de datos con capacidades de procesamiento Spark.
Nota
Es útil consultar el diagrama de arquitectura completo para comprender el flujo de cada
una de las siguientes operaciones.
Con todas estas características en una única ubicación, puede realizar consultas en múltiples sistemas, en
múltiples bases de datos y formatos, utilizando Transact-SQL. Convierte a SQL Server en el centro de datos
de su organización.
Comencemos con un examen de la herramienta Azure Data Studio que puede usar para trabajar con
clústeres de big data.
Puede utilizar cualquier herramienta que funcione con SQL Server, incluido SQL Server Management
Studio, para ejecutar consultas en la instancia maestra del clúster de big data.
Microsoft Azure Data Studio es un editor de código fuente mejorado basado en Microsoft Visual
Studio Code y se puede instalar en Windows, Linux o Mac. Se ha modificado para tener un
conjunto especial de operaciones para conexiones a varias fuentes de datos y acepta muchas
de las extensiones en Visual Studio Code Marketplace.
Una de esas extensiones se llama "SQL Server 2019". Proporciona varias innovaciones interesantes,
incluida la ejecución de Jupyter Notebooks dentro de la herramienta e incluso tiene un kernel SQL para
ejecutar comandos T-SQL. Esos portátiles también pueden ejecutar unPySparku otro kernel relacionado
con Spark contra los clústeres de big data' Instancia de Spark, que verás en un momento. También tiene
conectores integrados para las funciones del clúster de big data, además de poder conectarse a
cualquier instancia de SQL Server.
Si bien un tutorial completo para el producto está más allá del alcance del libro, lo básico es que una vez
que haya instalado la extensión SQL Server 2019, puede registrar su servidor de clúster de big data para
acceder. Haga clic en el ícono del servidor en el panel más a la izquierda y verá tres íconos más pequeños
en el lado derecho de la barra del Servidor.
Programación de clústeres de big data de SQL Server 2019 |263
Al hacer clic en el primer icono se agrega un nuevo registro de servidor. Simplemente escriba la
dirección IP, 31433(o el nombre DNS,31433, si registró su instancia maestra con un servidor DNS), de
la instancia maestra en los clústeres de big data y el nombre y la contraseña de autenticación de SQL
Server que estableció cuando implementó el clúster de big data:
Desde allí, puede hacer doble clic en la instancia maestra y obtendrá un panel de administración y la
capacidad de ejecutar consultas y cuadernos. Utilizará esta herramienta a lo largo de este capítulo.
264|Clústeres de big data de SQL Server 2019
Una vez que haya iniciado sesión, se le presentará el panel principal de la instancia maestra de
clústeres de big data de SQL Server 2019:
Si hace doble clic en el nombre de la instancia en el lado izquierdo, obtendrá un panel que le permitirá
realizar varias tareas de administración. Haga clic derecho en el nombre de la instancia y seleccione
Nueva consultaen el menú que aparece y estará listo para escribir su código Transact-SQL.
Si desea un tutorial completo para la herramienta Azure Data Studio, además de cómo
instalarla y configurarla, consulte:https://docs.microsoft.com/en-us/sql/azure-data-studio/
tutorial-sql-editor?view=sql-server-2017 .
Operaciones relacionales
En esencia, el clúster de big data se utiliza para el almacenamiento y procesamiento de datos de SQL
Server. Puede conectarse al sistema utilizando herramientas estándar de SQL Server (como SQL Server
Management Studio o Azure Data Studio) de la misma manera que cualquier instancia de SQL Server,
aunque el puerto TCP/IP es el puerto 31433 de forma predeterminada, como vio en la último kubectl
dominio. También puede conectarse a él desde cualquier aplicación con la que pueda conectarse a SQL
Server, por ejemplo, utilizando .NET, Python u otra aplicación. La idea general es que "es sólo SQL Server".
Programación de clústeres de big data de SQL Server 2019 |265
Tenga en cuenta que, dado que la instancia maestra de SQL Server en el clúster de big data se ejecuta en un
contenedor de Linux, tiene acceso a la mayoría de las mismas funciones y configuraciones disponibles en SQL
Server en Linux. También es importante tener en cuenta que los servicios de aprendizaje automático de SQL
Server están instalados pero deben estar habilitados. Los mismos comandos y configuraciones que aprendió
en el último capítulo se aplican a la instancia maestra de SQL Server en clústeres de big data.
Las consultas que escriba para la instancia maestra pueden funcionar no solo con datos relacionales de
SQL Server, sino también con otras fuentes de datos dentro y fuera del clúster, de forma híbrida. Sus
desarrolladores escriben código T-SQL y pueden aprovechar los datos de otros sistemas. Aquí hay una
consulta estándar que puede ejecutar:
/* Versión de la instancia */
SELECT @@VERSION;
IR
/* Configuración general */
USE master;
IR
EXEC sp_configure;
IR
UNIÓN INTERNA
SELECCIONAR * de sys.master_files
266|Clústeres de big data de SQL Server 2019
Y hay más pruebas de que "es sólo SQL Server" es que simplemente puede copiar un archivo de respaldo al
sistema de archivos del pod de instancia maestra usando elcp kubectldominio:
Y luego restaure esa copia de seguridad, incluso si se realizó en una versión anterior de SQL Server o
en Microsoft Windows, con los mismos comandos que usa en cualquier otra instancia:
/* Agregar las bases de datos de clientes para importadores de todo el mundo */
USE [master]
CON ARCHIVO = 1
, REEMPLAZAR
IR
Nota laCON MOVIMIENTOcláusula, tal como lo usaría en una instancia de SQL Server basada en
Microsoft Windows, pero con las rutas modificadas para un sistema de archivos Linux. Eso es todo: no
se necesitan otros cambios para trabajar con la misma copia de seguridad de la base de datos de
Windows en el clúster de big data.
2. Esto es opcional si la fuente está basada en texto. Crear unformatoarchivo para los elementos de
datos en la fuente de datos externa.
A partir de ahí, es una simple cuestión de consultar los datos. Veamos un ejemplo de
creación y consulta de una fuente de datos externa.
IR
COMENZAR
CON (
FORMAT_OPTIONS(
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '0x22',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = VERDADERO)
);
FIN
268|Clústeres de big data de SQL Server 2019
Ahora puede consultar esos datos como si fueran un objeto de tabla estándar de SQL Server:
También hay un proceso de asistente dentro de Azure Data Studio que puede guiarlo a través del
proceso de configuración de tablas externas y, a menudo, este es el mejor lugar para comenzar.
Puedes ver un tutorial guiado de ese proceso aquí:https://docs.microsoft.com/en-us/sql/big-data-
cluster/tutorial-query-hdfs-storage-pool?view=sqlallproducts-allversions .
En algunos casos, los datos que necesita no están en formato relacional. Le gustaría incorporar
datos de casi cualquier fuente, y ahí es donde entran en juego dos componentes más en los
grupos de big data: elHDFSservicio y elChispa - chispearservicio.
Programación de clústeres de big data de SQL Server 2019 |269
Refiriéndose nuevamente aFigura 9.5, observará que en el grupo de almacenamiento hay una instancia
de SQL Server, una implementación de Spark y una implementación de HDFS. Al utilizar llamadas Spark
estándar, puede importar, manipular, combinar y realizar otras operaciones en cantidades masivas de
datos.
Puede cargar datos directamente al servicio HDFS usandocp kubectlcomandos, llamando a la API
asociada con él o usando una aplicación para cargar desde una fuente al almacenamiento
directamente.
Tenga en cuenta que en la herramienta Azure Data Studio, también puede ver los directorios de datos del nodo
HDFS justo debajo de la lista de bases de datos en laExplorador de objetospanel. Puede hacer clic derecho en esta
entrada del menú para ver un archivo, crear un directorio o incluso cargar un nuevo archivo en un directorio en el
nodo HDFS.
Además, puede montar un punto de almacenamiento en el HDFS del grupo de almacenamiento que
apunte al almacenamiento S3 de Amazon o al almacenamiento del lago de datos de Microsoft Azure
(generación 2) para ampliar el alcance del lago de datos. Aún más. Una vez que configure esa
configuración, el almacenamiento remoto es un directorio dentro de su sistema HDFS y puede acceder a
él como en el ejemplo anterior para crear una fuente de datos HDFS.
Puede leer más sobre el proceso para hacerlo y las restricciones sobre su
uso enhttps://docs.microsoft.com/en-us/sql/big-data-cluster/hdfstiering?
view=sqlallproducts-allversions .
Aprendió sobre Spark al comienzo de este capítulo. Envías trabajos de Spark (en forma de.
frascoo.pyfiles) a una API Spark, ya sea ejecutando un trabajo de Spark en Azure Data Studio,
usando un nuevo Jupyter Notebook en Azure Data Studio con el kernel apuntando a PySpark o
SparkR, o usando IntelliJ. Echemos un vistazo breve a cada uno.
Nota
Si es nuevo en el procesamiento de trabajos de Spark, aquí encontrará una breve descripción general de los
Azure Data Studio ofrece dos opciones para cargar un trabajo de Spark: usar un Juypter
Notebook y usar unEnviar trabajoacción. En Jupyter Notebook, se conectará al clúster a través
de la instancia maestra de SQL Server y luego configurará el kernel en PySpark, Scala o SparkR,
según el idioma que planee usar. Haga doble clic en el nodo de la instancia maestra en el
explorador del servidor de Azure Data Studio y accederá al panel de administración principal.
Abra el panel Big Data Clusters y se le presentará la posibilidad de abrir un nuevo Jupyter
Notebook:
Aún conectado a la instancia maestra, cambie el kernel por aquel con el que desea trabajar.
Ahora puedes crear celdas de código para ejecutar en Spark:
Lo más frecuente es que desee escribir código que contenga muchos pasos, diseñado
para escalarse a múltiples nodos. Generalmente se realizan en Java o Python.
El sistema IntelliJ le permite crear, editar e implementar trabajos de Spark. En SQL Server 2019
Big Data Clusters, esto implica instalar unKit de desarrollo de software (SDK ), elEntorno de
desarrollo integrado (IDE ) y un conjunto de herramientas para conectar IntelliJ a Microsoft
Azure (y al clúster de big data).
Con todos los requisitos previos configurados (más sobre esto más adelante), descargará e instalará el
certificado adecuado para comunicarse con el clúster o utilizará un certificado autofirmado. A partir de
ahí, usted escribe su código, se conecta al punto final del clúster de big data de SQL Server que aloja el
enrutamiento de seguridad para Spark (más sobre esto en un momento) y envía los trabajos, todo desde
el entorno IntelliJ.
Gestión y seguimiento |273
Spark puede trabajar directamente con datos en el nodo HDFS del grupo de almacenamiento o realizar una
llamada al servidor SQL utilizando varias bibliotecas en un conjunto de código. El código Java, Python, R o
SparkML también puede realizar llamadas a otras fuentes de datos y usarse para transmisión. El sistema HDFS
en el grupo de almacenamiento de SQL Server del clúster también puede albergar el.frascoy
. pyarchivos para sus trabajos de Spark. Aprenderá más sobre cómo proteger estos archivos en las secciones
siguientes.
Por supuesto, hay mucho más que aprender sobre cómo trabajar con Spark y, para obtener más
detalles, consulte:https://docs.microsoft.com/en-us/sql/big-data-cluster/spark-submitjob?
view=sqlallproducts-allversions .
Gestión y seguimiento
Aunque puede usar y programar los clústeres de big data de SQL Server 2019 con comandos T-SQL
estándar, hay bastantes componentes además de un único servidor de base de datos en el sistema.
Necesitará emplear algunas herramientas nuevas para monitorear el sistema, así como para
administrarlo.
En general, utilizará sus herramientas habituales de monitoreo de SQL Server para operaciones específicas de bases
de datos, comandos de Kubernetes para la infraestructura y herramientas de visualización y registro para obtener una
descripción general completa del sistema.
Dado que está tratando con SQL Server en clústeres de big data, desde la instancia maestra hasta el grupo de
computadoras, el grupo de almacenamiento y el grupo de datos, puede utilizar toda la gama de herramientas
de monitoreo y administración que funcionan con cualquier SQL (basado en Linux). Instancia de servidor.
Usarás el estándarVistas de gestión dinámica (DMV ), declaraciones de administración y monitoreo de T-SQL,
herramientas gráficas en SQL Server Management Studio y Azure Data Studio, y cualquier herramienta de
terceros que pueda conectar a SQL Server. Creará usuarios, objetos y más utilizando las mismas herramientas
que ha estado utilizando para la supervisión y administración de SQL Server.
Operaciones de Kubernetes
Para obtener ayuda específica sobre un comando, simplemente agregue--ayudahasta el final de ese comando:
El clúster de big data de SQL Server 2019 se implementa y administra mediante una utilidad basada en
Python llamadaazdata. Esta herramienta funciona de manera similar a lakubectlcomando, pero funciona
específicamente con el clúster de big data de SQL Server 2019.
Ya has utilizado esta herramienta para implementar tu clúster, iniciar sesión y recuperar tus puntos
finales de servicio anteriormente en este capítulo. A continuación, hay algunos otros comandos
interesantes a tener en cuenta:
Para obtener una lista completa de estos comandos y más información sobre cómo se usan, escriba:
azdata --ayuda
Para obtener información más detallada sobre cómo trabajar con elazdataherramienta, consulte:
https://docs. microsoft.com/en-us/sql/big-data-cluster/reference-azdata?
view=sqlallproductsallversions .
Debido a que la característica Big Data Cluster de SQL Server 2019 involucra múltiples componentes,
necesita una herramienta central multiplataforma para realizar dos funciones de monitoreo principales:
visualizaciones y consultas de registros. Grafana es una tecnología de código abierto que tiene
visualizaciones muy ricas y personalizables que se muestran en una página web. SQL Server 2019 Big Data
Cluster incluye Grafana como uno de los "Servicios de soporte" se muestra en el diagrama de arquitectura
general. Puede acceder a la visualización en la dirección IP que se muestra con el puerto30777en tus
kubectl obtener servicioconsulta, y con el directorio de/grafanaseleccionado:
https://direcciónipdeservicio:30777/grafana
Hay un panel general de métricas de nodo host incluido en SQL Server 2019 Big Data Cluster, y
también se incluye un conjunto específico de métricas de SQL Server que puede ver aquí:
También puede agregar sus propios paneles o personalizar las visualizaciones incluidas, exportar
las métricas o compartir el panel con otros. Para obtener información más detallada sobre cómo
trabajar con Granfana, consulte:https://grafana.com/docs/ .
276|Clústeres de big data de SQL Server 2019
Kibana es una herramienta de visualización y consulta de registros gráficos, pero incluye dos características
adicionales que la hacen más poderosa que solo una visualización de texto en una cuadrícula:León del tiempo
y visualizaciones. Timelion es un sistema de consulta y visualización que se conecta a Kibana, y es una
poderosa herramienta para consultar y manipular datos de series temporales, como suelen ser los registros.
Además, tiene la capacidad de visualizar datos en los registros para mostrar grupos de incidentes, y también
para agrupar y ver gráficos de otros elementos:
Para obtener información más detallada sobre cómo trabajar con Kibana, visite:https://www.elastic.co/
products/kibana .
Seguridad |277
Operaciones de chispa
Apache Spark se incluye tanto en el grupo de almacenamiento de SQL Server como (opcionalmente) en un grupo
de Spark adicional. Los trabajos de Apache Spark se ejecutan en varios nodos de procesamiento que acceden a un
subsistema de datos y se muestran en un gráfico. Para examinar información sobre todos estos procesos, Spark
utiliza múltiples archivos de registro, como:
Puede iniciar sesión en el clúster Spark con elcáscara de chispacomando desde el nodo Spark y luego
usar la programación Scala para leer y buscar los archivos, o incluso usar varias llamadas (como el
analizador de archivos de registro de Apache) en otro código para leer los registros. Puedes leer mas al
respecto aquí:https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-shell.html .
Si bien puede leer los registros de Spark con comandos y programación, a menudo es más fácil usar la
interfaz gráfica que proporciona Spark: el servidor de historial. Este servidor muestra los trabajos en ejecución
actualmente, el esquema gráfico de dónde se encuentran en este momento y también le permite acceder a
los registros de cada nodo, trabajo y la mayoría de los componentes dentro del sistema. Spark History Server
se muestra como un panel en la herramienta Azure Data Studio, por lo que puede trabajar desde una
ubicación para Spark.
Para obtener información más detallada sobre cómo trabajar con Spark History
Server, consulte:https://docs.microsoft.com/en-us/sql/big-data-cluster/spark-
historyserver?view=sqlallproducts-allversions .
Seguridad
La seguridad para SQL Server siempre ha tenido una función de "defensa en profundidad". estrategia.
Esto significa que comienza con la capa más externa del sistema y se asegura de tener dos áreas
identificadas y mitigadas para cada capa:AccesoyAutenticación. El acceso tiene que ver con lo que
un usuario o proceso (llamadoPrincipal) puede ver y trabajar con (llamado Objetos asegurables), y la
autenticación consiste en verificar las credenciales del director.
SQL Server tiene un entorno de seguridad muy seguro, lo que le permite controlar y monitorear el
acceso muy detallado a la plataforma, las bases de datos y los objetos de la base de datos. Admite
trabajar con cuentas y certificados de Active Directory y también con cuentas de usuario definidas y
controladas por SQL Server. También puede auditar y monitorear todas las actividades de seguridad, y
los perfiles de seguridad pueden alcanzar los niveles de seguridad gubernamentales más altos.
278|Clústeres de big data de SQL Server 2019
En un clúster de big data de SQL Server 2019, se vuelve un poco más complejo, ya que no solo se trata
de SQL Server, sino también de Spark, HDFS y cualquier aplicación que implemente.
Una discusión completa de los componentes y procesos de seguridad está más allá del tiempo que
tenemos en este capítulo, pero echemos un vistazo a los conceptos generales que debe tener en cuenta
con respecto a la seguridad.
Acceso
Antes de conocer la autorización que necesitará un usuario para realizar llamadas a SQL Server y
Spark, debe comprender los puntos finales del clúster (ofrecidos como direcciones y puertos TCP/
IP) que proporciona cada servicio. Se comprende mejor examinando las herramientas que los
requieren:
Figura 9.16: Puntos finales del clúster de big data de SQL Server 2019
Como puede ver, el método de comunicación principal para SQL Server sigue siendo el mismo.
- elFlujo de datos tabulares (SDT ), o TDS. Para todo lo demás, te conectas mediante el
protocolo HTTPS.
Ya vio la configuración inicial para los clústeres de big data de SQL Server 2019 anteriormente en este
capítulo, pero revisemos ese proceso con un poco más de detalle y centrémonos en la seguridad. En lugar de
tener que instalar Windows, unirse a un dominio y luego instalar SQL Server como lo haría normalmente, el
proceso de implementación para los clústeres de big data de SQL Server 2019 le solicita una serie de
parámetros de seguridad desde el principio que utilizará para manejar la creación. el entorno de seguridad
para usted.
Seguridad |279
Empezarás por decidir quéDirectorio Activo (ANUNCIO ) que utilizará el clúster. A partir de ahí, creará algunos
grupos de AD: un grupo de AD para el administrador del clúster para Hadoop y para el grupo de controladores,
y otro utilizado para la función de administrador de sistemas en SQL Server en el clúster. Anota los detalles que
utilizas para esos grupos; los necesitarás a continuación.
A continuación, creará una entidad principal de AD no administrativa para los usuarios de los trabajos de Spark
y para los inicios de sesión en la instancia maestra de SQL Server. Una vez más, tenga en cuenta estos detalles
para poder configurarlos en su entorno para la instalación e implementación del clúster de big data. Tenga en
cuenta que los usuarios que no sean administradores no tendrán ningún permiso en SQL Server ni en HDFS;
deberán concederse explícitamente más adelante.
A continuación, durante la implementación de los clústeres de big data de SQL Server 2019, establecerá varios
parámetros, algunos de los cuales se relacionan con los principios de AD que creó. Estos son parte de la instalación
JSON de JSON explicada anteriormente. A continuación se muestra un fragmento del tipo de variables que establecerá:
"seguridad":
{
"nombre distinguido": {nombre distinguido del dominio, incluida la ruta de la unidad organizativa}
Cada punto final utilizará esta configuración de "Active Directory para Kerberos". proceso. Atabla de clavesEl
archivo se distribuirá a cada pod que requiera autorización. La devolución de llamada al controlador AD
mediante SPN es la clave. El controlador de clúster registra cada servicio en el controlador de AD mediante un
SPN, y luego cada servicio se comunicará con el controlador de dominio como una llamada SPN.
Nota
Si no es el experto en seguridad o el administrador de dominio de su organización, es
importante trabajar con el equipo de seguridad y leer detenidamente la documentación
de seguridad de SQL Server 2019 para que todos comprendan cómo funciona la
seguridad. Una comprensión profunda es esencial para mantener un entorno seguro.
Autenticacion y autorizacion
Ahora que ha establecido el entorno AD y Kerberos del clúster de big data, puede
combinarlo con lo que sabe sobre los puntos finales del sistema para descubrir qué
sucede cuando un usuario consulta el sistema.
Para SQL Server, simplemente crea usuarios como siempre lo ha hecho en la instancia maestra. Tiene
un mecanismo Kerberos debajo para hacerse pasar por los usuarios según su configuración inicial.
Todos los pasos de Kerberos se realizan automáticamente.
Como recordará, no solo tiene un motor de SQL Server trabajando para usted en el clúster de big
data, sino también una o más instancias de Spark. Como vio en la configuración inicial del clúster,
colocar al usuario en el grupo AD adecuado le permite enviar trabajos de Spark, pero ¿qué pasa
con los datos? Recordarás que Spark funciona con HDFS, por lo que la clave para los permisos en
este entorno es usarListas de control de acceso (ACL ) (pronunciado ackles). Utilizando elazdata
herramienta, puede crear un directorio en el nodo HDFS para el entorno Spark y luego cambiar las
ACL para permitirles leer y escribir en ese directorio. Aquí hay un ejemplo que le permite a Buck
leer y escribir un directorio en HDFS:
azdata hdfs acl set --path '/bucksdata' --aclspec 'usuario:buck:rw-'
También tiene llamadas estándar compatibles con POSIX de bits adhesivos, enmascaramiento y más.
Seguridad |281
Aunque una pequeña orden deazdataes todo lo que necesitas, en realidad están sucediendo
bastantes cosas para que todo eso suceda. Por supuesto, hay mucho más que aprender sobre la
seguridad en los clústeres de big data de SQL Server, y la documentación oficial tendrá la
información más reciente y la mayor profundidad. De todos los temas de este capítulo, la
seguridad es al que debe dedicar más tiempo antes de implementar el sistema en producción. SQL
Server ha tenido durante mucho tiempo una de las plataformas más seguras de la industria, y
comprender el entorno es el primer paso para mantener la seguridad de su sistema a nivel
mundial.
SQL Server 2019 abre nuevas posibilidades para los desarrolladores al tiempo que crea y amplía
características introducidas anteriormente. Este capítulo se centrará en algunas de estas características. Si
bien no se trata en este capítulo, SQL Server 2019 se puede ejecutar en contenedores Docker y adaptarse
a flujos de trabajo de DevOps modernos. SQL Server 2019 se puede utilizar en casi cualquier entorno de
desarrollo, utilizando controladores nativos e interfaces ODBC. La lista es larga e incluye lo siguiente:
• Todos los lenguajes .NET que utilizan ADO.Net, ODBC, Entity Framework y otros sistemas de
mapeo relacional de objetos
•Java
•PHP
•R
• Pitón
• Rubí
284|Mejorando la experiencia del desarrollador
Hay una serie de herramientas que puede utilizar para desarrollar y administrar proyectos de
SQL Server. Estos incluyen Visual Studio, SQL Server Management Studio, Azure Data Studio y,
especialmente para el desarrollo multiplataforma, Visual Studio Code. Visual Studio Code es
una herramienta moderna y extensible que se ejecuta en Mac, Linux y Windows y admite
docenas de lenguajes de programación.
Para obtener más información y una descarga gratuita de Visual Studio Code, visitehttps://código.
visualstudio.com/ .
Para obtener más información sobre las novedades de SQL Server 2019, visite
https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-serverver15?
view=sqlallproducts-allversions .
Base de datos de gráficos SQL |285
SQL Graph Database tiene potentes funciones para analizar datos complejos. En una base de datos de
gráficos, las relaciones son una característica incorporada que se puede cambiar fácil y dinámicamente.
Compare esto con una base de datos relacional, donde las relaciones se crean en tiempo de diseño. Si bien
las relaciones se pueden modificar, no es eficaz hacerlo de forma dinámica. Cuando se utiliza una base de
datos relacional, existe una penalización en el rendimiento tanto para lecturas como para escrituras que
empeora a medida que las relaciones se vuelven más complejas.
Con las bases de datos relacionales tradicionales, se pueden establecer relaciones entre
entidades (tablas), pero son algo fijas, engorrosas y difíciles de mantener y cambiar.
Una base de datos de gráficos organiza los datos en nodos y aristas. Un nodo puede representar
una persona, producto, venta, dirección o cualquier otra información que almacenaría en una
tabla relacional.
Las relaciones se almacenan en bordes, que se pueden actualizar dinámicamente y expresar relaciones
como unidireccionales o bidireccionales. No existe un límite práctico en el número de aristas o las
relaciones almacenadas en ellas. Los operadores especiales le permiten filtrar datos según la información
del borde.
Cada borde también puede almacenar datos adicionales sobre la relación. Por ejemplo, entre
clientes y pedidos, la tabla perimetral puede contener el número de pedidos.
SQL Graph Database, o SQL Graph, es un conjunto de funciones que organizan datos en nodos y bordes.
En SQL Graph, las tablas de nodos contienen datos y las tablas de borde contienen relaciones. Las tablas
perimetrales hacen que incluso las consultas complejas sean muy eficientes de ejecutar.
286|Mejorando la experiencia del desarrollador
Azure Data Studio es otra herramienta poderosa para ingenieros y científicos de datos. Tiene
soporte para exploración de datos tanto con comandos SQL tradicionales como también con
cuadernos estilo Jupyter.
SQL Server 2017 presentó compatibilidad con SQL Graph por primera vez. SQL Server 2019 amplía
este soporte en las siguientes áreas:
• Restricciones de borde
https://docs.microsoft.com/en-us/sql/relational-databases/graphs/sql-
grapharchitecture?view=sql-server-2017
Base de datos de gráficos SQL |287
SQL Graph puede resultar especialmente útil para relaciones de muchos a muchos. Si bien SQL Server
normal puede manejarlos, pueden resultar difíciles de usar y comprender si son demasiado complejos.
Algunos casos de uso son los siguientes:
• Se puede implementar una estructura jerárquica como un árbol y agregar nuevas relaciones
insertando nodos en una tabla. Más importante aún, una consulta puede utilizar los operadores de
gráficos integrados.
Restricciones de borde
Un borde o una tabla de bordes crea relaciones entre nodos. Una tabla perimetral tiene un formato
que incluye un valor "desde" nodo y un nodo "a" nodo, creando así una relación entre dos nodos.
En SQL Server 2017, las relaciones de la tabla perimetral siempre fueron de muchos a muchos. Con la
nueva característica de restricción en SQL Server 2019, puede restringir el borde a una sola dirección.
Esta característica permite relaciones de uno a muchos.
En el siguiente ejemplo, creamos dos tablas de nodos y una tabla de borde. Se pueden insertar
relaciones en ambas direcciones. Luego agregamos una restricción que restringe las relaciones a
unidireccional. Este es un ejemplo muy simple destinado a transmitir los conceptos.
ir
utilizar SQLGraphDB
ir
288|Mejorando la experiencia del desarrollador
crear la tabla Ciudad (CityID int clave primaria, CityName varchar(10)) como Nodo;
Crear unBordetabla que relacionará datos entrePersonayCiudad. En este caso, también agregaremos una
columna llamadaRecuento de nodospara usar en ejemplos posteriores. Es opcional y no obligatorio:
- - De persona a ciudad
insertar en PersonCity ($from_id, $to_id)
valores (
(seleccione $node_id de Persona donde PersonID = 1),
(seleccione $node_id de Ciudad donde CityID = 1))
- - De la ciudad a la persona
insertar en PersonCity ($from_id, $to_id)
valores (
(seleccione $node_id de Ciudad donde CityID = 2),
(seleccione $node_id de Persona donde PersonID = 2))
seleccione * de PersonCity
Base de datos de gráficos SQL |289
NodoCount int,
restricción Conexión EdgeConstraint_PersonCity (Persona a Ciudad)
)
como borde
Insertar datos de borde desdePersonaaCiudadtodavía funciona, pero intentar insertar datos desde
CiudadaPersonano es:
Para obtener más información sobre las restricciones de borde, vaya ahttps://
docs.microsoft.com/en-us/sql/relational-databases/tables/graph-edge-constraints?
view=sqlallproductsallversions.
Para obtener más información sobre SQL Graph en SQL Server 2019, visitehttps://blogs.msdn.
microsoft.com/sqlserverstorageengine/2018/09/28/public-preview-of-graph-edgeconstraints-
on-sql-server-2019/.
Con SQL Server 2017, no había restricciones para eliminar registros cuando se usaban tablas de gráficos
con nodos y aristas. Por ejemplo, si tuviera una tabla perimetral que hiciera referencia a un registro de
nodo, podría eliminar con éxito el registro de nodo y dejar un registro perimetral huérfano.
ElUNIRLa declaración se utiliza para simplificar la inserción y actualización de datos en una tabla. Puede hacer
esto en una declaración en lugar de usar por separadoINSERTAR,ACTUALIZAR, yBORRARdeclaraciones.
Base de datos de gráficos SQL |291
ElUNIRLa declaración se admite tanto en tablas de nodos como de bordes. En el caso de tablas de
nodos,UNIRes lo mismo que con cualquier tabla SQL.
La siguiente muestra de laFÓSFOROLa declaración hace referencia a una fila en una tabla de
nodos que ya existe y actualizará la fila con nuevos datos:
FUSIONAR Persona
NO COINCIDE ENTONCES
(tmp.IDPersona, tmp.NombrePersona);
FUSIONAR Persona
292|Mejorando la experiencia del desarrollador
NO COINCIDE ENTONCES
(tmp.IDPersona, tmp.NombrePersona);
Vea que una nueva fila conNombre de personaMarc ha sido insertado en la tabla de nodos
seleccionando datos delpersonamesa:
Seleccione PersonID, PersonName de Persona
En el caso de una tabla perimetral, la relación SQL Graph ahora se puede utilizar como parte del FÓSFORO
cláusula en elUNIRdeclaración. ElFÓSFOROLa sintaxis de búsqueda de gráficos en SQL Server 2019 se define
de la siguiente manera:
<graph_search_pattern>::=
{<node_alias> {
{ <-( <edge_alias> )- } | { -
( <edge_alias> )-> }
<alias_nodo>
}
}
[ { Y } { ( <graph_search_pattern> ) } ] [ ,...n ]
<alias_nodo> ::=
nombre_tabla_nodo | alias_nodo
<edge_alias> ::=
nombre_tabla_borde | alias_borde
Base de datos de gráficos SQL |293
ElFÓSFOROcondición en elUNIRLa declaración ahora puede contener un patrón de búsqueda de gráficos. En nuestro
Persona,Ciudad, yPersonaCiudadEn este caso, este patrón podría ser el siguiente:
. . en PARTIDO (Persona-(PersonaAndCiudad)->Ciudad)
. . en PARTIDO (Persona<-(PersonaAndCiudad)-Ciudad)
eliminar de PersonCity
El siguiente SQL insertará o actualizará filas en la tabla perimetral. Como la tabla perimetral está
vacía, insertará una fila:
declarar @PersonID int = 1
declarar @CityID int = 1
- - De persona a ciudad
Fusionar PersonCity
usando ((select @PersonID, @CityID) como tmp (PersonID, CityID)
unirse a Persona en tmp.PersonID = Persona.PersonID
en COINCIDIR (Persona-(PersonCity)->Ciudad)
NO COINCIDE ENTONCES
seleccione * de PersonCity
El resultado es una fila con unRecuento de nodosde1eso se verá algo como lo siguiente:
Si ejecutas elUNIRdeclaración nuevamente, todavía habrá solo una fila, pero la Recuento
de nodosserá igual2.
En SQL Server 2019, puede utilizar vistas o tablas derivadas en unFÓSFOROconsulta. Por ejemplo, si tiene dos
tablas de nodos que contienen datos y una tercera tabla relacionada con las dos primeras mediante una tabla
de borde, puede combinar las dos tablas de nodos con unaUNIÓN TODOS comando en una vista que se puede
utilizar con una tabla de borde en unFÓSFOROdeclaración. El uso de una variable de tabla también funcionará,
pero no se trata aquí.
Eliminaremos y recrearemos algunas de las tablas de ejemplo y crearemos una vista que combine
PersonayCompañíadatos relacionados por elPARTIDO IsInCitycláusula en la declaración sindical.
ir
seleccione * de IsInCity
seleccione * de PersonaEmpresa
Esta en la ciudad
donde Match(PC-(IsInCity)->Ciudad)
y City.CityName = 'Atlanta'
El uso de vistas y variables de tabla agrega flexibilidad y opciones al trabajar con términos de
búsqueda de gráficos.
Las extensiones de lenguaje le permiten extender SQL Server para usar código externo como
parte de las operaciones de SQL. Escribir procedimientos complejos en lenguajes de alto nivel
como Java, Python y R puede ser mucho más fácil y sencillo de probar.
El marco de extensibilidad proporciona una base sólida para permitir extensiones en R, Python y ahora
Java. Un caso de uso de ejemplo sería la corrección de direcciones. Una dirección se puede validar o
corregir mediante un procedimiento almacenado SQL que llama a código Java personalizado que puede
ejecutar código arbitrario y aprovechar las bibliotecas de códigos existentes.
Puede agregar código que permita una extensión casi infinita de la funcionalidad de SQL Server.
Instalación
Debe tener instalado SQL Server 2019 y haber agregado los servicios de aprendizaje automático y las
extensiones de lenguaje o seleccionar esta opción cuando instale la instancia.
Para obtener las extensiones de Java, debe instalar las extensiones de lenguaje de SQL Server. Puede
instalarlos en Windows o Linux. La siguiente captura de pantalla muestra la pantalla de instalación de la
función SQL Server en Windows. Java ahora es una característica integrada de Machine Learning Services:
Esto instalará el tiempo de ejecución de Java predeterminado, Zulu Open JRE (Java Runtime
Environment) versión 11.0.3. Si necesita el JDK (Java Development Kit) completo para compiladores y
otras herramientas de desarrollo o desea instalar su propia distribución, puede hacerlo.
SQL Server 2019 admite Java 11 en Windows. Si instala su propia distribución, debe instalarla
en la carpeta /Archivos de programa/ predeterminada, si es posible, para evitar pasos
separados para establecer los permisos necesarios. Si necesita el JDK, puede descargarlo
desde https://www.azul.com/downloads/zulu-community/ .
Necesitarás agregarJRE_HOMEcomo variable de entorno del sistema para que SQL Server pueda encontrar el tiempo
de ejecución de Java correcto.
Necesitará la ubicación de la ruta de inicio de JRE. Para la instalación predeterminada, esto será en:C:
\Archivos de programa\Microsoft SQL Server\MSSQL15.<nombre de su instancia>\AZUL-
OpenJDK-JRE
Extensiones de lenguaje Java |299
Hay más de una forma de agregar/editar variables de entorno. En Windows 10, puede usar el
Explorador de archivos y buscarPanel de control\Sistema y seguridad\Sistema. Haga clic en
Configuración avanzada del sistema. En el cuadro de diálogo que aparece, haga clic enVariables de
entorno.JRE_HOMEdebe agregarse como una variable del sistema y debe apuntar a laJRE directorio en
suJREoJDKinstalación, como se muestra aquí:
A continuación, habilite los scripts externos con elsp_configuredominio. También puede ejecutar el
comando sin argumentos para ver la configuración actual.RECONFIGURARestablecerá el valor de tiempo
de ejecución de la configuración:
Verifique que la versión en ejecución esté habilitada ejecutando elsp_configurecomando para ver
una lista de los elementos de configuración y su estado de configuración y de ejecución.
El siguiente script SQL creará un lenguaje externo a partir del código que hemos creado:
CREAR IDIOMA EXTERNO Java
FROM (CONTENIDO = N'c:\Projects\SQL2019Java\javaextension.zip', FILE_NAME =
'javaextension.dll');
IR
En ese mismo directorio de instalación de SQL Server, también encontrará el SDK de extensibilidad de
Microsoft:mssql-java-lang-extension.jar. Copié esto en mi directorio de desarrollo para usarlo más
adelante cuando compilo mi programa Java personalizado. También debes especificarlo como una
biblioteca externa para nuestro lenguaje Java que acabamos de crear. En mi sistema donde tengo varias
instancias de SQL, incluida unaVista previa técnica del cliente (CTP ) versión, el comando se ve así:
Programa de muestra
Este programa realiza divisiones de cadenas en un campo de texto y genera dos campos si la división fue
exitosa. Tiene un parámetro: el delimitador de división.
GO
Extensiones de lenguaje Java |301
UTILIZAR SQL2019Java
IR
CREAR TABLA TestJava (
identificación int NO NULA,
)
IR
INSERTAR EN TestJava (id, Nombre completo) VALORES (1, 'Dave Noderer') INSERTAR EN TestJava (id,
Nombre completo) VALORES (2, 'John Smith') INSERTAR EN TestJava (id, Nombre completo) VALORES (2,
'John Smith') INSERTAR EN TestJava (id, Nombre Completo) VALORES (3, 'SinApellido') GO
paquete de paquete;
importar com.microsoft.sqlserver.javalangextension.PrimitiveDataset;
importar com.microsoft.sqlserver.javalangextension.
AbstractSqlServerExtensionExecutor;
importar java.util.LinkedHashMap;
importar java.util.LinkedList;
importar java.util.ListIterator;
importar java.util.regex.*;
executorExtensionVersion = SQLSERVER_JAVA_LANG_EXTENSION_V1;
executorInputDatasetClassName = PrimitiveDataset.class.getName();
302|Mejorando la experiencia del desarrollador
executorOutputDatasetClassName = PrimitiveDataset.class.getName();
}
valor1
outVal2.add("");
}
System.out.println("Datos de salida:");
mientras (it.hasNext()) {
idOutputCol[rowId] = it.next().intValue();
salida de retorno;
}
else if (params.get("delimchar").toString().length() != 1) {
si (input.getColumnCount() < 2) {
throw new IllegalArgumentException("Esquema de entrada inesperado,
el esquema debe ser (INTEGER, NVARCHAR o VARCHAR)");
}
Emparejador m = expr.matcher(texto);
devolver m.find();
}
}
Puedes compilar esto usando eljavaccomando con elTARRO SDKarchivo de la siguiente manera:
@delim nvarchar(1),
@querynvarchar(400)
COMO
COMENZAR
306|Mejorando la experiencia del desarrollador
Ejecute el procedimiento con dos parámetros (eldelimitadory unconsulta) para obtener datos de nuestra
tabla de prueba:
EJECUTAR [dbo].[java_namesplit] N' ', N'SELECT id, Nombre completo FROM TestJava' IR
JSON
La compatibilidad con JSON se agregó por primera vez a SQL Server 2016. Dos funciones admiten JSON,
OPENJSONpara analizar los datos entrantes yPARA JSONpara generar datos con formato JSON.
Notación de objetos JavaScript (JSON ), es una representación de texto que se utiliza para almacenar y
compartir datos. JSON es estándar en aplicaciones web de todo tipo. Es el formato nativo de los objetos
JavaScript y es puramente texto. El uso de JSON nativo dentro de SQL Server puede hacer que las interfaces
sean más fáciles de usar y hacer que el manejo de NoSQL, el cambio de esquemas y los datos RESTful de la
web sean mucho más fáciles.
Por ejemplo, un pedido de un sitio de comercio electrónico o unInternet de las Cosas (IoT ) el dispositivo
podría llegar al servidor como una cadena con formato JSON. Puedes escribir este "blob" de datos en un campo
de base de datos y retrasar su análisis hasta más tarde.
Otro beneficio de un sistema de pedidos sería preservar el orden original tal como está, en comparación
con una forma relacional donde los datos relacionados pueden cambiar con el tiempo.
JSON consta de pares simples de nombre/valor con algunos caracteres de formato. Por ejemplo, si
desea proporcionar una lista de ciudades, esa lista podría tener el siguiente formato en JSON:
[{
{ "ciudad" : "Miami"},
{ "ciudad" : "Ft Lauderdale" },
{ "ciudad" : "Playa Deerfield" }
}]
Con SQL Server, puede crear o consumir un objeto JSON utilizando T-SQL. Esta capacidad puede
simplificar sus aplicaciones y evitar la necesidad de depender de otro nivel de su pila de
desarrollo para codificar/decodificar objetos JSON.
308|Mejorando la experiencia del desarrollador
Ejemplo JSON
En el siguiente ejemplo, crearemos algunos datos JSON, los analizaremos en campos, insertaremos los datos
en una tabla SQL y luego los extraeremos como JSON formateado.
Primero, cree algunos datos JSON que podrían provenir de un dispositivo IoT:
Declarar @DeviceJson nvarchar(max)
establecer @DeviceJson =
'[
{ "id del dispositivo" : 1, "datos del dispositivo": { "sensor1": 1234}, "fecha del evento":
"2019-05-25T20:19:04"},
{ "id del dispositivo" : 2, "datos del dispositivo": { "sensor2": 4321}, "fecha del evento":
"2019-05-25T20:21:11"}
]'
El siguiente script SQL analizará los datos en@DispositivoJsony mostrarlo como una tabla y
filas:
--
seleccionar *
de OpenJson (@DeviceJson)
con (id de dispositivo int '$.id de dispositivo',
insertar en IOTData
seleccionar *
de OpenJson (@DeviceJson)
Soporte UTF-8 |309
de IOTData
PARA LA RUTA JSON
Para obtener más información sobre datos JSON en SQL Server, visitehttps://
docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?
view=sqlallproductsallversions .
Soporte UTF-8
A partir de SQL Server 2012, Unicode UTF-16 es compatible con elnchar,nvarchar, yntextotipos de
datos. A partir de SQL Server 2019, la codificación UTF-8 está habilitada mediante el uso de una
intercalación que utiliza un sufijo _UTF8 y los tipos de datos no Unicode char y varchar se
convierten en tipos de datos compatibles con Unicode, codificados en UTF-8.
Las intercalaciones que admiten caracteres suplementarios, ya sea mediante el uso del indicador _SC o
porque son intercalaciones de la versión 140, se pueden usar con el nuevo indicador _UTF8.
UTF-8, UTF-16 y UTF-32 se pueden encontrar en la web. En los últimos años, UTF-8 se ha convertido en
el estándar. Puede representar cualquier carácter y, en algunos casos, utiliza menos almacenamiento
(al menos en los idiomas occidentales que utilizan principalmente caracteres ASCII) que UTF-16 y el
formato fijo de UTF-32. UTF-8 también es compatible con versiones anteriores de ASCII de 7 bits, lo que
puede ser importante para usted o no.
310|Mejorando la experiencia del desarrollador
Si tiene problemas con el endianismo, la forma en que el procesador que está utilizando determina
qué bit o byte es más significativo/menos significativo, UTF-8 puede ayudar ya que no depende del
endianismo. En su mayor parte, el uso generalizado del procesador Intel x86 ha evitado algunos de
estos problemas. Para obtener más información sobre endianidad, eche un vistazo a esta wiki:
https://en.wikipedia.org/wiki/Endianness .
En el contexto de SQL Server, la intercalación afectará la forma en que se buscan y ordenan las
cadenas.
Ahora puede modificar una columna y establecer su intercalación en UTF-8 con unalterardeclaración como
esta:
También puedes habilitar un_UTF8intercalación a nivel de base de datos. Si crea una nueva base de datos, todas las
columnas nuevas se codificarán con UTF8 de forma predeterminada. Para las bases de datos existentes, solo las
columnas nuevas se codificarán con UTF8. Para columnas existentes, utilice elalterarcomando anterior para convertir
a UTF8.
Tablas temporales
Las tablas temporales almacenan datos y todos los cambios para que se puedan recuperar datos de un
momento anterior. SQL Server 2016 agregó soporte para tablas temporales. Las tablas temporales también
se conocen como tablas temporales versionadas por el sistema.
Tablas temporales |311
Cada tabla temporal está emparejada con una tabla de historial para que las consultas normales extraigan
datos de la tabla de forma normal, pero se pueden construir consultas históricas que extraigan datos de la
tabla de historial. El siguiente diagrama ilustra esto:
• Cambios accidentales: restaure fácilmente datos que se cambiaron o eliminaron por error.
• Informes históricos: podrá informar sobre cómo cambian los datos a lo largo del tiempo.
Al crear tablas temporales, se requiere tener una clave principal y dos fechahora2
columnas que se utilizan paraHORA DEL SISTEMAperíodo.
Junto con la tabla principal, se crea una tabla de historial para mantener las entradas de las filas de la tabla con marca de
tiempo.
312|Mejorando la experiencia del desarrollador
)
CON
(
VERSION_SISTEMA = ACTIVADO
(
HISTORY_TABLE = dbo.my_history,
DATA_CONSISTENCY_CHECK = ON
)
)
IR
ElHORA DEL SISTEMALa definición rastreará cuándo esta fila es válida. Aunque siempre es una buena idea, se
requiere una clave primaria para las tablas temporales.
VERSION_SISTEMA = ACTIVADOes lo que habilita la tabla de historial temporal, que se crea como parte
de la tabla principal.
Cuando realiza una consulta, obtiene lo que espera, es decir, los datos actuales y
actualizados:
insertar en myTemporalTable (id, myText) valores (1, 'datos en:' +
cast(GetDate() as varchar(50)))
seleccione * de myTemporalTable
--
- - Espera algún tiempo
--
actualizar myTemporalTable establecer myText = 'datos en:' + emitir(GetDate() como
varchar(50))
donde identificación = 1
seleccione * de myTemporalTable
Para recuperar datos históricos, la consulta en su tabla temporal debe usarse parahora del
sistemay una de las siguientes subcláusulas:
• A PARTIR DE <date_time>
Por ejemplo, para recuperar todos los datos históricos, utilice esta declaración:
Para recuperar datos de un momento específico, puede utilizar una consulta como esta:
Si miras en la tabla principal, solo hay una fila, pero si expandes la tabla temporal, verás
unami_historia (Historia)tabla, que tendrá versiones antiguas de los datos:
También puede convertir una tabla existente en una tabla temporal agregando las columnas
requeridas y una tabla de historial.
Un recordatorio más es que es posible que desee tomar medidas para truncar o archivar datos en la
tabla del historial, ¡dependiendo de cómo la use!
Los tipos de datos espaciales se utilizan para trabajar con sistemas cartográficos. Hay dos
categorías amplias, geometría y geografía. Esta discusión se centra en la geografía. Es posible que
necesite opciones de geometría más generales y flexibles, especialmente si no busca
específicamente una capacidad de mapeo físico.
dos nuevosidentificadores de referencia espacial (SRID ) están disponibles en SQL Server 2019. Estos
identificadores australianos GDA2020 proporcionan datos más precisos para el continente australiano y
están estrechamente alineados con las últimasSatélites GPS (GNSS ). Para obtener más información
sobre estos identificadores particulares, vaya ahttp://www.ga.gov.au/scientific-topics/
positioningnavigation/geodesy/datums-projections/gda2020 .
Tipos de datos espaciales |315
Para cualquier cálculo espacial o geométrico en esferas, como la Tierra, los tipos de datos
espaciales permiten calcular fácilmente distancias y otros cálculos en una consulta T-SQL.
Para obtener una lista completa de identificadores en su sistema, utilice esta consulta:
seleccione * de sys.spatial_reference_systems
He utilizado datos espaciales durante muchos años en aplicaciones de localización de concesionarios. En estas
aplicaciones, está disponible una lista de distribuidores y sus ubicaciones. Cuando un usuario quiere encontrar un
distribuidor cerca de él, especifica su ubicación utilizando latitud y longitud, momento en el que se puede realizar una
consulta espacial y ordenar a los distribuidores por distancia.
Tenga en cuenta que hay varias formas de obtener la latitud y longitud de un distribuidor. Dos ejemplos son una base
de datos de códigos postales o un servicio de mapas web que utiliza la dirección del distribuidor.
Inserte algunos datos. He elegido dos puntos que están alejados entre sí para ilustrar el
proceso:
insertar en los valores de Distribuidores (Nombre del distribuidor, latitud,
longitud)
Ahora recopilamos datos de un usuario, tal vez del GPS de su teléfono para obtener latitud y longitud.
Usamos esto para crear un punto para el usuario y luego hacemos una consulta para calcular la
distancia desde los distribuidores:
de distribuidores
Para obtener más información sobre datos espaciales en SQL Server, vaya ahttps://docs.microsoft.com/en-
us/sql/relational-databases/spatial/spatial-data-sql-server?view=sql-server-ver15 .
Muchas organizaciones utilizan almacenes de datos para procesar y agregar grandes volúmenes de datos de
muchos sistemas diferentes con el fin de permitir un análisis más profundo. Una carga de trabajo de almacén
de datos tradicional consiste en cargar datos de sistemas operativos, como datos financieros, datos de ventas o
datos de inventario, para permitir un análisis histórico a largo plazo de hechos comerciales y dimensiones que
cambian lentamente. Una carga de trabajo de almacén de datos también admite consultas analíticas complejas
ejecutadas por analistas de negocios u otros usuarios que desean comprender los datos para respaldar la toma
de decisiones basada en datos. En este capítulo, analizaremos algunas de las características y capacidades más
recientes de SQL Server 2019 y cómo se pueden utilizar esas capacidades para mejorar y optimizar las cargas de
trabajo de su almacén de datos.
También discutiremos cómo las inversiones que se realizan en la nube inteligente están permitiendo a las
organizaciones modernizar sus ecosistemas de análisis para desbloquear más valor y conocimientos para
sus datos.
Services
Servicios de integración de SQL Server (SSIS ) es una plataforma para crear integración,
transformación y carga de datos a escala empresarial (extraer-transformar-carga, ETL ) soluciones.
Desde el lanzamiento de SQL Server 2005, organizaciones de todo el mundo han estado utilizando SSIS
para resolver problemas comerciales complejos copiando o descargando archivos, limpiando y
extrayendo datos, administrando objetos y datos de SQL Server y cargando almacenes de datos. Incluso
en el mundo de los sistemas distribuidos y los patrones de extracción, carga y transformación (ELT), los
patrones de diseño ETL que utilizan SSIS tienen un lugar en muchas organizaciones que luchan por
obtener datos de múltiples fuentes de datos dispares para limpiarlos e implementar la lógica
empresarial.
SSIS incluye un amplio conjunto de tareas y transformaciones integradas, herramientas gráficas para
crear paquetes y la base de datos del Catálogo de servicios de integración, donde almacena, ejecuta y
administra paquetes. Los paquetes son colecciones de tareas y transformaciones que se utilizan para
realizar actividades como integrar, transformar y cargar datos en una variedad de sistemas. SSIS se
puede utilizar para extraer y transformar datos de una amplia variedad de fuentes, como archivos de
datos XML, archivos planos y fuentes de datos relacionales que pueden hospedarse localmente o en
Azure y luego cargarse en una o varias fuentes de datos diferentes.
SSIS ofrece una flexibilidad y capacidad significativas para conectarse a fuentes de datos, transformar datos y
cargar datos. SSIS también es muy extensible. Los ecosistemas de desarrolladores y socios son bastante sólidos
y presentan transformaciones y tareas desarrolladas personalizadas y una amplia variedad de opciones de
capacitación y consultoría. Estos hechos hacen que SSIS sea ideal para una amplia variedad de escenarios ETL,
incluida la carga del almacén de datos de su empresa.
Soluciones de extracción, transformación y carga con SQL Server Integration Services |321
SSIS es una plataforma ETL confiable para integrar y transformar datos. Cuando utilice SSIS para
cargar su almacén de datos, considere las siguientes mejores prácticas.
• Filtre dinámicamente los datos de origen para consultar solo los registros modificados: Un paso
clave para crear procesos de carga de almacén de datos escalables y de buen rendimiento es consultar
solo los registros modificados desde la fuente. Esto reducirá la carga en los sistemas de origen y
garantizará que los procesos ETL finalicen en el menor tiempo posible. Para lograr esto, registre la marca
de tiempo máxima o el valor de la columna clave en una tabla de control como una marca de agua
durante cada carga de datos. Luego, en cargas de datos posteriores, consulte el valor de la marca de
agua de la tabla de control y almacene el valor en una variable en el paquete SSIS. En elTarea de flujo de
datos utilizado para cargar la tabla en el almacén de datos, utilice la variable en unDÓNDEcláusula
adjunta en la fuente de la tarea de flujo de datosSELECCIONAR declaración para filtrar los datos y
garantizar que carga solo datos nuevos en el almacén de datos.
• Agregar lógica de reintento: Uso de una tarea de flujo de datos dentro de unPara contenedor de bucle es
una excelente manera de incorporar una lógica de reintento en la carga de su almacén de datos. Cree una
variable para usar dentro del bucle como contador para el intento actual y una segunda variable que contenga
un valor constante para el número máximo de reintentos. Agregue una tarea de secuencia de comandos que
realice una breve espera después de la tarea de flujo de datos y conecte la tarea de secuencia de comandos a la
tarea de flujo de datos con una restricción de precedencia de fallas. Además, agregue una tarea de expresión
después de la tarea de flujo de datos utilizando una restricción de precedencia de éxito para actualizar la
variable de contador actual a fin de romper el bucle For Each después de la ejecución exitosa de la tarea de flujo
de datos.
• Utilice el tipo de datos más pequeño posible en sus tareas de flujo de datos: Las transformaciones de tareas de
flujo de datos del paquete SSIS se producen en la memoria del servidor SSIS. Esto significa que el uso de la memoria
de la tarea de flujo de datos se administra dentro de la configuración de la tarea de flujo de datos.
Para utilizar la memoria de la manera más eficiente posible, utilice los tipos de datos más pequeños
posibles. Esto garantizará que quepa una cantidad máxima de registros en cada búfer de datos durante
la ejecución de la tarea de flujo de datos. Para ver y modificar los tipos de datos de las columnas que se
consultan desde una fuente de datos, haga clic con el botón derecho en el componente de origen y
seleccione Mostrar editor avanzado. Navegue a la pestaña Propiedades de entrada y salida y expanda la
sección Salida de origen. Los tipos de datos para la salida de un componente de origen se configuran en
la sección Columnas de salida.
• Utilice la tabla de destino de OLE DB o vea la opción de carga rápida: Cuando utilice el destino
OLE DB de la tarea de flujo de datos para cargar datos en su almacén de datos, asegúrese de
utilizar el modo de acceso a datos de carga rápida. La opción de carga rápida garantizará que SQL
Server utilice una carga masiva al escribir datos en la tabla de destino. Esto es ideal porque una
operación de carga masiva se registrará mínimamente y, en general, mejorará el rendimiento de la
carga de datos.
322|Almacenamiento de datos
Características de SQL Server 2019índices de almacén de columnas en memoria. Los índices de almacén de columnas almacenan y
administran datos mediante el almacenamiento de datos en columnas y el procesamiento de consultas en columnas. Las cargas de
trabajo del almacén de datos que realizan principalmente cargas masivas y consultas de solo lectura probablemente se beneficiarán de
los índices de almacén de columnas. Utilice el índice del almacén de columnas para lograr ganancias de rendimiento de consultas hasta
10 veces mayores que el almacenamiento tradicional orientado a filas y una compresión de datos de hasta 7 veces mayor que el tamaño
SQL Server admite índices de almacén de columnas agrupados y no agrupados. Ambos utilizan la misma
tecnología de almacén de columnas en memoria, pero tienen diferencias en el propósito y en las
características que admiten.
Por ejemplo, un índice de almacén de columnas agrupado es el almacenamiento físico de la tabla y es el único
índice de la tabla. El índice agrupado se puede actualizar, por lo que puede realizar operaciones de inserción,
eliminación y actualización en el índice.
Por el contrario, un índice de almacén de columnas no agrupado es un índice de solo lectura creado en un
índice agrupado o una tabla de montón existente. El índice del almacén de columnas no agrupado contiene
una copia de un subconjunto de columnas, incluidas todas las columnas de la tabla. La tabla es de solo
lectura mientras contiene un índice de almacén de columnas no agrupado.
El índice de almacén de columnas agrupado se considera el estándar para almacenar tablas de hechos de almacenamiento de datos de
gran tamaño y está diseñado para usarse en la mayoría de las cargas de trabajo de almacenamiento de datos de SQL Server. Los índices
de almacén de columnas brindan ganancias sustanciales de rendimiento para consultas que utilizan escaneos completos de tablas. Los
• Las columnas suelen tener datos similares, lo que da como resultado altas tasas de compresión.
• Las altas tasas de compresión a menudo mejoran el rendimiento de las consultas al utilizar una huella
de memoria más pequeña. El rendimiento de las consultas puede mejorar porque SQL Server puede
realizar más operaciones de consultas y datos en memoria.
Índices de almacén de columnas agrupados |323
• Las consultas a menudo seleccionan sólo unas pocas columnas de una tabla, lo que reduce la E/S total
de los medios físicos.
• Se ha agregado a SQL Server un nuevo mecanismo de ejecución de consultas llamado ejecución en modo
por lotes que reduce en gran medida el uso de CPU. La ejecución del modo por lotes está estrechamente
integrada y optimizada en torno al formato de almacenamiento del almacén de columnas.
Revise el siguiente ejemplo para comprender cómo crear un índice de almacén de columnas agrupado. Este
ejemplo crea una tabla como un montón y luego la convierte en un índice de almacén de columnas agrupado.
Esto cambia el almacenamiento de toda la tabla, desde el almacén de filas al almacén de columnas:
IR
CREAR ÍNDICE DE COLUMNSTORE AGRUPADO cci_T1 EN T1;
IR
Nota
Revise la siguiente documentación para obtener más información sobre el uso de
índices de almacén de columnas agrupados:https://docs.microsoft.com/en-us/sql/
database-engine/using-clustered-columnstore-indexes?view=sql-
server-2014&viewFallbackFrom=sql-server-ver15 .
Para obtener una comprensión más profunda de los índices de los almacenes de columnas, lea el
siguiente artículo: https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-
andnonclustered-indexes-described?view=sql-server-ver15 .
324|Almacenamiento de datos
Fraccionamiento
A partir del lanzamiento de SQL Server 2005, SQL Server admite la partición de índices y tablas, lo que permite
que los datos de las tablas e índices particionados se distribuyan en varios grupos de archivos de una base de
datos. Los datos se dividen horizontalmente de modo que los grupos de filas se asignan a particiones utilizando
una función de partición que define el rango de valores en una partición. Las particiones también se pueden
almacenar en grupos de archivos separados para aumentar aún más la escalabilidad de una carga de trabajo,
mejorar el rendimiento y facilitar las operaciones de mantenimiento:
Figura 11.1: Una estrategia de partición bien diseñada puede mejorar el rendimiento de la carga y las consultas de datos
Particionar tablas o índices grandes puede proporcionar beneficios que pueden mejorar la capacidad de administración y
aumentar el rendimiento, especialmente en el caso de cargas de trabajo de almacenamiento de datos que a menudo manejan
grandes volúmenes de datos.
Se permite transferir o acceder a subconjuntos de datos de forma rápida y eficiente, manteniendo al mismo
tiempo la integridad de una recopilación de datos. Por ejemplo, una operación como cargar datos en una tabla
de hechos grande en un almacén de datos puede tardar sólo unos segundos en comparación con minutos u
horas si los datos no estaban particionados. Además, archivar o eliminar datos antiguos a medida que se cargan
datos nuevos en una tabla de hechos grande se convierte en una operación sencilla sin afectar el rendimiento o
la disponibilidad de la recopilación de datos en general.
Gestión de índices en línea |325
Puede realizar operaciones de mantenimiento en una o más particiones rápidamente. Por ejemplo, puede
optar por reconstruir una única partición de un índice de almacén de columnas agrupado para mejorar la
compresión en lugar de reconstruir el índice de almacén de columnas agrupado para toda la tabla.
Puede mejorar el rendimiento de las consultas según los tipos de consultas que ejecuta con frecuencia.
Particionar una tabla en una columna comúnmente utilizada en equiuniones y enDÓNDELas cláusulas pueden
aumentar el rendimiento de las consultas de dos maneras diferentes. En primer lugar, el optimizador de
consultas puede eliminar la consulta de ciertas particiones cuando elDÓNDELa cláusula se utiliza para filtrar
los datos utilizando la columna de partición de la tabla. Además, el optimizador de consultas puede procesar
consultas de unión equivalente entre dos o más tablas particionadas más rápido cuando las columnas de
partición son las mismas que las columnas en las que se unen las tablas.
Nota
Es importante validar que su estrategia de partición sea efectiva y mejore el rendimiento y la
capacidad de administración. Demasiadas particiones pueden perjudicar el rendimiento y muy pocas
particiones pueden no proporcionar un beneficio significativo, por ejemplo.
Lea el siguiente artículo para obtener una descripción general de la partición, los
componentes y conceptos, y las pautas de rendimiento:https://docs.microsoft.com/en-us/sql/
relacional-databases/partitions/partitioned-tables-and-indexes?view=sql-serverver15 .
• CREAR ÍNDICE
• ALTERAR ÍNDICE
• ÍNDICE DE CAÍDA
Al crear o reconstruir un índice y la opción EN LÍNEA está configurada en ENCENDIDO, los objetos
subyacentes están disponibles para consultas y modificación de datos. También es posible reconstruir
parte de un índice en una única partición.
Las operaciones DML en línea para índices se pueden habilitar mediante SQL Server Management
Studio, Azure Data Studio o T-SQL.
Con SQL Server Management Studio, complete los siguientes pasos para habilitar operaciones DML en
línea para un índice determinado:
1. AbiertoExplorador de objetosy navegue hasta la tabla que contiene el índice para el cual necesita
habilitar las operaciones de índice en línea.
Figura 11.2: Habilitación del procesamiento DML en línea con SQL Server Management Studio
Para habilitar el procesamiento DML en línea para un índice determinado usando T-SQL, especifique elEN LÍNEA =
ENCENDIDOargumento como se muestra en el siguiente ejemplo de reconstrucción de un índice de almacén de columnas
agrupado:
USAR [AdventureWorksDW2017]
IR
SQL Server 2019 agrega pausar y reanudar una operación de creación o reconstrucción de índice
mientras está en línea. La creación de índice en línea reanudable le permite crear un índice, pausarlo y
luego reanudarlo más tarde donde la operación se pausó o falló, en lugar de reiniciar la operación
desde el principio.
328|Almacenamiento de datos
Poder pausar y reanudar la creación o reconstrucción de un índice en una fecha u momento posterior podría
resultar muy útil en los siguientes escenarios:
• Aparece una tarea inesperada y de alta prioridad que requiere más recursos.
• La ventana de mantenimiento del almacén de datos se cierra antes de que se complete la creación o
reconstrucción del índice.
• Se produce una conmutación por error para la base de datos del almacén de datos.
• Es necesario reducir las transacciones de larga duración para mejorar la gestión del
espacio de registro.
Nota
Los índices de almacén de columnas agrupados se pueden crear o reconstruir en línea, pero no admiten
pausar ni reanudar operaciones de creación y reconstrucción.
USAR [AdventureWorks2017] IR
IR
Para pausar una operación de creación o reconstrucción de índice, detenga el comando en curso o finalice la
sesión usando el comandoMATAR <session_id>comando, o ejecutar elALTERAR PAUSA DEL ÍNDICE
comando como se muestra en el siguiente ejemplo:
USAR [AdventureWorks2017] IR
Los índices de almacén de columnas agrupados son el estándar en SQL Server para almacenar y consultar tablas de hechos de
almacenes de datos de gran tamaño. En versiones anteriores de SQL Server, la creación de índices de almacén de columnas
agrupados era un proceso fuera de línea. SQL Server 2019 ahora admite la creación y reconstrucción de un índice de almacén
de columnas agrupado mientras está en línea. Esta nueva característica significa que las cargas de trabajo no se bloquearán y
todas las modificaciones realizadas en los datos se agregan de forma transparente a la tabla del almacén de columnas de
destino. Esto es ideal para cargas de trabajo empresariales que requieren una disponibilidad cercana al 100 %.
Revise los siguientes ejemplos para crear y reconstruir un índice de almacén de columnas agrupado en
línea:
USAR [AdventureWorksDW2017]
IR
USAR [AdventureWorksDW2017]
IR
ALTERAR LA CONFIGURACIÓN DEL ALCANCE DE LA BASE DE DATOShabilita varios ajustes de configuración de la base de
datos a nivel de base de datos individual.ALTERAR LA CONFIGURACIÓN DEL ALCANCE DE LA BASE DE DATOSse introdujo en
SQL Server 2016 pero ahora también es compatible conEN LÍNEAyRESUMIBLEargumentos. Esta característica admite la
definición del comportamiento predeterminado a nivel de base de datos en lugar de para cada declaración individual.
APAGADO
Este valor es el comportamiento predeterminado. Este valor significa que las operaciones en línea y
reanudables no serán en línea ni reanudables a menos que se especifique en el estado de cuenta.
FAIL_UNSUPPORTED
Este valor eleva todas las operaciones DDL admitidas aEN LÍNEAoRESUMIBLE. Las operaciones que
no admitan la ejecución en línea o reanudable fallarán y generarán una advertencia.
CUANDO_SOPORTADO
Este valor eleva todas las operaciones DDL aEN LÍNEAoRESUMIBLE. Las operaciones que no admitan
la ejecución en línea o reanudable se ejecutarán sin conexión.
Vea el siguiente ejemplo para comprender cómo establecer el comportamiento predeterminado para
configurar el motor de base de datos para elevar automáticamente las operaciones admitidas a EN LÍNEA:
USAR [AdventureWorks2017] IR
Vea el siguiente ejemplo para comprender cómo establecer el comportamiento predeterminado para
configurar el motor de base de datos para elevar automáticamente las operaciones admitidas a
RESUMIBLE:
USAR [AdventureWorks2017] IR
Nota
Para obtener más información, revise la siguiente documentación sobre pautas para
operaciones de índice en línea:https://docs.microsoft.com/en-us/sql/relational-databases/
indexes/guidelines-for-online-index-operations?view=sql-server-ver15 .
El Optimizador de consultas de SQL Server creará estadísticas automáticamente de dos maneras diferentes:
Pero hay tres opciones que se pueden configurar para determinar cuándo se crean y actualizan las
estadísticas.
La opción AUTO_CREATE_STATISTICS
La opción AUTO_UPDATE_STATISTICS
Cuando elAUTO_UPDATE_STATICSLa opción está configurada enEN, el Optimizador de consultas actualiza las
estadísticas cuando son utilizadas por una consulta o cuando podrían estar desactualizadas. Las estadísticas quedan
obsoletas cuando las operaciones de la base de datos alteran la distribución de los datos en una tabla o vista indexada.
Esto podría suceder después de una operación de inserción, actualización o eliminación. El Optimizador de consultas
determina si las estadísticas están desactualizadas contando el número de modificaciones de datos desde la última
actualización de las estadísticas.
La opción AUTO_UPDATE_STATISTICS_ASYNC
Nota
Para configurarAUTO_UPDATE_STASTICS_ASYNCaEN, ambosAUTO_CREATE_STATISTICS
yAUTO_UPDATE_STATISTICSLas opciones deben configurarse enEN.
332|Almacenamiento de datos
Debido a que las características de una carga de trabajo de almacén de datos suelen ser muy diferentes
de las de una carga de trabajo de transacciones, la metodología que siga para el mantenimiento de
estadísticas dependerá de las características de sus datos. A medida que desarrolle su plan, considere las
siguientes pautas:
• Para las columnas que contienen valores estáticos, como ciertas tablas de dimensiones, reduzca la
frecuencia de las actualizaciones de las estadísticas.
• Una columna de clave ascendente para la que se agregan nuevos valores con frecuencia, como una fecha de
transacción o un número de pedido, probablemente requiera actualizaciones más frecuentes de las
estadísticas. Considere actualizar las estadísticas relacionadas con más frecuencia.
• Considere la posibilidad de utilizar estadísticas asincrónicas para cargas de trabajo, como almacenes de
datos, que ejecutan con frecuencia la misma consulta o consultas similares. Los tiempos de respuesta a
las consultas podrían ser más predecibles porque Query Optimizer puede ejecutar consultas sin
esperar estadísticas actualizadas.
Hoy en día, las organizaciones necesitan poder incorporar grandes volúmenes de datos en grandes
almacenes de datos desde una variedad de fuentes de datos. Una vez en los grandes almacenes de datos,
Hadoop, Spark y las canalizaciones de aprendizaje automático preparan y entrenan los datos. Una vez que
los datos están listos para un análisis complejo, se cargan en el almacén de datos para acceder a ellos
mediante herramientas de inteligencia empresarial, como Power BI o Excel. Azure proporciona el marco y
el ecosistema para diseñar y construir plataformas de análisis avanzado y big data de vanguardia. En esta
sección, analizaremos tecnologías como Azure SQL Data Warehouse, Azure Data Factory, Azure
Databricks, Azure Data Lake y Power BI y cómo estas tecnologías en la nube encajan en los patrones de
diseño de almacenes de datos modernos, ofreciendo una escala ilimitada. y flexibilidad.
Introducción al almacén de datos SQL de Azure |333
Azure SQL Data Warehouse incluye cuatro componentes que conforman la arquitectura, como se
muestra enFigura 11.3:
Nodo de control
El nodo de control es una base de datos SQL de Azure que coordina el movimiento de datos y las
cargas de trabajo computacionales en un almacén de datos. El nodo de control recibe las consultas
T-SQL y las divide en unidades de trabajo, que se paralelizan entre los nodos de cálculo. No se
almacenan datos en el nodo de cálculo. El nodo de computación consta de metadatos y estadísticas
del almacén de datos.
334|Almacenamiento de datos
Nodos de cálculo
Los nodos de proceso son bases de datos de Azure SQL independientes que proporcionan la potencia
informática para Azure SQL Data Warehouse. Mientras que el nodo de control distribuye datos entre los
nodos de cómputo cuando carga nuevos datos en el almacén de datos, los nodos de cómputo devuelven
resultados de consulta parciales al nodo de control para el ensamblaje final de los resultados de la consulta.
El número de nodos de cálculo varía de 1 a 60 y está determinado por el objetivo de nivel de servicio (SLO)
seleccionado para el almacén de datos.
Almacenamiento
Los datos son almacenados y administrados por Azure Storage. Los datos se dividen en distribuciones para
optimizar el rendimiento del sistema. Puede elegir el patrón de fragmentación que se utilizará para distribuir los
datos cuando defina la tabla mediante un patrón de fragmentación hash, round-robin o replicación. Debido a
que el almacenamiento está desacoplado de la computación, todos los datos persisten en el almacenamiento
independientemente de cómo escala o pausa los recursos informáticos, lo que le permite pagar solo por los
recursos informáticos cuando están en uso.
Los DMS coordinan el movimiento de datos entre nodos según sea necesario para responder a las consultas. Los DMS
funcionan de forma transparente como servicios en segundo plano.
Debido a que Azure SQL Data Warehouse separa el almacenamiento de los recursos informáticos, escalar el proceso
para satisfacer las demandas de rendimiento y disponibilidad independientemente del almacenamiento de datos le
permite optimizar las cargas de trabajo del almacén de datos para obtener el máximo ahorro de costos. Si no necesita
utilizar su almacén de datos durante un período de tiempo específico, puede ahorrar costos informáticos pausando
los recursos informáticos.
Nota
Para obtener más información sobre los pasos de escalamiento horizontal, consulte la siguiente
documentación sobre la administración de computación:https://docs.microsoft.com/en-us/azure/sql-data-
warehouse/ sql-data-warehouse-manage-compute-overview .
SQL Data Warehouse admite la carga y exportación de datos mediante una variedad de herramientas
que incluyen Azure Data Factory, SSIS, PolyBase y BCP. Pero cuando se requiere cargar o exportar
grandes cantidades de datos o un rendimiento rápido, PolyBase es la mejor opción. Debido a que
PolyBase está diseñado específicamente para aprovechar la arquitectura MPP de SQL Data Warehouse,
exportar y cargar datos será mucho más rápido que cualquier otra herramienta.
Nota
Para obtener más información sobre las prácticas recomendadas para cargar datos en Azure SQL
Data Warehouse, consulte la siguiente documentación:https://docs.microsoft.com/en-us/azure/sql-
data-warehouse/guidance-for-loading-data .
336|Almacenamiento de datos
• Distribución de hash: Para fragmentar datos en una tabla distribuida mediante hash, SQL Data
Warehouse utiliza una función hash para asignar cada fila a una distribución. La columna que se utilizará
como columna de distribución se determina en la definición de la tabla. Una distribución hash puede
ofrecer un mayor rendimiento de consultas para uniones y agregaciones en tablas grandes. Por ejemplo,
la distribución hash de dos tablas de hechos grandes con los mismos valores clave que se utilizan
comúnmente en las uniones eliminará la necesidad de movimiento de datos entre nodos informáticos.
• Distribución por turnos: De forma predeterminada, las tablas utilizan una distribución por turnos. Esto
facilita que los usuarios comiencen a crear tablas sin tener que decidir cómo deben distribuirse. Las
tablas de operación por turnos pueden funcionar suficientemente para algunas cargas de trabajo, pero
en la mayoría de los casos, la distribución hash de una tabla basada en una columna que se usa
comúnmente en uniones o agregaciones grandes proporcionará un rendimiento óptimo.
• Tablas replicadas: una tabla replicada proporciona el rendimiento de consulta más rápido para
tablas pequeñas. Una tabla que se replica crea una copia completa de la tabla en cada nodo de
cálculo. Replicar tablas pequeñas comúnmente utilizadas en búsquedas, como una tabla de
fechas, puede eliminar la necesidad de mover datos. Tenga en cuenta que se requiere
almacenamiento adicional para replicar una tabla y que se genera una sobrecarga adicional al
escribir datos en una tabla replicada. Replicar tablas grandes no es lo ideal.
Nota
Lea la siguiente documentación para obtener orientación sobre el diseño de tablas
distribuidas en Azure SQL Data Warehouse:https://docs.microsoft.com/en-us/azure/sql-
datawarehouse/sql-data-warehouse-tables-distribute .
Debido a la naturaleza distribuida de Azure SQL Data Warehouse, los datos se dividen en 60 bases de
datos. Esto significa que si crea una tabla con 100 particiones, el resultado será 6000 particiones. Una
estrategia de partición de alta granularidad que funcionó bien en SQL Server puede no funcionar bien
con SQL Data Warehouse y, de hecho, puede afectar el rendimiento de las consultas.
Uso de Azure Data Factory |337
Además, tenga en cuenta que demasiadas particiones pueden perjudicar el rendimiento de un índice de
almacén de columnas agrupado. Recuerde que las filas de una tabla con un índice de almacén de columnas
agrupado generalmente no enviarán datos a un segmento de almacén de columnas comprimido hasta que
haya más de 1 millón de filas por tabla por partición. Tener demasiadas particiones puede impedir que su
carga de trabajo se beneficie de un índice de almacén de columnas agrupado.
Nota
Lea la siguiente documentación para obtener más información sobre la partición de tablas
en Azure SQL Data Warehouse:https://docs.microsoft.com/en-us/azure/sql-
datawarehouse/sql-data-warehouse-tables-partition .
Consulte el siguiente artículo para comprender las posibles causas de la mala calidad del
índice del almacén de columnas:https://docs.microsoft.com/en-us/azure/sql-data-warehouse/
sqldata-warehouse-tables-index#causes-of-poor-columnstore-index-quality .
Obtenga más información sobre las prácticas recomendadas para Azure SQL Data Warehouse
leyendo el siguiente artículo:https://docs.microsoft.com/en-us/azure/sql-data-warehouse/
sqldata-warehouse-best-practices .
Fábrica de datos de Azure (AAD ) es un servicio de integración de datos basado en la nube, tolerante a
fallas y de alta disponibilidad que automatiza el movimiento y la transformación de activos de datos
entre su red local y los servicios de datos de Azure según un programa o activador definido. ADF admite
la ingesta de una gran variedad de orígenes de datos, incluidos orígenes de datos estructurados o no
estructurados, lo que hace que ADF sea ideal para implementaciones modernas de almacenamiento de
datos en Azure. Debido a que ADF está integrado de forma nativa con otros servicios de datos de Azure,
como Azure SQL Data Warehouse, Azure Databricks y Azure Storage, usar ADF para automatizar el
movimiento y la transformación de datos en un ecosistema de datos moderno creado en Azure se vuelve
muy fácil. Azure Data Factory es la herramienta de movimiento de datos ideal para automatizar la carga
de Azure SQL Data Warehouse.
Las últimas mejoras de ADF (ADF v2) estuvieron disponibles de forma general en junio de 2018. ADF v2
introdujo una serie de nuevas capacidades.
338|Almacenamiento de datos
Flujo de control
ADF incluye construcciones de canalización de datos de flujo de control, como ramificaciones, bucles,
ejecución condicional y parametrización, para permitirle orquestar trabajos de integración de datos
complejos que sean flexibles y reutilizables.
ADF ahora admite el diseño, administración, mantenimiento y monitoreo de sus canalizaciones directamente
en su navegador. La integración nativa con repositorios de Git en Visual Studio Team Services permite a sus
equipos de desarrollo colaborar en canalizaciones de datos, así como en la gestión y automatización de
compilaciones y lanzamientos.
Horarios flexibles
Programe canalizaciones en un programador de reloj de pared o activadores basados en eventos, o con programaciones de
ventana cambiantes.
ADF ahora admite la creación de canalizaciones ETL en la nube para transformar datos a escala con
Spark mediante clústeres bajo demanda de HDInsight o cuadernos de Azure Databricks.
Soporte de SDK
Se agregó y actualizó compatibilidad con SDK para Python, .NET, REST y PowerShell para crear
aplicaciones personalizadas con ADF.
ADF se compone de varios componentes clave, que sirven como plataforma sobre la cual puede crear
flujos de trabajo basados en datos con pasos para mover y transformar datos.
Tubería
Una canalización es una agrupación lógica de actividades que realiza una unidad de trabajo. Las
actividades de una canalización realizan una tarea, como copiar datos de un entorno de SQL Server
local, transformar los datos con una actividad de flujo de datos de asignación y luego cargar los
datos en una instancia de Azure SQL Data Warehouse.
Uso de Azure Data Factory |339
Actividad
Una actividad representa un paso en un proceso. ADF admite actividades de movimiento de datos,
actividades de transformación de datos y actividades de control. Por ejemplo, Copiar actividad se puede
utilizar para copiar datos de un almacén de datos a otro.
Conjuntos de datos
Un conjunto de datos representa estructuras de datos dentro de almacenes de datos, que simplemente apuntan o hacen
referencia a los datos que desea utilizar en sus actividades como entradas o salidas. Por ejemplo, un conjunto de datos puede
ser tablas que existen en una base de datos o archivos en Azure Blob Storage.
Servicios vinculados
Un servicio vinculado funciona como una cadena de conexión y define la información de conexión
requerida por ADF para conectarse a un recurso externo. Los servicios vinculados se utilizan para dos
propósitos en ADF:
• Para representar un almacén de datos, como una base de datos local de SQL Server, una base de datos de Oracle, un
recurso compartido de archivos o una cuenta de Azure Blob Storage.
• Para representar un recurso informático que puede albergar la ejecución de una actividad, como una consulta
de Hive en un clúster de HDInsight Hadoop o un procedimiento almacenado en una base de datos de SQL
Server.
El siguiente diagrama ilustra las relaciones entre una canalización, una actividad, un conjunto de datos y un
servicio vinculado en ADF:
Figura 11.4: Una canalización es una agrupación lógica de actividades que produce o consume un conjunto de datos y se ejecuta
en un servicio vinculado
340|Almacenamiento de datos
Nota
Para encontrar una lista completa de orígenes y destinos de datos admitidos para la actividad
de copia, consulte la siguiente documentación:https://docs.microsoft.com/en-us/azure/data-
factory/v1/data-factory-data-movement-activities .
Por ejemplo, puede copiar datos de una instancia de SQL Server local a Azure SQL Data
Warehouse mediante los siguientes pasos:
1. Primero, abra el portal de Azure (https://portal.azure.com ). Luego, haga clic en Crear un recurso en la
parte superior izquierda. En la barra de búsqueda, escriba "Data Factory" y presione Entrar. Seleccione el
recurso Data Factory y luego haga clic en Crear. Complete el formulario para crear una nueva instancia
de Data Factory. Ingrese un nombre globalmente único y seleccione la suscripción. Seleccione si desea
crear un nuevo grupo de recursos o utilizar un grupo de recursos existente. Asegúrese de que la versión
esté configurada en V2 y seleccione la ubicación geográfica para la instancia de Data Factory.
Finalmente, haga clic en Crear.
2. Cuando la nueva instancia de Data Factory haya terminado de aprovisionarse, abra la hoja de Data
Factory seleccionando la instancia de Data Factory recién creada. Haga clic en Autor & Botón
Monitor en la hoja Descripción general de Data Factory.
3. ADF presenta muchas plantillas para crear canalizaciones que pueden realizar una
variedad de tareas, incluida la copia de datos de Google BigQuery a Azure Data Lake.
Almacenar, realizar ETL con Azure Databricks, cargar una dimensión de tipo 2 que cambia
lentamente y más. Para este ejemplo, usaremos una plantilla predefinida para copiar datos
desde un SQL Server local a Azure SQL Data Warehouse. Haga clic en el botón Crear
canalización a partir de plantilla:
Copiar datos en Azure SQL Data Warehouse |341
Figura 11.5: Crear una canalización de Data Factory a partir de una plantilla
4. Una vez que se abra la ventana del Editor de Data Factory, busque SQL Data Warehouse en el
cuadro de texto Filtro. Haga clic en la plantilla para copiar datos desde SQL Server local a
SQL Data Warehouse. La plantilla requiere que complete la entrada del usuario para crear la
plantilla de canalización. Debe definir las entradas DataSourceConnection y
DataDestinationConnection.
5. En la entrada DataSourceConnection, seleccione un servicio vinculado existente para usar o defina un nuevo
servicio vinculado haciendo clic en + Nuevo. Si está creando un nuevo servicio vinculado, ingrese un nombre y
una descripción para el servicio vinculado. En el cuadro desplegable debajo de Conectar mediante Integration
Runtime, haga clic en + Nuevo. Para permitir que ADF consulte un servidor SQL local, debemos configurar un
entorno de ejecución de integración autohospedado en su red local para facilitar la conexión. Haga clic en el
mosaico etiquetado Autohospedado. Introduzca un nombre para el entorno de ejecución de integración
autohospedado y haga clic enPróximo. Puede usar la Opción 1: Configuración rápida para configurar el entorno
de ejecución de integración autohospedado en su computadora actual o puede usar la Opción 2: Configuración
manual para descargar e instalar el entorno de ejecución de integración en una computadora separada. Cuando
haya configurado correctamente el entorno de ejecución de integración autohospedado, haga clic enFinalizar.
6. Con el entorno de ejecución de integración autohospedado configurado, ahora puede terminar de crear el nuevo
servicio vinculado. Ingrese el nombre del servidor, el nombre de la base de datos, el tipo de autenticación, el nombre
de usuario y la contraseña. Hacer clicFinalizar.
342|Almacenamiento de datos
7. A continuación, debe definir la instancia de Azure SQL Data Warehouse que desea usar en la
entrada DataDestinationConnection. Si tiene una instancia de SQL Data Warehouse existente
que ya configuró como servicio vinculado y le gustaría usar, selecciónela ahora. Si necesita
crear un servicio vinculado para una nueva instancia de Azure SQL Data Warehouse, haga clic
en + Nuevo. Ingrese el nombre y la descripción del nuevo servicio vinculado.
En el cuadro desplegable bajo Conectar mediante Integration Runtime, asegúrese de seleccionar
AutoResolveIntegrationRuntime. Seleccione la suscripción de Azure, el nombre del servidor, el nombre de la
base de datos, el tipo de autenticación, el nombre de usuario y la contraseña para la instancia de Azure SQL
Data Warehouse que seleccionó. Hacer clicFinalizar. Finalmente, en la pantalla de la plantilla, haga clic en
Usar esta plantilla:
Nota
Para permitir que ADF se conecte a Azure SQL Data Warehouse, debe habilitar Permitir acceso a los
servicios de Azure en la configuración del firewall de SQL Server para su instancia de Azure SQL Data
Warehouse.
9. Para completar el esquema para DataDestination1, complete los mismos pasos mencionados
anteriormente. Una vez que haya completado los esquemas para los conjuntos de datos DataSource1 y
DataDestination1, navegue hasta la canalización en Recursos de fábrica y haga clic en Copiar actividad en
el lienzo de diseño. Primero, navegue hasta elHundirpestaña para Copiar actividad y deshabilite la
opción Permitir Polybase. Luego, ve alCartografíay asegúrese de que las columnas de origen estén
asignadas correctamente a las columnas de destino. Sobre elAjustespestaña, deshabilite Habilitar
preparación. Haga clic en elPublicar todobotón en la parte superior izquierda. Para probar su
canalización, haga clic en elDepuraren la ventana del editor de tuberías.
10. Si necesita programar la canalización para que se ejecute automáticamente de forma recurrente,
haga clic en el botón Activadores en la parte inferior de la hoja Recursos de fábrica. Tiene la opción
de definir tres tipos diferentes de activadores.
Cronograma: un desencadenador que invoca una canalización según un cronograma de reloj de pared. Por ejemplo,
utilice este activador cuando necesite que una canalización se ejecute todos los días a las 3 p.m.
Alojamiento de paquetes SSIS en ADF |343
Ventana que cae: Un disparador que opera en un intervalo periódico, al mismo tiempo que
conserva el estado. Por ejemplo, utilice un activador de ventana giratoria cuando desee ejecutar una
canalización una vez cada 15 minutos.
Evento: Un disparador que responde a un evento. Por ejemplo, use un desencadenador basado en
eventos cuando necesite ejecutar una canalización cuando un archivo llegue o se elimine en Azure
Blob Storage.
Nota
Para obtener más información sobre la ejecución de canalizaciones de ADF con un desencadenador, consulte
el siguiente artículo:https://docs.microsoft.com/en-us/azure/data-factory/concepts-pipelineexecution-triggers
.
ADF admite el alojamiento de paquetes SSIS en recursos informáticos dedicados, lo que significa que ahora
puede elevar y trasladar cargas de trabajo SSIS existentes a Azure.
Para admitir la ejecución de paquetes SSIS en Azure, primero debe aprovisionar un Azure-SSIS
Tiempo de ejecución de integración (IR ) para ejecutar paquetes SSIS de forma nativa. Azure-SSIS
IR es un clúster de Azure totalmente administradomaquinas virtuales (máquina virtual s) dedicado
a ejecutar sus paquetes SSIS. Su Azure-SSIS IR se puede ampliar especificando el tamaño del nodo y
se puede ampliar especificando la cantidad de nodos en el clúster. También puede administrar el
costo de ejecutar Azure-SSIS IR deteniendo e iniciando Azure-SSIS IR según las demandas de su
carga de trabajo.
Opcionalmente, puede usar el servidor de Azure SQL Database con un punto de conexión de servicio
de red virtual o una instancia administrada de Azure SQL Database para hospedar la base de datos
del catálogo SSIS. Un requisito previo para usar paquetes SSIS alojados en ADF para consultar
orígenes de datos dentro de su red local es conectar Azure-SSIS IR a una red virtual de Azure y
configurar los permisos/configuraciones de la red virtual según sea necesario.
Los paquetes SSIS alojados en ADF se pueden ejecutar creando una canalización ADF con una
actividad Ejecutar paquete SSIS. Esto le permitirá integrar sus paquetes SSIS alojados en ADF
dentro de sus canalizaciones de ADF.
Alternativamente, los paquetes SSIS alojados en ADF también se pueden ejecutar mediante una actividad de
procedimiento almacenado dentro de una canalización de ADF.
344|Almacenamiento de datos
SSIS Feature Pack para Azure es una extensión que proporciona una variedad de componentes
para crear paquetes SSIS para conectarse a servicios de Azure, transferir datos entre Azure y
fuentes de datos locales y procesar datos almacenados en Azure. Descargue el paquete de
características SSIS para Azure aquí:https://docs.microsoft.com/en-us/sql/integrationservices/
azure-feature-pack-for-integration-services-ssis?view=sql-server-2017 .
Para obtener más información sobre cómo alojar y ejecutar el paquete SSIS en ADF, consulte los siguientes
artículos:
Hoy en día, las organizaciones reconocen el valor de todo tipo de datos y pueden aprovechar eficazmente
sus activos de datos. Muchas organizaciones buscan comprender y analizar todos los activos de datos,
independientemente del tamaño, la forma o el valor percibido de los datos. Debido a esto, muchas
organizaciones están adoptando arquitecturas de lagos de datos donde se almacenan datos de todo tipo
para análisis futuros. Azure Data Lake Storage es la base para crear arquitecturas de lagos de datos para
almacenar datos de cualquier forma, volumen y velocidad en la nube mientras se define el esquema de
datos en el momento de la lectura.
Almacenamiento de lago de datos de Azure |345
Azure Data Lake Storage y Azure SQL Data Warehouse están diseñados para trabajar juntos y permitir a las
organizaciones crear e integrar fácilmente sus entornos de data lake y data warehouse sin problemas. Los
conjuntos de datos almacenados en Azure Data Lake Storage se pueden consultar fácilmente para cargarlos o
analizarlos utilizando la tecnología PolyBase de Azure SQL Data Warehouse, como se mencionó anteriormente
en este capítulo.
Nota
El uso de Azure Data Lake Storage y PolyBase es la práctica recomendada para cargar
o exportar grandes volúmenes de datos en Azure SQL Data Warehouse.
Almacenamiento de Azure Data Lake Gen2 (ADLS Gen2 ), la última versión de Azure Data Lake
Storage, ofrece varias mejoras y capacidades nuevas con respecto a la versión anterior de Azure
Data Lake Storage.
ADLS Gen2 admite la administración y el acceso a datos como lo haría con el sistema de archivos
distribuido Hadoop. ElSistema de archivos Azure Blob (ABFS ) está disponible para su uso en
entornos Apache Hadoop, incluidos Azure SQL Data Warehouse y Azure Databricks, para acceder a
los datos almacenados en ADLS Gen2.
ADLS Gen2 presenta un modelo de control de acceso que admite Azurecontrol de acceso
basado en roles (RBAC) y tipo POSIXlistas de control de acceso (LCA s). Además, estas
configuraciones se pueden configurar a través de Azure Storage Explorer o mediante marcos
como Hive y Spark.
Económico
ADLS Gen2 ofrece capacidad de almacenamiento y transacciones de bajo costo. A medida que los datos pasan por su ciclo de
vida completo, las tarifas de facturación cambian, manteniendo los costos al mínimo a través de características integradas
como el ciclo de vida de Azure Blob Storage. La administración del ciclo de vida de Azure Blob Storage ofrece una política
basada en reglas que le permite realizar la transición de un almacenamiento de blobs a un almacenamiento más fresco para
optimizar el rendimiento y el costo, eliminar blobs al final de su ciclo de vida y definir reglas que se aplicarán una vez al día en
la cuenta de almacenamiento. nivel y aplicar reglas a contenedores o a un subconjunto de blobs.
346|Almacenamiento de datos
Controlador optimizado
El controlador ABFS está optimizado específicamente para análisis de big data, lo que convierte a Azure Data Lake
Storage en la plataforma de almacenamiento ideal para análisis avanzados en Azure.
Nota
Vea los siguientes tutoriales para aprender cómo empezar a utilizar Azure Data Lake
Storage:
Cómo extraer, transformar y cargar datos con Apache Hive en Azure HDInsight
https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-
tutorialextract-transform-load-hive
Azure Databricks es un servicio de análisis rápido, sencillo y colaborativo basado en Apache Spark
optimizado para Azure. Databricks fue diseñado con los fundadores de Apache Spark y está
estrechamente integrado con Azure para brindar configuración con un solo clic, flujos de trabajo
optimizados y un espacio de trabajo interactivo que permite la colaboración entre científicos, ingenieros y
analistas de datos.
Azure Databricks está estrechamente integrado con servicios de datos de Azure, como SQL Data
Warehouse, Data Lake Storage, Cosmos DB, SQL Database, Event Hubs y Power BI. Databricks es
ideal para trabajar con datos estructurados o no estructurados, procesamiento y análisis de datos en
tiempo real para aplicaciones analíticas e interactivas, aprendizaje automático y análisis predictivo,
cálculo de gráficos, realización de operaciones ETL y otros tipos de ingeniería de datos. A través de
una experiencia de espacio de trabajo colaborativo e integrado, Azure Databricks facilita el proceso
de exploración de datos, visualización de datos con paneles interactivos con solo unos pocos clics y
documentación de su progreso en cuadernos en R, Python, Scala o SQL.
Trabajar con datos de streaming en Azure Stream Analytics |347
Nota
Con la opción sin servidor, Azure Databricks abstrae la complejidad de la infraestructura y la
necesidad de experiencia especializada para instalar y configurar su infraestructura de
datos.
Azure Databricks es una plataforma de análisis muy flexible, pero es especialmente útil en los siguientes
escenarios relacionados con aplicaciones de almacenamiento de datos que aprovechan Azure SQL Data
Warehouse:
• Análisis de datos en tiempo real en una carga de trabajo de almacenamiento de datos en tiempo real
Nota
Obtenga más información sobre Azure Databricks revisando los siguientes recursos y
tutoriales:
Extraer, transformar y cargar datos en Azure SQL Data Warehouse mediante Azure
Databricks.https://docs.microsoft.com/en-us/azure/azure-databricks/ databricks-
extract-load-sql-data-warehouse
Stream Analytics es ideal en escenarios relacionados con el almacenamiento de datos en tiempo real. Cuando se
usa con servicios de procesamiento de eventos como Azure Event Hubs o Azure IoT Hub, Stream Analytics se
puede usar para realizar la limpieza de datos, la reducción de datos y las necesidades de almacenamiento y
reenvío de datos. Stream Analytics puede cargar datos directamente en Azure SQL Data Warehouse mediante el
adaptador de salida de SQL, pero el rendimiento se puede mejorar con una mayor latencia utilizando PolyBase
para leer los datos de streaming desde Azure Blob Storage, como se ilustra en Figura 11.6:
Figura 11.6: Uso de Azure Stream Analytics para escenarios de almacenamiento de datos en tiempo real
EnFigura 11.7patrón, Azure Stream Analytics se utiliza como un motor ETL casi en tiempo real. Los eventos
recién llegados se transforman y almacenan continuamente en un contenedor de Azure Blob Storage
divididos por fecha y hora. Los datos almacenados en Azure Blob Storage se pueden cargar directamente
en Azure SQL Data Warehouse mediante PolyBase.
Nota
Crear un trabajo de Stream Analytics mediante Azure Portal.https://docs.microsoft. com/
en-us/azure/stream-analytics/stream-analytics-quick-create-portal
Power BI Desktop es una aplicación gratuita que se instala en su computadora local y le permite
conectarse, transformar y visualizar sus datos. Power BI Desktop le permite conectarse a múltiples
orígenes de datos y combinarlos en un modelo de datos con el fin de ensamblar una colección de
elementos visuales denominado informe. Este informe se puede compartir con otras personas a través del
servicio Power BI o Power BI Report Server. Power BI Desktop es una de las principales formas en que los
desarrolladores y usuarios avanzados de BI pueden crear informes y modelos de datos de Power BI.
Nota
Descargue Power BI Desktop aquí para comenzar a crear modelos de datos e informes:
https://powerbi.microsoft.com/en-us/desktop/ .
Servicio Power BI
El servicio Power BI, a veces llamado Power BI en línea o app.powerbi.com, es donde publica y
comparte de forma segura el contenido que ha creado con Power BI Desktop. En el servicio Power
BI, puede crear paneles para navegar a través de muchos informes y muchas fuentes de datos,
paneles para transformar flujos de datos, paneles para integrar y enriquecer big data e informes
basados en modelos de datos compartidos. El servicio Power BI es la mejor manera de distribuir
datos y obtener conocimientos más profundos en toda su organización.
350|Almacenamiento de datos
Power BI Premium
Nota
Vea la siguiente documentación para obtener más información sobre Power BI Premium:https://
docs.microsoft.com/en-us/power-bi/service-premium-what-is .
Una puerta de enlace de Power BI es un software que se instala dentro de su red local para facilitar el
acceso a los datos dentro de la red. La puerta de enlace de Power BI puede denominarse puerta de
enlace de datos o puerta de enlace de datos empresariales. La puerta de enlace de datos actúa como
puente entre el servicio Power BI y sus orígenes de datos dentro de su red para admitir la actualización
de flujos de datos, la consulta directa de orígenes de datos y modelos de datos.
Nota
Consulte la siguiente guía práctica para comprender cómo instalar y configurar una puerta
de enlace de Power BI:https://docs.microsoft.com/en-us/power-bi/service-gatewayinstall .
Vea el siguiente artículo para obtener más información sobre la administración de orígenes de datos
utilizados por Power BI:https://docs.microsoft.com/en-us/power-bi/service-gateway-manage .
Análisis de datos mediante Power BI e introducción a Power BI |351
Power BI ofrece una colección de aplicaciones móviles para dispositivos móviles iOS, Android y
Windows 10, que le permiten acceder a su contenido de Power BI en el servicio Power BI y Power BI
Report Server. Con las aplicaciones móviles de Power BI, puede permanecer conectado a sus datos,
informes y paneles desde cualquier dispositivo y ubicación.
Nota
Lea el siguiente artículo para obtener más información sobre la optimización de informes para
aplicaciones móviles de Power BI:https://docs.microsoft.com/en-us/power-bi/desktop-create-phonereport
.
Power BI Report Server es un servidor de informes local con un portal web que muestra y
administra informes e indicadores clave de rendimiento. Esto también incluye las herramientas
para crear informes de Power BI, informes paginados, informes móviles e indicadores clave de
rendimiento. Power BI Report Server incluye un superconjunto de características de SQL Server
Reporting Services y se trata en detalle enCapítulo 13,Servidor de informes de Power BI.
Nota
Lea la siguiente documentación para comprender las diferencias entre Power BI
Report Server y el servicio Power BI:https://docs.microsoft.com/en-us/power-bi/
report-server/compare-report-server-service .
352|Almacenamiento de datos
Power BI puede conectarse rápida y fácilmente a Azure SQL Data Warehouse con Power BI
Desktop mediante los siguientes pasos.
1. Primero, abra su instalación local de Power BI Desktop y haga clic en Obtener datos. En la ventana
de diálogo Obtener datos, busque SQL Data Warehouse, haga clic enAlmacén de datos SQL de
Azurey haga clicConectar:
Figura 11.7: Busque SQL Data Warehouse para conectarse a su instancia de Azure SQL Data Warehouse
con Power BI
2. A continuación, ingrese el nombre del servidor para la instancia de Azure SQL Data Warehouse a la que desea
conectarse. Seleccione el modo de conectividad de datos que desea utilizar y haga clic enDE ACUERDO.
Seleccione el tipo de credenciales que desea usar para conectarse e ingrese las credenciales o inicie sesión.
Azure SQL Data Warehouse admite la autenticación mediante credenciales de base de datos o una cuenta de
Microsoft. Hacer clicDE ACUERDO.
3. En la ventana Navegador, navegue hasta las tablas de la base de datos que desea usar y seleccione las
tablas que contienen los datos que desea visualizar en Power BI. Haga clic en las casillas de verificación
para seleccionar las tablas y haga clic en Cargar cuando haya terminado. Ahora está listo para comenzar
a mejorar el modelo de datos y visualizar datos.
Nota
Utilice la ruta de aprendizaje guiado de Power BI para comenzar a crear modelos de datos
e informes y compartir contenido con Power BI:https://docs.microsoft.com/en-us/power-
bi/guided-learning/ .
Servicios de análisis
12
Analysis Services proporciona un rendimiento superior para cargas de trabajo de análisis empresarial
y soporte de decisiones a través del modo multidimensional y el modo tabular. Los modelos
multidimensionales, a veces denominados cubos, se introdujeron con el lanzamiento de
SQL Server 2000, mientras que el modo tabular se introdujo con SQL Server 2012. Tanto el modo
multidimensional como el tabular brindan la capacidad de crear modelos de datos analíticos
diseñados para admitir capacidades de exploración de datos ad hoc al centralizar y estandarizar las
relaciones entre entidades, indicadores clave de rendimiento, jerarquías, cálculos, y seguridad.
Luego, los modelos de datos se pueden integrar con aplicaciones cliente como Power BI, Excel,
Power BI Report Server y muchas otras herramientas de visualización de datos de terceros para
respaldar la exploración de datos y el análisis de autoservicio. En SQL Server 2019, Microsoft
continúa invirtiendo en Analysis Services con mejoras diseñadas para mejorar el rendimiento y la
experiencia del usuario.
356|Servicios de análisis
Los modelos tabulares de SQL Server Analysis Services son muy diferentes en comparación con los modelos
multidimensionales porque, con los modelos semánticos tabulares, los datos se pueden almacenar en una base
de datos en columnas, en memoria y altamente comprimida, diseñada para admitir análisis de negocios en
volúmenes de datos de pequeños a grandes, además para admitir DirectQuery en fuentes de datos
compatibles. Los modelos tabulares también utilizan estructuras de modelado tabular para almacenar y analizar
datos:
Figura 12.1: Los modelos tabulares utilizan estructuras de modelado tabular, incluidas tablas y relaciones, para
almacenar y analizar datos
Introducción a los modelos tabulares |357
Un flujo de trabajo de desarrollo común para desarrollar e implementar un modelo tabular es utilizar
Herramientas de datos de SQL Server (SSDT ) para Visual Studio o Visual Studio con extensiones de
Analysis Services para diseñar el modelo, implementar el modelo como una base de datos en SQL Server
Analysis Services oServicios de análisis de Azure (AAS ), programar el reprocesamiento automático del
modelo de datos y asignar membresía de usuario a roles de seguridad para facilitar el acceso de los
usuarios a través de herramientas de inteligencia empresarial.
Otro desarrollo popular para los usuarios empresariales y usuarios avanzados que desarrollan e implementan
modelos tabulares es la capacidad de usar Power Pivot y Power Query en Excel para conectarse a fuentes de
datos, limpiar y transformar datos, y modelar datos usando una interfaz familiar. Los datos se pueden visualizar
utilizando las poderosas capacidades de visualización de Excel. Una vez que el modelo esté listo, el archivo de
Excel se puede entregar a un desarrollador de inteligencia empresarial que puede convertir el modelo de datos
de Power Pivot en un modelo de datos de Analysis Services mediante Visual Studio o importándolo aEstudio de
administración de SQL Server (SSMS ) con un trabajo mínimo requerido.
Una vez implementadas, la gestión de bases de datos de modelos tabulares normalmente se realiza mediante SSMS. SSMS se
puede utilizar para iniciar procesos de actualización de datos, modificar roles de seguridad y membresía de roles, completar
operaciones de copia de seguridad y restauración, emitir expresiones de análisis de datos o consultas de expresiones
multidimensionales y crear secuencias de comandos para nuevos objetos utilizando el Lenguaje de secuencias de
comandos de modelo tabular (TMSL ).
Los usuarios normalmente consultarán el modelo tabular utilizando herramientas cliente populares como
Power BI, Excel, Power BI Report Server, SQL Server Reporting Services u otras herramientas de terceros. Para
consultar el modelo tabular, los usuarios necesitarán acceso de lectura al modelo.
358|Servicios de análisis
Figura 12.2: Los modelos multidimensionales presentan construcciones de modelado de cubos, incluidos grupos de medidas,
dimensiones y relaciones
Al igual que cuando se desarrolla un modelo tabular, el flujo de trabajo común para desarrollar e
implementar un modelo multidimensional es usar SSDT para Visual Studio o Visual Studio con
extensiones de Analysis Services para diseñar el modelo, implementar el modelo como una base de datos
en un servidor SQL Server Analysis Services, configurar en modo multidimensional, programar el
reprocesamiento automático del modelo de datos mediante SQL Server Integration Services y trabajos
del Agente SQL Server, y asignar membresía de usuario a roles de seguridad para facilitar el acceso de los
usuarios.
La gestión de un modelo multidimensional también se realiza mediante SSMS. Al igual que con los modelos
tabulares, SSMS se puede utilizar para iniciar procesos de actualización de datos, modificar roles de
seguridad y membresía de roles, completar operaciones de respaldo y restauración, emitirExpresiones de
análisis de datos (DAX ) oExpresiones multidimensionales (MDX ) consultas y scripts de nuevos objetos
utilizando elLenguaje de secuencias de comandos de servicios de análisis (ASL ).
Mejoras en modo tabular |359
Nota
Revise el siguiente artículo para comprender las diferencias entre los modelos tabulares y
multidimensionales y las consideraciones para decidir cuándo utilizar modelos tabulares y
multidimensionales:https://docs.microsoft.com/en-us/sql/analysisservices/comparing-
tabular-and-multidimensional-solutions-ssas?view=sql-serverver15 .
• Grupos de cálculo
• Consulta directa
• Adjuntar en línea
360|Servicios de análisis
El entrelazado de consultas con sesgo de consulta corta permite que las consultas simultáneas compartan recursos de CPU
para que las consultas más rápidas no queden bloqueadas detrás de consultas más lentas. El sesgo de consultas cortas significa
que a las consultas rápidas se les puede asignar una mayor proporción de recursos que a las consultas de larga duración.
El entrelazado de consultas pretende tener poco o ningún impacto en el rendimiento de las consultas que se
ejecutan de forma aislada. Una sola consulta aún puede consumir tanta CPU como sea posible.
Nota
Para obtener más información sobre el entrelazado de consultas con sesgo de consulta corta y cómo
habilitar esta configuración, lea la siguiente documentación:https://docs.microsoft.com/en-us/
analysis-services/tabular-models/query-interleaving .
Hay tres nuevas configuraciones de memoria para ayudar con la gestión de recursos. Estas
configuraciones de memoria están disponibles actualmente para Azure Analysis Services:
• DbpropMsmdRequestMemoryLimit: Esta propiedad es una propiedad XML para análisis que se utiliza
para anular el valor de la propiedad del servidor Memory\QueryMemoryLimit para una conexión
determinada. La unidad de medida es kilobytes. Aquí hay una cadena de conexión de muestra que utiliza
elDbpropMsmdRequestMemoryLimitpropiedad:
Grupos de cálculo
Los grupos de cálculo son una característica nueva e interesante disponible en Azure Analysis Services y
son nuevas en SQL Server 2019 Analysis Services. Los grupos de cálculo están destinados a abordar la
cuestión de la proliferación extensiva de medidas en escenarios de modelado complejos que involucran
cálculos comunes, como los cálculos de inteligencia de tiempo. Además, los grupos de cálculo permitirán
que muchas organizaciones con cubos multidimensionales existentes con dimensiones de inteligencia
de tiempo migren a modelos tabulares. De esta manera, pueden aprovechar las funciones tabulares más
recientes y/o migrar a la nube mediante Azure Analysis Services.
Muchos modelos tabulares de Analysis Services presentan docenas o cientos de cálculos base. Los
grupos de cálculo le permiten definir una serie de cálculos a través de un grupo de cálculo, que se
puede aplicar a cualquier número de cálculos base. Un grupo de cálculo se expone al usuario final
como una tabla con una sola columna. Cada valor de la columna representa un cálculo reutilizable
que se puede aplicar a cualquier medida base cuando corresponda. Los grupos de cálculo reducen la
cantidad de cálculos en un modelo tabular y proporcionan una interfaz simple y ordenada para el
usuario final.
Se introducen las siguientes tres nuevas funciones DAX para admitir grupos de cálculo:
Nota
Revise la siguiente documentación para obtener más información sobre los grupos de cálculo:
https://docs.microsoft.com/en-us/sql/analysis-services/tabular-models/calculationgroups?
view=sql-server-ver15 .
Las cadenas de formato dinámico, cuando se utilizan con grupos de cálculo, permiten el formato
condicional para las medidas. Esto es muy útil en escenarios donde los cálculos en un grupo de
cálculo deben dar formato a las medidas de manera diferente según el cálculo. Por ejemplo, un
cálculo de crecimiento interanual debe formatearse como moneda, mientras que un cálculo de
porcentaje de crecimiento interanual debe formatearse como porcentaje.
Para facilitar el formato dinámico de las medidas utilizadas con un grupo de cálculo, se
agrega la siguiente función DAX:
Nota
Para obtener más información sobre cadenas de formato en Analysis Services,
revise la siguiente documentación:https://docs.microsoft.com/en-us/sql/
analysisservices/multidimensional-models/mdx/mdx-cell-properties-format-
stringcontents?view=sql-server-2017#numeric-values .
Mejoras en modo tabular |363
Consulta directa
De forma predeterminada, los modelos tabulares utilizan una caché en memoria para almacenar y consultar datos.
Normalmente, esto garantiza que las consultas simples y complejas en un modelo tabular sean muy rápidas. Pero en ciertos
escenarios con conjuntos de datos muy grandes, es posible que la memoria disponible no sea suficiente para cumplir con los
requisitos de volumen y actualización de datos.
Un modelo tabular con DirectQuery activado no almacena datos en la memoria caché. En cambio,
el conjunto de datos permanece en elSistema de gestión de bases de datos relacionales (
RDBMS ) y todas las consultas contra el modelo tabular se envían al RDBMS subyacente.
DirectQuery ofrece los siguientes beneficios para superar las limitaciones relacionadas con el volumen de datos
agresivo y los requisitos de actualización:
• Los conjuntos de datos pueden ser más grandes que la memoria disponible del servidor de Analysis Services.
• Los datos siempre están actualizados porque los cambios en el conjunto de datos
subyacente se reflejan inmediatamente en las consultas de los modelos sin necesidad
de procesar el modelo de Analysis Services.
En SQL Server 2019, las siguientes fuentes de datos son compatibles con DirectQuery:
Para habilitar un modelo tabular para DirectQuery usando SSDT o Visual Studio con la extensión de Analysis
Services, seleccione elmodelo.bimarchivo y navegue hasta elPropiedades ventana. Encuentra elModo de
consulta directapropiedad y establezca el valor enEn, como se ve en la siguiente captura de pantalla.
DirectQuery también se puede habilitar para un modelo después de la implementación modificando las
propiedades de la base de datos en SSMS:
Figura 12.5: Habilitación de DirectQuery para un modelo tabular configurando la propiedad Modo DirectQuery en Activado
• Los modelos DirectQuery sólo pueden utilizar datos de una única base de datos relacional. Los modelos
tabulares que incluyen datos de múltiples fuentes no se pueden habilitar para DirectQuery.
• Los modelos de DirectQuery no pueden utilizar un procedimiento almacenado como instrucción SQL
especificada para una definición de tabla cuando se utiliza el Asistente para importación de datos.
• El límite de filas predeterminado es 1.000.000 de filas, que se puede aumentar especificando el Tamaño
máximo de fila intermediapropiedad en elmsmdsrv.iniarchivo.
• En el modo DirectQuery, sólo se puede designar una única partición como partición DirectQuery
para una tabla.
• En casos específicos, los resultados de la consulta pueden diferir entre un modelo almacenado en caché y
un modelo DirectQuery. Las posibles diferencias están relacionadas con la diferencia semántica entre el
motor del modelo almacenado en caché y el motor de la base de datos.
• Utilice el modo DirectQuery cuando sus usuarios requieran acceso en tiempo real a los datos, el
volumen de datos sea mayor que la memoria disponible o necesite utilizar seguridad de nivel de
fila en el motor de base de datos.
• Normalmente, el rendimiento de las consultas de un modelo almacenado en caché es muy rápido, lo que resulta ideal
para aplicaciones de análisis e inteligencia empresarial. Sin embargo, un modelo DirectQuery puede tener un
rendimiento de consulta notablemente más lento, ya que todas las consultas se convierten a SQL y se envían a la
fuente de datos subyacente. Considere la posibilidad de utilizar índices de almacén de columnas en SQL Server 2019
para garantizar que DirectQuery pueda aprovechar las optimizaciones de consultas proporcionadas por el motor de
base de datos.
• Debido a que algunas características del modelo almacenado en caché no son compatibles con
DirectQuery, generalmente se recomienda decidir antes de comenzar el desarrollo del modelo si
su modelo utilizará DirectQuery. De esta manera, elimina el riesgo de desarrollar un modelo
almacenado en caché con características que no son compatibles con DirectQuery.
366|Servicios de análisis
Los filtros unidireccionales son los filtros predeterminados en los modelos tabulares de Analysis
Services. Los filtros cruzados bidireccionales permiten que el contexto de filtro de una relación
determinada se utilice como contexto de filtro para otra relación, siendo una tabla común para ambas
relaciones. Esto significa que un contexto de filtro se puede propagar a una segunda tabla
relacionada en el otro lado de una relación.
Considere el siguiente ejemplo. ElClientey las tablas de Producto tienen cada una una relación
bidireccional conVentas por Internet. Debido a que ambas relaciones están configuradas como
bidireccionales, lo que significa que el filtrado puede ocurrir en ambas direcciones, un contexto de filtro
de laClienteLa tabla se puede propagar alProductomesa.
Para habilitar el filtrado cruzado bidireccional, configure elDirección del filtropropiedad a<<A ambas
tablas>>:
Otra característica importante nueva en SQL Server 2019 Analysis Services y disponible en
Azure Analysis Services son las relaciones de muchos a muchos. Las relaciones de muchos a
muchos en los modelos tabulares permiten relaciones entre dos tablas con columnas no
únicas. Por ejemplo, si la tabla Pronóstico de ventas se especifica a nivel mensual, no es
necesario normalizar la tabla Fecha en una tabla separada a nivel mensual porque se puede
crear la relación de muchos a muchos a nivel mensual.
368|Servicios de análisis
Debido a que el servicio Power BI en la nube almacena en caché los datos de mosaicos del panel y los datos de informes para
la carga inicial de los informes de Live Connect, se podría enviar una cantidad excesiva de consultas de caché a Analysis
Services. En Azure Analysis Services y SQL Server 2019 Analysis Services y versiones posteriores, elPolítica de actualización
de caché del clienteLa propiedad le permite anular laCronogramaconfiguración de actualización de caché en el nivel del
servidor para todos los conjuntos de datos de Power BI. Todos los informes de Live Connect observarán la configuración a
nivel de servidor independientemente de la configuración a nivel de conjunto de datos.
El valor predeterminado para esta propiedad es-1, que permite todas las actualizaciones de caché en segundo plano como se
especifica en elCronogramaconfiguración de actualización de caché para el conjunto de datos. Para desalentar todas las
Adjuntar en línea
SQL Server 2019 Analysis Services presenta la capacidad de adjuntar un modelo tabular como una operación en
línea. La función de conexión en línea se puede utilizar para la sincronización de réplicas de solo lectura en un
entorno de escalamiento horizontal de consultas local.
Sin esta característica, los administradores primero deben desconectar la base de datos y luego adjuntar la
nueva versión de la base de datos, lo que genera tiempo de inactividad cuando la base de datos no está
disponible para los usuarios.
Para realizar una operación de adjuntar en línea, utilice elPermitir sobrescribiropción de laAdjuntar
XMLAdominio:
<Adjuntar xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Carpeta>C:\Program Files\Microsoft SQL Server\MSAS15\OLAP\Data\
AdventureWorks.0.db\</Folder>
<AllowOverwrite>Verdadero</AllowOverwrite> </
Adjuntar>
Presentamos DAX |369
Presentamos DAX
ElDAX El idioma es el lenguaje de fórmulas que se utiliza para crear cálculos en Analysis Services,
Power BI Desktop y Power Pivot para Excel. Las fórmulas DAX incluyen funciones, operadores y
valores para realizar cálculos básicos sobre datos en tablas y columnas. Para los modelos tabulares
creados con Visual Studio 2019, las fórmulas DAX se pueden usar para crear columnas, medidas,
tablas y filtros de filas calculados. La flexibilidad y capacidad del lenguaje de fórmulas DAX es uno de
los aspectos más poderosos de Analysis Services. Un conocimiento firme de DAX le permitirá
abordar cualquier conjunto de requisitos de usuario utilizando un enfoque óptimo.
Nota
Revise la siguiente documentación para obtener la guía completa de la extensa biblioteca
de referencia de funciones DAX:https://docs.microsoft.com/en-us/dax/dax-
functionreference .
El autor del modelo definirá la fórmula DAX para una columna, medida y tabla calculadas utilizando la
barra de fórmulas en Visual Studio. La fórmula para un filtro de fila se definirá en la ventana del
Administrador de funciones. La barra de fórmulas y la ventana Administrador de funciones incluyen las
siguientes funciones para ayudar al autor del modelo a escribir fórmulas DAX:
• Coloración de sintaxis: Las funciones ahora se muestran en fuente azul, las variables en fuente
cian y las constantes de cadena en fuente roja para distinguir estos elementos de expresión más
fácilmente de los campos y otros elementos.
• IntelliSense: Los errores ahora se identifican mediante un guión bajo rojo ondulado y al escribir algunos
caracteres se muestra el nombre de una función, tabla o columna que comienza con caracteres
coincidentes.
• Arreglo de fórmula: en un modelo establecido en el nivel de compatibilidad 1200 o superior, el diseñador del
modelo actualiza automáticamente las medidas que hacen referencia a una columna o tabla cuyo nombre ha
cambiado. Esto no se aplica a los filtros de filas definidos en roles usando el cuadro de diálogo Administrador de
roles.
Columnas calculadas
Las columnas calculadas en un modelo tabular permiten agregar nuevos datos a su modelo en función
de una fórmula DAX que el autor del modelo define durante el diseño del modelo tabular en Visual
Studio. La fórmula de una columna calculada puede hacer referencia a otras columnas existentes en el
modelo tabular. Una columna calculada determinada también puede depender de otras columnas
calculadas.
Cuando define una fórmula válida para una columna calculada durante el diseño del modelo
tabular, el valor de cada fila de la columna se calcula inmediatamente. Una vez implementado el
modelo tabular en el servidor, los valores de fila para la columna calculada se calculan durante el
proceso de actualización de datos.
Las columnas calculadas se pueden utilizar para diversos fines. Por ejemplo, una columna
calculada podría usarse para concatenar valores de otras columnas, manipular valores de cadena,
realizar aritmética en valores numéricos, manipular valores de fecha y hora, crear valores
condicionales y mucho más.
El siguiente ejemplo demuestra una fórmula simple en una columna calculada para
concatenar los valores de otras dos columnas:
='Geografía'[Ciudad] & ", " &erio; 'Geografía'[Código de provincia estatal]
Nota
Para ver un ejemplo paso a paso que describe cómo crear una columna calculada en un
modelo tabular de Analysis Services, consulte el siguiente tutorial:https://docs.microsoft.
com/en-us/sql/analysis-services/tabular-models/ssas-calculated-columns-create-
acalculated-column?view=sql-server-ver15 .
Para obtener más información sobre las columnas calculadas en los modelos tabulares de
Analysis Services, revise el siguiente artículo:https://docs.microsoft.com/en-us/sql/analysis-
services/tabular-models/ssas-calculated-columns?view=sql-server-ver15 .
Medidas calculadas
Las medidas calculadas son fórmulas que generalmente se utilizan para agregar datos
automáticamente dentro del contexto de una consulta. Al igual que las columnas calculadas, las
medidas calculadas las define el autor del modelo mediante Visual Studio. Las medidas pueden basarse
en funciones de agregación estándar comoSUMAoAVGo se puede definir utilizando una fórmula DAX
personalizada.
Presentamos DAX |371
A diferencia de las columnas calculadas, las medidas calculadas requieren una aplicación cliente de informes,
como Excel o Power BI, para proporcionar el contexto con el que evaluar la fórmula. La fórmula dentro de la
medida calculada se evalúa en el momento de la consulta para cada celda dentro del conjunto de resultados.
Figura 12.8: Creación automática de una medida calculada usando la opción Autosuma
Las medidas calculadas también pueden utilizar fórmulas más complejas para crear métodos
personalizados de agregaciones. Por ejemplo, la siguiente fórmula crea una medida que calcula el total
acumulado para elCantidad de ventascolumna:
372|Servicios de análisis
Las medidas calculadas se pueden utilizar para crearIndicadores clave de rendimiento (KPI ). En
Analysis Services, un KPI es una colección de medidas calculadas que se utilizan para definir un valor
base, un valor objetivo y un valor de estado. Antes de poder crear un KPI, primero debe definir una
medida calculada para usar como valor base. Para crear un KPI, haga clic derecho en el medidaque será
utilizado comovalor basey luego haga clicCrear KPI. Para definir el valor objetivo, seleccioneMediday
luego seleccione elmedida objetivoen la lista desplegable o seleccioneValor absolutoy luegotipoun
valor numérico. Luego, utiliza elbarra deslizante para definir los umbrales de estado. Finalmente,
seleccione unestilo de iconopara mostrar el estado del KPI gráficamente.
Nota
Para ver un ejemplo paso a paso que describe cómo crear una medida calculada en un
modelo tabular de Analysis Services, consulte el siguiente tutorial:
https://docs.microsoft.com/en-us/sql/analysis-services/tabular-models/create-
andmanage-measures-ssas-tabular?view=sql-server-ver15 .
Para obtener más información sobre las medidas calculadas en los modelos tabulares de
Analysis Services, incluido cómo usar medidas calculadas para crear KPI, consulte el siguiente
artículo. https://docs.microsoft.com/en-us/sql/analysis-services/tabular-models/measuresssas-
tabular?view=sql-server-ver15 .
Tablas calculadas
Una tabla calculada es una tabla calculada basada en una consulta DAX o en una expresión
derivada de otras tablas en el mismo modelo tabular. Para crear una tabla calculada, primero
debe existir al menos una tabla en el modelo tabular.
Las tablas calculadas, por ejemplo, son útiles para abordar los siguientes escenarios:
• Crear tablas separadas basadas en una sola tabla como una tabla de dimensiones de juego de roles
Para crear una tabla calculada, haga clic en elCree una nueva tabla calculada a partir de una fórmula
DAXpestaña en la parte inferior del diseñador de modelos, como se muestra en la siguiente figura:
Figura 12.9: Creación de una tabla calculada basada en una fórmula DAX
A continuación se muestra un ejemplo de una tabla calculada que suma el monto de ventas para cada
nombre de provincia y año calendario:
Nota
Revise el siguiente artículo para ver un ejemplo paso a paso de cómo crear una columna
calculada:https://docs.microsoft.com/en-us/sql/analysis-services/tabularmodels/create-a-
calculated-table-ssas-tabular?view=sql-server-ver15 .
Filtros de fila
Los filtros de filas definen qué filas de una tabla son accesibles para los miembros de un rol de seguridad
determinado y se definen mediante una fórmula DAX. Cuando el autor del modelo define un rol mediante el
Administrador de roles en Visual Studio, se pueden aplicar filtros de filas para garantizar que los miembros del
rol solo tengan acceso a las filas designadas. Los filtros de filas también se pueden definir para un modelo
actualmente implementado en el servidor de Analysis Services mediante Propiedades de función en SSMS. Un
modelo tabular puede tener múltiples roles para diferentes grupos de usuarios, y cada rol tiene diferentes
filtros de fila.
Un filtro de filas crea un conjunto de filas permitidas que no niega el acceso a otras filas. Las filas que no se devuelven
como parte del conjunto de filas permitido simplemente se excluyen mediante la fórmula DAX. Pero debido a que la
seguridad de Analysis Services es aditiva, si un usuario es miembro de un rol de seguridad que permite el acceso a un
conjunto de filas determinado pero el usuario también es miembro de otro rol de seguridad que no permite el acceso a
ese conjunto de filas, el usuario será capaz de ver el conjunto de roles.
374|Servicios de análisis
Para crear un rol de seguridad con un filtro de fila en Visual Studio, seleccione elModelomenú y
seleccioneRoles. En elAdministrador de funciones, haga clicNuevopara crear un nuevo rol. Debe
darle un nombre al rol y el nivel de permisos asignados a los miembros del rol. Puede asignar
membresía al rol usando elMiembrospestaña. Sobre elFiltros de fila, ingrese una fórmula DAX
para definir qué filas pueden devolver los miembros del rol. La fórmula DAX para un filtro de fila
debe evaluarse como un booleanoVERDADERO FALSOcondición, como se ve en la siguiente figura:
Figura 12.10: Creación de un rol con un filtro de filas para restringir a qué filas se puede acceder
Nota
Para obtener más información sobre roles y filtros de filas en Analysis Services, consulte la
siguiente documentación:https://docs.microsoft.com/en-us/sql/analysis-services/
tabularmodels/roles-ssas-tabular?view=sql-server-ver15 .
La seguridad dinámica a nivel de fila permite al diseñador del modelo aplicar seguridad a nivel de fila
a un grupo de usuarios en función del nombre de usuario o ID de inicio de sesión del usuario en el
momento de acceder al modelo de Analysis Services. Para comprender cómo implementar la
seguridad dinámica a nivel de fila, consulte el siguiente artículo y tutorial:https://docs.microsoft.
com/en-us/sql/analysis-services/tutorial-tabular-1200/supplemental-lessonimplement-dynamic-
security-by-using-row-filters?view=sql-server-ver15 .
Analysis Services también admite seguridad a nivel de tabla y columna, además de seguridad a
nivel de fila. Para obtener más información sobre cómo utilizar la seguridad a nivel de objetos,
consulte el siguiente artículo:https://docs.microsoft.com/en-us/sql/analysis-services/
tabularmodels/object-level-security?view=sql-server-ver15 .
Para evitar un rendimiento subóptimo con los cálculos, consulte las siguientes prácticas
recomendadas:
• Evite crear fórmulas DAX grandes y complejas cuando sea posible. Subdivida columnas
calculadas complejas en múltiples columnas calculadas utilizando fórmulas más pequeñas y
menos complejas. Esto facilitará la resolución de problemas y la depuración.
• Utilice variables siempre que sea posible. Las variables permiten que una expresión DAX determinada reutilice la
lógica dentro de la misma expresión, reduciendo así el tiempo de ejecución. Analizaremos las variables con
más detalle más adelante en este capítulo.
376|Servicios de análisis
Normalmente, un usuario final utilizará una aplicación de herramienta cliente como Excel, Power BI, Power BI
Report Server u otra herramienta de terceros, por ejemplo, para conectarse a una base de datos tabular y
explorar el modelo. Este tipo de herramientas escribirán la consulta DAX en la base de datos tabular en
nombre del usuario a medida que el usuario agrega una columna, medida o filtro al informe. Pero las
consultas DAX también se pueden crear utilizando SSMS u otras herramientas como DAX Studio. Una consulta
definida y ejecutada mediante SSMS devolverá el conjunto de resultados como una tabla.
Los nombres de objetos de Analysis Services no distinguen entre mayúsculas y minúsculas, por lo que referirse al
Ventas por Internet mesa comoventas por internetTe daría la misma tabla. Consulte la siguiente tabla para
obtener ejemplos de cómo hacer referencia a objetos de Analysis Service dentro de una expresión o consulta DAX:
Tabla 12.11: Expresiones y consultas DAX para hacer referencia a objetos de Analysis Service
2. enExplorador de objetos, ampliar laBases de datoscarpeta, haga clic derecho enBases de datos, seleccionar
Nueva consultay seleccioneDAX, como se ve en la siguiente figura. Esto abrirá una nueva ventana de consulta
para comenzar a escribir una consulta DAX:
3. En la nueva ventana de consulta, escriba una consulta simple usando elEVALUARfunción. El EVALUARLa
función requiere una referencia de tabla, como se ve aquí. La siguiente consulta devolverá un conjunto de
resultados que incluye todas las columnas y filas delVentas por Internetmesa:
EVALUAR(
'Ventas por Internet'
)
Debería obtener el siguiente resultado:
4. Para ordenar los resultados de la consulta anterior, agregue unORDENAR PORpalabra clave y una referencia de
columna completa para ordenar el conjunto de resultados de la consulta. Como ejemplo, esta consulta ordena
los resultados de la consulta anterior utilizando elNúmero de orden de ventascolumna:
EVALUAR(
'Ventas por Internet'
)
ORDEN POR 'Ventas por Internet'[Número de pedido de venta] ASC
5. ElDEFINIRLa palabra clave admite la creación de entidades, como variables, medidas, tablas y
columnas, que solo existen mientras dura una consulta. En el siguiente ejemplo, observe la
DEFINIRpalabra clave y las definiciones de múltiples medidas:
DEFINIR
MEDIDA
'Ventas por Internet'[Costo total] = SUMA('Ventas por Internet'[Costo total del producto])
MEDIDA
'Ventas por Internet'[SumSalesAmount] = SUMA('Ventas por Internet'[SumSalesAmount])
MEDIDA
'Ventas por Internet'[Margen de beneficio] = [MontoSumaVentas] - [CostoSuma]
MEDIDA
'Ventas por Internet'[ProfitMarginRatio] =
DIVIDE([ProfitMargin],[SumSalesAmount],BLANK())
EVALUATE(
RESUMEN DE COLUMNAS(
)
ORDENAR POR 'Ventas por Internet'[Número de pedido de venta]
Usando variables en DAX |379
Figura 12.14: La palabra clave DEFINE admite la definición de objetos que existen sólo durante
la duración de la consulta
Nota
Para obtener más información sobre cómo escribir consultas DAX, consulte el siguiente artículo:
https://docs.microsoft.com/en-us/dax/dax-queries .
Las variables se pueden definir en cualquier lugar de una expresión DAX y para cualquier tipo de datos,
incluidas tablas, utilizando la siguiente sintaxis:
Para crear una definición de variable, utilice elvarpalabra clave, como se ve en el siguiente ejemplo de
código:
=var
SumaCantidad = SUMA('Ventas por Internet'[Cantidad de pedido])
RETORNO
SI(
CantidadSuma > 1000,
CantidadSuma * 0,95,
SumaCantidad * 1.10
)
Una expresión DAX puede tener tantas variables como necesite el autor del modelo. Cada variable
tendrá su propiavardefinición, como se ve aquí:
=var
SumaCosto = SUMA('Ventas por Internet'[Costo total del producto])
var
SumaMontoVentas = SUMA('Ventas por Internet'[Importe de ventas])
var
Margen de beneficio = SumaMontoVentas - SumaCosto
RETORNO
DIVIDIR(
Margen de beneficio,
SumaMontoVentas,
BLANCO()
AAS es un totalmente gestionadoPlataforma como servicio (PaaS ) basado en modelos tabulares de SQL
Server Analysis Services para proporcionar modelos de datos de nivel empresarial en la nube. AAS utiliza
el mismo motor de modelado y mashup avanzado integrado en SQL Server 2019 Analysis Services para
admitir la combinación de datos de múltiples fuentes, definir métricas y proteger sus datos en un modelo
de datos semántico tabular.
Introducción a los servicios de análisis de Azure |381
AAS admite modelos tabulares en el nivel de compatibilidad 1200 y superior. Es compatible con
muchas funciones excelentes con las que quizás ya esté familiarizado en SQL Server Analysis
Services Enterprise Edition, incluidas particiones, perspectivas, seguridad a nivel de fila y de
objeto, relaciones bidireccionales y de muchos a muchos, grupos de cálculo, modo DirectQuery
y más.
AAS está disponible en tres niveles diferentes, y cada nivel ofrece diferentes cantidades de potencia de
procesamiento,Unidades de rendimiento de consultas (QPU ), y tamaño de la memoria:
• Nivel de desarrollador: este nivel se recomienda para escenarios de desarrollo y prueba. El nivel
Básico incluye la misma funcionalidad que el nivel Estándar, pero está limitado en potencia de
procesamiento, QPU y memoria. No hay ningún acuerdo de nivel de servicio disponible para el nivel
de Desarrollador, ya que este nivel está destinado únicamente a escenarios de desarrollo y prueba.
• Nivel básico: El nivel Básico está destinado a soluciones de producción que utilizan modelos tabulares
más pequeños, tienen requisitos de actualización de datos simples y tienen una simultaneidad de
usuarios limitada. El nivel Básico no incluye la capacidad de escalamiento horizontal de réplicas de
consultas, perspectivas, particiones múltiples y DirectQuery.
• Nivel estándar: El nivel Estándar es para aplicaciones de producción de misión crítica que requieren
simultaneidad de usuarios elástica y soporte para modelos de datos de rápido crecimiento. El nivel
Estándar también incluye todas las capacidades que ofrece AAS.
Cuando creas un servidor, debes seleccionar un plan con un nivel, aunque puedes cambiar el plan y/o el
nivel más adelante. Siempre tienes la flexibilidad de cambiar de plan dentro del mismo nivel o actualizar
a un nivel superior, pero no puedes bajar de un nivel superior a uno inferior. Todos los niveles admiten
seguridad a nivel de fila y de objeto, almacenamiento en memoria, copia de seguridad y restauración,
traducciones y cálculos DAX.
Nota
Consulte la documentación de detalles de precios para obtener más información sobre las
características y los precios de AAS:https://azure.microsoft.com/en-us/pricing/details/
analysisservices/ .
382|Servicios de análisis
El escalamiento horizontal de AAS permite distribuir las consultas entre varias réplicas de consultas en un grupo de
consultas. Las réplicas de consultas incluyen copias sincronizadas de sus modelos tabulares para admitir la distribución
de cargas de trabajo de consultas y reducir los tiempos de consulta para cargas de trabajo de consultas elevadas. El
grupo de consultas puede contener hasta siete réplicas de consultas adicionales según el plan y la región
seleccionados.
Nota
Consulte la siguiente documentación para aprender cómo configurar el escalamiento horizontal de
AAS:https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-scale-out .
Nota
Consulte la siguiente documentación para obtener más información sobre las fuentes de datos
admitidas: https://docs.microsoft.com/en-us/azure/analysis-services/analysis-servicesdatasource .
Para obtener más información sobre la instalación y configuración de la puerta de enlace de datos
local, consulte la siguiente documentación:https://docs.microsoft.com/en-us/azure/analysisservices/
analysis-services-gateway-install .
Introducción a los servicios de análisis de Azure |383
AAS también brinda seguridad para sus datos confidenciales en múltiples niveles. A nivel de servidor, AAS
proporciona protección de firewall, autenticación de Azure basada en Azure Active Directory, cifrado del
lado del servidor mediante cifrado del lado del servidor Azure Blob, seguridad a nivel de fila y de objeto, y
automatización a través de entidades de servicio para realizar tareas desatendidas.
Como servicio de Azure, AAS también proporciona un nivel básico de protección contraDenegación de
servicio distribuida (DDoS ) ataca automáticamente.
Nota
Para obtener más información sobre cómo AAS protege sus datos, consulte la siguiente
documentación: https://docs.microsoft.com/en-us/azure/analysis-services/analysis-
servicesoverview#your-data-is-secure .
Para obtener más información sobre cómo Azure protege contra ataques DDoS, consulte la
siguiente documentación:https://docs.microsoft.com/en-us/azure/virtual-network/
ddosprotection-overview .
Con AAS, puede seguir utilizando las mismas herramientas con las que ya está familiarizado. Continúe
desarrollando modelos tabulares para AAS mediante SSDT para Visual Studio o Visual Studio con la
extensión de Analysis Services.
También se admite la gestión de sus servidores a través de SSMS. Conéctese a su servidor AAS,
ejecute consultas DAX, ejecute scripts TMSL y automatice tareas utilizando scripts TMSL y
PowerShell.
Se admite la conectividad con herramientas modernas de inteligencia empresarial como Power BI, Excel, Power
BI Report Server y herramientas de terceros, lo que proporciona a los usuarios la flexibilidad de seguir
utilizando herramientas con las que ya están familiarizados para producir visualizaciones interactivas basadas
en en modelos tabulares.
384|Servicios de análisis
Nota
Obtenga más información sobre cómo utilizar las vistas de administración dinámica para
monitorear AAS leyendo la siguiente documentación:https://docs.microsoft.com/sql/
analysisservices/instances/use-dynamic-management-views-dmvs-to-monitor-
analysisservices .
Nombre del servidor: un nombre único utilizado para hacer referencia a su servidor de Analysis Services.
Grupo de recursos: Puede crear un nuevo grupo de recursos o utilizar un grupo de recursos previamente
existente.
Ubicación: seleccione la región del centro de datos de Azure donde debería existir su servidor de
Analysis Services.
Configuración de almacenamiento de respaldo: opcionalmente, defina la cuenta de almacenamiento predeterminada para guardar
copias de seguridad de la base de datos de Analysis Services. Esto también se puede especificar más adelante.
4. Una vez creado el servidor AAS, navegue hasta el recurso AAS mediante Azure Portal. En
elServicios de análisisblade, busque el nombre del servidor y cópielo en su
portapapeles haciendo clic en elCopiar al portapapelesicono a la derecha del nombre
del servidor:
5. Abra su proyecto de Analysis Services en Visual Studio. En elExplorador de la solución, haga clic
derecho en el nombre del proyecto y seleccionePropiedades.
6. En la página de propiedades de implementación, pegue el nombre del servidor AAS en elServidor cuadro de
Figura 12.17: Pegue el nombre del servidor en el cuadro de propiedades del servidor en la página de propiedades de implementación
Introducción a los servicios de análisis de Azure |387
7. Ahora está listo para implementar el modelo. En Visual Studio, haga clic derecho en el archivo del
proyecto en elExplorador de la solucióny seleccioneDesplegar. Se le pedirá que se autentique
en Azure con sus credenciales de Azure. Para implementar o modificar una base de datos de
Analysis Services, debe ser administrador en el servidor. Una vez que se haya autenticado, el
modelo se implementará y estará listo para realizar consultas.
Informe de Power BI
13
Servidor
Power BI Report Server es una empresaInteligencia de Negocio (BI ) solución que admite la visualización
de informes yIndicadores clave de rendimiento (KPI ) y gestionar la distribución de informes en
dispositivos móviles y de escritorio. Power BI Report Server incluye todas las características con las que
puede estar familiarizado enServicios de informes de SQL Server (SSRS ) así como muchas de las
características incluidas con Power BI. En este capítulo, revisaremos las capacidades principales de Power
BI Report Server, las nuevas características que se incluyen en las últimas versiones de Power BI Report
Server, así como las diferencias clave entre Power BI Report Server y SSRS.
Por lo tanto, aunque Power BI Report Server incluye todas las características de SSRS, Power BI
Report Server ofrece varias capacidades nuevas que son exclusivas de Power BI y Power BI Report
Server.
Con Power BI Report Server, las organizaciones ahora pueden implementar informes de Power BI interactivos y
altamente flexibles basados en un modelo de datos integrado en sus entornos de infraestructura local o en la
nube junto con los informes paginados de estilo documento tradicional introducidos con SSRS. Un informe de
Power BI es un informe altamente interactivo que presenta una o más páginas que admiten la exploración de
un modelo de datos integrado o un modelo de datos alojado en Analysis. Los informes de Power BI se
desarrollan utilizando Power BI Desktop optimizado para el servidor de informes.
La aplicación móvil Power BI está disponible sin costo para dispositivos móviles iOS, Android y Windows
y se utiliza para explorar informes de Power BI hospedados en el servicio Power BI en la nube o
hospedados en Power BI Report Server. Un usuario se autentica utilizando sus propias credenciales y
puede explorar su contenido de Power BI en modo en línea y fuera de línea.
La licencia de SSRS se obtiene mediante la compra de SQL Server. Sin embargo, Power BI Report Server está
disponible a través de dos modelos de licencia diferentes:
2.Edición SQL Server Enterprise con Software Assurance: Una organización también puede
obtener los derechos para implementar Power BI Report Server comprando la edición SQL
Server Enterprise con Software Assurance.
Nota
Para obtener más información sobre las licencias de Power BI Report Server y cómo encontrar la
clave de producto de Power BI Report Server, puede consultar la siguiente documentación:https://
docs.microsoft.com/en-us/power-bi/report-server/find-product-key .
Tipos de contenido de informes |391
• Informes de Power BI: Los informes de Power BI son informes de varias páginas basados en un modelo
de datos integrado o un modelo de datos de Analysis Services. Los informes de Power BI se crean
utilizando Power BI Desktop optimizado para Power BI Report Server. Power BI Desktop se utiliza para
desarrollar el modelo de datos y los informes que se publican en Power BI Report Server. Los informes
publicados en Power BI Report Server se pueden explorar mediante la aplicación móvil de Power BI. Los
informes de Power BI pueden incluir un diseño personalizado optimizado para un dispositivo móvil.
• Informes paginados: Los informes paginados son el tipo de contenido tradicional con el que puede
estar familiarizado si ha utilizado SSRS. Utilice este tipo de contenido cuando necesite un control
preciso sobre el diseño, la apariencia y el comportamiento de cada elemento de su informe. Los
usuarios pueden ver un informe paginado en línea, exportarlo a otro formato o recibirlo de forma
programada suscribiéndose al informe. Un informe paginado puede constar de una sola página o
de cientos de páginas, según el conjunto de datos asociado al informe. La necesidad de este tipo de
informes continúa persistiendo en la mayoría de las organizaciones, así como en otros tipos de
contenido de informes que ahora están disponibles en la plataforma de informes de Microsoft.
• Informes móviles: Los informes móviles de SSRS son informes optimizados para dispositivos móviles y
conectados a sus datos locales. Los informes móviles se desarrollan utilizando SQL Server Mobile Report
Publisher. Una vez desarrollados, los informes móviles se publican y comparten a través del portal web
de Power BI Report Server y se pueden explorar a través del portal web, así como a través de la aplicación
móvil de Power BI en dispositivos móviles Android, iOS y Windows en modo en línea y fuera de línea. Los
informes móviles presentan una variedad de tipos de gráficos, incluidos tiempo, categoría, totales,
comparación, mapas de árbol, mapas personalizados y más. Los informes móviles se pueden configurar
para utilizar conjuntos de datos compartidos o archivos de Excel locales como fuente de datos. Más
adelante en este capítulo, analizaremos con más detalle el proceso para crear informes móviles utilizando
SQL Server Mobile Report Publisher.
392|Servidor de informes de Power BI
• KPI: Un KPI es un indicador visual que comunica la cantidad de progreso realizado hacia una meta o
ilustra la relación entre una métrica determinada y un valor objetivo. En Power BI Report Server, un
KPI se basa en la primera fila de datos de un conjunto de datos compartido. Los conjuntos de datos
compartidos se pueden crear y publicar utilizando Report Builder o Visual Studio con la extensión
SSRS. Una vez creado el conjunto de datos compartido, se pueden crear KPI en el portal web de
Power BI Report Server; Cubriremos esto con más detalle más adelante en este capítulo:
Figura 13.1: Power BI Report Server es una solución de BI empresarial que admite la visualización de informes y
KPI y distribución de visualizaciones de datos a usuarios en múltiples dispositivos
• Debe migrar desde una versión heredada de SSRS a Power BI Report Server para garantizar
que su aplicación sea compatible.
Figura 13.2: La migración de SSRS (modo nativo) a Power BI Report Server requiere unos sencillos pasos
Nota
Se admiten SQL Server 2008 Report Services (y versiones posteriores) para la migración a Power BI
Report Server.
Para migrar de SSRS (modo nativo) a Power BI Report Server, complete los siguientes
pasos.
2. Haga una copia de seguridad de los archivos de configuración del servidor de informes, incluidos:
• rsreportserver.config.
• Rswebapplication.config.
• Rssvrpolicy.config.
• Rsmgrpolicy.config.
• Reportingservicesservice.exe.config.
• Web.configpara la aplicación ASP.NET del servidor de informes.
3. Haga una copia de seguridad de la clave de cifrado mediante el Administrador de configuración del servicio de informes.
Nota
Si su migración incluye el uso de una instancia de Motor de base de datos diferente, debe mover la
base de datos del servidor de informes a la nueva instancia de Motor de base de datos. Si está
utilizando la misma instancia del motor de base de datos, puede omitirEtapa 4.
Puede revisar la siguiente documentación para obtener más información sobre cómo mover las
bases de datos del servidor de informes a otra instancia:https://docs.microsoft.com/en-us/sql/
reporting-services/report-server/moving-the-report-server-databases-to-anothercomputer-ssrs-
native-mode?view=sql-server- ver15 .
Explorando nuevas capacidades |395
Nota
Si usa el mismo hardware, puede instalar Power BI Report Server en el mismo
servidor que la instancia SSRS.
Puede revisar la siguiente documentación para obtener más información sobre la instalación de
Power BI Report Server:https://docs.microsoft.com/en-us/power-bi/report-server/installreport-
server .
Nota
Puede revisar la siguiente documentación para familiarizarse con los pasos detallados para
migrar una implementación de SSRS (modo nativo) a una instancia de Power BI Report
Server:https://docs.microsoft.com/en-us/power-bi/report-server/migrate-report-
server#migration-to-power-bi-report-server-from-ssrs-native-mode .
Para obtener más información sobre la migración de Reporting Services (modo integrado
de SharePoint) a Power BI Report Server, revise la siguiente documentación:https://docs.
microsoft.com/en-us/power-bi/report-server/migrate-report-server#migration-topower-
bi-report-server-from-ssrs-sharepoint-integrated-mode .
Si bien las características y visualizaciones disponibles en versiones anteriores de SSRS y Power BI Report
Server continúan estando disponibles en la última versión de Power BI Report Server, hay muchas
características nuevas e importantes que se han introducido en Power BI Report Server durante el último
año. . En esta sección, nos centraremos en sólo algunas de las docenas de nuevas funciones importantes
lanzadas durante los últimos 12 meses.
396|Servidor de informes de Power BI
Analizador de rendimiento
Para mostrar el panel Analizador de rendimiento, seleccione la opciónVistacinta y luego seleccione la casilla
de verificación junto aAnalizador de rendimientopara mostrar el panel Analizador de rendimiento:
Figura 13.3: Habilite el Analizador de rendimiento para estudiar el impacto en el rendimiento de los elementos visuales
Para comenzar a utilizar el Analizador de rendimiento, haga clic en elEmpezar a grabarbotón. Luego,
simplemente cree una interacción en el informe, como seleccionar unrebanador,visualización, ofiltrar, o
haga clic enActualizar imágenesen el panel Analizador de rendimiento. Las duraciones de las consultas
generadas por la interacción se mostrarán visualmente.
Explorando nuevas capacidades |397
Cada interacción tiene un identificador de sección en el panel, que describe la acción que inició
las entradas registradas. En la siguiente figura, la interacción fue de un usuario que resaltó una
visualización:
Figura 13.4: El Analizador de rendimiento se utiliza para medir el rendimiento de elementos específicos del informe.
y se puede utilizar para exportar los resultados.
• consulta DAX: Si se requirió una consulta DAX, se muestra la duración del tiempo entre el
objeto visual que envía la consulta y Analysis Services que devuelve los resultados.
• Pantalla de visualización: este es el tiempo necesario para que la imagen se dibuje en la pantalla,
incluido el tiempo necesario para recuperar imágenes web o codificación geográfica.
• Otro: esto incluye el tiempo necesario para preparar consultas, esperar a que se completen
otros elementos visuales o realizar otros procesos en segundo plano.
Nota
Puede revisar el siguiente vínculo para obtener más información sobre el Analizador de
rendimiento en Power BI Desktop:https://docs.microsoft.com/en-us/power-bi/
desktopperformance-analyzer .
398|Servidor de informes de Power BI
La nueva vista Modelado en Power BI Desktop le permite ver y trabajar con conjuntos de datos
complejos que pueden contener muchas tablas. La nueva vista Modelado ahora admite múltiples
perspectivas de diagrama y edición masiva de columnas, medidas y tablas:
Figura 13.5: La nueva vista Modelado mejora la experiencia de diseño y gestión al trabajar
con modelos de datos grandes y complejos
Nota
Puede revisar el siguiente enlace para obtener más información sobre el uso de la vista
Modelado, la creación de diagramas separados y la configuración de propiedades comunes:
https://docs. microsoft.com/en-us/power-bi/desktop-modeling-view .
Seguridad a nivel de fila (SPI ) ahora se puede configurar para modelos de datos diseñados con Power BI Desktop.
RLS le permite restringir el acceso a los datos a nivel de fila para usuarios determinados mediante filtros definidos
dentro de los roles de seguridad.
RLS se puede configurar para informes importados a Power BI con Power BI Desktop. También
puede configurar RLS para informes que usan DirectQuery.
Explorando nuevas capacidades |399
Para crear un rol de seguridad, navegue hasta laModeladocinta en Power BI Desktop y seleccione
Administrar roles:
Figura 13.6: Seleccione Administrar roles en la cinta Modelado para crear o modificar roles de seguridad
Haga clic enCrearpara crear un nuevo rol de seguridad. Seleccione la tabla que desea utilizar para aplicar una
regla DAX e ingrese la expresión DAX del filtro de tabla. Haga clic enAhorrar:
Figura 13.7: Los roles de seguridad en Power BI usan un filtro DAX para restringir el acceso a los datos en el nivel de fila
400|Servidor de informes de Power BI
Una vez que haya creado los roles de seguridad, puede utilizar elVer como rolesbotón en el
Modeladocinta de Power BI Desktop para probar sus roles de seguridad.
Después de haber guardado el informe de Power BI en Power BI Report Server, puede asignar miembros a los
roles de seguridad. En Power BI Report Server, seleccione los puntos suspensivos (…) al lado del informe.
Luego, seleccioneAdministrar.
Selecciona elSeguridad a nivel de filapágina y haga clic enAñadir miembro. Luego podrá seleccionar roles
de seguridad y agregar usuarios o grupos de Active Directory en el formato de nombre de usuario (
DOMINIO\usuario).
Nota
Obtenga más información sobre RLS en Power BI Report Server revisando la
documentación enhttps://docs.microsoft.com/en-us/power-bi/report-server/row-level-
securityreport-server .
Los temas de informes le permiten colorear rápidamente todo el informe para que coincida con un
tema o marca corporativa. Cuando importa un tema, cada visualización se actualiza
automáticamente para usar los colores del tema. También tienes acceso a los colores del tema desde
la paleta de colores.
Un archivo de tema es unJSONarchivo que incluye todos los colores que desea utilizar en su informe junto con
cualquier formato predeterminado que desee aplicar a los objetos visuales:
{
"nombre": "Día de San Valentín",
Para aplicar un tema a un informe en Power BI Desktop, navegue hasta laHogarcinta, seleccione
Cambiar temay seleccioneImportar tema. Navega hasta elJSONarchivo que contiene la definición de
su tema y seleccione el tema. A continuación, haga clic enAbierto.
Nota
Puede revisar la siguiente documentación para obtener más información sobre cómo funcionan los
temas de informes:https://docs.microsoft.com/en-us/power-bi/desktop-report-themes .
Se agregan nuevas características a cada versión de Power BI Report Server cada cuatro meses.
Para obtener una lista exhaustiva de todas las características nuevas introducidas en Power BI
Report Server, revise la siguiente documentación:https://docs.microsoft.com/en-us/power-bi/
report-server/whats-new .
El objetivo principal de los parámetros del informe es filtrar la fuente de datos y limitar los datos
devueltos en función de las necesidades del usuario. En Power BI Report Server, los informes
paginados admiten la definición de diseños de parámetros personalizados en la vista de diseño de
informes en Report Builder y Visual Studio con la extensión Reporting Services. Puede arrastrar un
parámetro a una columna y fila específicas en el panel Parámetros para organizar los parámetros
según sus requisitos o modificar el tamaño y la forma del panel de parámetros.
Nota
Cuando utilice parámetros de informe, utilice un valor de uso común para el valor predeterminado del
parámetro de modo que el informe se cargue inmediatamente cuando el usuario acceda al informe.
Para personalizar el diseño de parámetros del informe en el Generador de informes, abra el informe y
navegue hasta la páginaVistacinta. Seleccione la casilla de verificación junto aParámetro. Esto expondrá el
Parámetrospanel cerca de la parte superior de su informe.
Para agregar o eliminar columnas y filas delParámetrospanel, haga clic derecho en cualquier parte
del panel y luego seleccione elInsertaroBorrarcomando para modificar el diseño.
Para agregar un nuevo parámetro al panel, haga clic derecho en una celda vacía en el Parámetros
panel y haga clic enAgregar parámetroo haga clic derecho enParámetrosen el Informe de datos
panel y luego haga clic enAgregar parámetro:
Figura 13.8: El panel Parámetros se puede modificar simplemente haciendo clic derecho en cualquier parte del panel
Desarrollar KPI
Un KPI es un indicador que ilustra el progreso realizado hacia una meta. Los KPI son excelentes para los
usuarios que desean evaluar y monitorear rápidamente el progreso realizado hacia un objetivo
mensurable.
Nota
Solo se puede acceder a los KPI con SSRS Enterprise Edition y Power BI Report Server.
Desarrollo de KPI |403
Un KPI se puede definir manualmente o en función de la primera fila de un conjunto de datos compartido. Un
conjunto de datos compartido le permite administrar la configuración de un conjunto de datos por separado de los
informes y otros elementos del servidor de informes. En el siguiente ejemplo, recorreremos los pasos necesarios
para crear un conjunto de datos compartido utilizando el Generador de informes. Luego, definiremos el KPI en el
portal de Power BI Report Server:
2. SeleccioneNuevo conjunto de datosy busque la fuente de datos que le gustaría utilizar para crear el
nuevo conjunto de datos. Luego, haga clic enCrear:
Figura 13.9: Un conjunto de datos compartido es el origen de datos para un KPI en Power BI Report Server
3. Seleccione una fuente de datos compartida para usarla en su conjunto de datos compartido.
4. Puedes usarDiseñador de consultaspara construir su consulta o haga clic enEditar como textopara copiar y
pegar en una declaración de selección T-SQL previamente escrita. Tenga en cuenta que solo se utilizará la
primera fila para completar el KPI, así que formatee los resultados de su consulta en consecuencia.
404|Servidor de informes de Power BI
5. Haga clic enArchivoy seleccioneGuardar comopara guardar el nuevo conjunto de datos en el servidor de informes.
6. En el portal de Power BI Report Server, navegue hasta la carpeta donde desea crear
el KPI. Clickea en el+Nuevobotón y seleccioneKPI:
7. En elNuevo KPIpantalla, especificarNombre del KPIy luego seleccione elFormato de valor,Valor, Meta,
Estado,Conjunto de tendencias, yVisualizaciónajustes. También puede especificar contenido relacionado
al que vincular desde el KPI:
Nota
Puede revisar la siguiente documentación para obtener más detalles sobre la creación de un
KPI en Power BI Report Server:https://docs.microsoft.com/en-us/sql/reporting-services/
working-with-kpis-in-reporting-services?view=sql-server-ver15 .
Publicar informes
Power BI Desktop optimizado para el servidor de informes es la herramienta de desarrollo para
informes de Power BI. Los usuarios que deseen crear y/o editar contenido de Power BI deben
asegurarse de haber instalado la versión correcta de Power BI Desktop, que sea compatible con su
instalación de Power BI Report Server. Para descargar e instalar la versión compatible de Power BI
Desktop, vaya al portal web de Power BI Report Server, haga clic en Descargaren la esquina superior
derecha y seleccioneEscritorio Power BI. Esto abrirá su navegador web en la página con el vínculo
para descargar la versión correcta de Power BI Desktop optimizada para el servidor de informes:
Figura 13.12: Debe utilizar la versión correcta de Power BI Desktop para garantizar la compatibilidad con su
instalación del servidor de informes Power BI
Después de instalar Power BI Desktop optimizado para el servidor de informes, estará listo para comenzar
a desarrollar contenido de Power BI para Power BI Report Server.
406|Servidor de informes de Power BI
Una vez que haya creado su contenido de Power BI, estará listo para publicar el informe de Power BI en el servidor de
informes. En Power BI Desktop, haga clic enArchivo, seleccionarGuardar comoy luego seleccione Servidor de
informes de Power BI, como se muestra en la siguiente captura de pantalla:
Figura 13.13: Publique sus informes de Power BI en Power BI Report Server haciendo clic en Guardar como
En elServidor de informes de Power BIEn la ventana de selección, seleccione un servidor de informes utilizado
recientemente o introduzca una nueva dirección del servidor de informes (por ejemplo,http://servidor de informes/informes
ohttps://servidor de informes/informes ). Luego, haga clic enDE ACUERDO.
Navegue hasta la carpeta en su servidor de informes donde desea guardar el informe de Power BI.
Especifique el nombre de su informe y luego haga clic enDE ACUERDOpara guardar el informe en
Power BI Report Server.
Al igual que SSRS, Power BI Report Server proporciona un subsistema de autenticación y un modelo de
autorización basado en roles para determinar qué usuarios pueden realizar tareas específicas y acceder a
elementos en el servidor de informes. La autorización basada en roles categoriza el conjunto de tareas en roles
que el usuario puede realizar.
Power BI Report Server se instala con roles predefinidos que puede usar para otorgar acceso a las
operaciones del servidor de informes. Cada rol predefinido se alinea con una colección de tareas relacionadas
con el rol. Se pueden asignar grupos y cuentas de usuario a los roles para proporcionar acceso inmediato a
los elementos y operaciones del servidor de informes.
Gestión del acceso y la seguridad de los informes |407
Nota
Los roles predefinidos se pueden modificar o reemplazar con roles personalizados según sus
requisitos. Para obtener más información sobre los roles, revise la siguiente documentación:
https://docs.microsoft.com/en-us/sql/reporting-services/security/role-definitionspredefinited-
roles?view=sql-server-ver15 .
• Carpetas
• Modelos de informes
• Recursos
Cuando crea una asignación de roles, está creando una política de seguridad que determina si un usuario o
grupo puede acceder o modificar un elemento específico del servidor de informes o realizar una tarea. Las
asignaciones de roles tienen un alcance a nivel de elemento o de sistema.
408|Servidor de informes de Power BI
Para asignar un acceso de usuario o grupo a una función de elemento, complete los siguientes pasos:
1. Navegue hasta el portal web de Power BI Report Server y busque el elemento del informe al que
desea agregar un usuario o grupo. El elemento del informe podría ser una carpeta, un informe u
otro recurso.
3. SeleccioneAdministrar.
4. Seleccione elSeguridadpestaña.
7. Seleccione las definiciones de roles que definen cómo los usuarios deben acceder al elemento. Luego, haga clic
enDE ACUERDO:
Figura 13.15: Creación de una asignación de roles para otorgar a un usuario o grupo de usuarios acceso a un elemento del informe
Nota
Puede revisar la siguiente documentación para obtener más información sobre cómo
otorgar permisos en Power BI Report Server:https://docs.microsoft.com/en-us/sql/
reporting-services/security/granting-permissions-on-a-native-mode-reportserver?
view=sql-server-ver15 .
Publicación de informes móviles |409
Figura 13.16: Para publicar un informe móvil, haga clic en el botón Guardar informe móvil como
Los informes móviles se pueden guardar localmente o en el servidor de informes. Cuando seleccionas
Guardar en el servidor, puede especificar el nuevo nombre del informe, el servidor y luego buscar la
ubicación donde se debe guardar el informe. Haga clic enAhorrarpara guardar el informe móvil en el
servidor de informes especificado.
Para acceder al portal web, escriba la URL del portal web en la barra de direcciones de la ventana del
navegador. Cuando accede al portal web, las carpetas, vínculos, informes y opciones que ve
dependerán de los permisos que tenga en Power BI Report Server. Para realizar una tarea en el
servidor de informes, se debe asignar a un usuario una función con los permisos adecuados según
la tarea. Por ejemplo, a un usuario que desee simplemente ver informes y suscribirse a ellos se le
debe asignar la función de navegador.
El portal web de Power BI Report Server agrupa el contenido según las siguientes categorías:
• KPI
• Informes móviles
• Informes paginados
• Libros de Excel
• Conjuntos de datos
• Fuentes de datos
• Recursos
Power BI Report Server también le permite buscar contenido de informes según sus permisos. Utilice
la barra de búsqueda ingresando un término de búsqueda y luego presionando Enter:
Figura 13.17: Búsqueda del contenido del informe ingresando un término de búsqueda
Los siguientes navegadores son compatibles para administrar y ver Power BI Report
Server:
Nota
Puede obtener información sobre qué versiones de navegador son compatibles para
administrar y ver Power BI Report Server y los controles del Visor de informes aquí:https://docs.
microsoft.com/en-us/power-bi/report-server/browser-support .
Ver informes en navegadores modernos |411
También puede agregar comentarios a informes de Power BI, informes paginados e informes móviles
directamente en el portal web del servidor de informes.
Para agregar o ver un comentario, abra un informe en el portal web. Clickea en elComentarios en la
esquina superior derecha e ingresa tu comentario. Haga clic enpublicar comentariopara publicar tu
comentario. Los comentarios se incluyen en el informe y cualquier persona con los permisos
adecuados puede ver los comentarios del informe:
Figura 13.19: Uso del panel Comentarios para ver y agregar comentarios o responder a comentarios existentes
412|Servidor de informes de Power BI
• Informes de Power BI: Los informes de Power BI se pueden optimizar especialmente para verlos en
un dispositivo móvil y a través de navegadores web simultáneamente. EnEscritorio Power BIsobre el
Vistacinta, usarDiseño del teléfonopara personalizar cómo aparecerá el informe en un dispositivo
móvil. UsarDiseño de escritoriopara diseñar cómo se verá el informe en su escritorio:
Figura 13.20: Los informes de Power BI se desarrollan utilizando Power BI Desktop optimizado para el servidor de informes
Nota
Puede revisar la siguiente documentación para obtener más información sobre el uso de Power BI
Desktop para optimizar los informes de Power BI para un dispositivo móvil:https://docs.microsoft.
com/en-us/power-bi/desktop-create-phone-report .
Ver informes en dispositivos móviles |413
• Informes móviles: Los informes móviles son informes especialmente optimizados diseñados para visualizarse
en un dispositivo móvil mediante la aplicación móvil Power BI. También se puede acceder a los informes
móviles a través del navegador web:
• KPI: Los KPI son excelentes para realizar un seguimiento del desempeño de una métrica determinada en
relación con un objetivo o umbral específico. Los KPI se pueden ver a través de la aplicación móvil Power
BI y de su navegador web:
Figura 13.22: Los KPI se pueden compartir a través de la aplicación móvil Power BI
Nota
Para obtener más información sobre cómo ver informes de Power BI, informes
móviles y KPI en la aplicación móvil de Power BI y conectarse a un servidor de
informes local, revise el siguiente artículo y tutoriales:https://docs.microsoft.com/en-
us/power-bi/consumer/mobile/mobile-app-ssrs-kpis-mobile-on-premises-reports .
Explorando informes de Power BI |415
Una vez que haya publicado un informe de Power BI en su instancia de Power BI Report Server, un
usuario puede acceder al informe navegando al servidor de informes mediante su navegador:
Figura 13.23: Para ver un informe de Power BI, navegue hasta el portal del servidor de informes en su navegador y haga clic en
Los informes de Power BI se pueden ver en una variedad de tipos de dispositivos con muchos tamaños de
pantalla y relaciones de aspecto diferentes. Para ajustar las opciones de visualización, utilice elVistamenú para
optimizar la vista del informe. Tu puedes elegirAjustar a la página,Ajustar al ancho, oTamaño real. También
puede optar por ocultar el panel Selección y el panel Marcadores para aumentar el espacio en pantalla del
informe.
416|Servidor de informes de Power BI
Si el informe incluye filtros, elFILTROSEl panel se puede utilizar para interactuar con los filtros. Los
filtros se pueden aplicar a nivel visual, a nivel de página y a nivel de informe. Para exponer los filtros de
nivel visual en elFILTROS, seleccione un objeto visual en el informe de Power BI haciendo clic en el
objeto visual:
Figura 13.24: El panel FILTROS le permite ver e interactuar con filtros en el informe de Power BI
Los elementos visuales de un informe de Power BI se pueden ordenar según los atributos de visualización. Las imágenes se
pueden ordenar en orden ascendente o descendente utilizando los campos incluidos en la visualización. Para exponer los
controles de clasificación, coloque el cursor sobre el objeto visual y seleccione los puntos suspensivos (…) en la esquina superior
derecha del gráfico.
Los datos subyacentes para una visualización determinada se pueden mostrar seleccionandoMostrar datos.
Seleccione un objeto visual, haga clic en los puntos suspensivos (…) en la esquina superior derecha del objeto visual y
seleccione Mostrar datos. Esto mostrará el conjunto de datos utilizado para construir el siguiente informe junto a la
visualización:
Figura 13.25: Exponiendo el menú de más opciones seleccionando los puntos suspensivos (…) en la parte superior derecha
Los informes de Power BI también se pueden configurar para admitir un comportamiento de desglose en jerarquías
y otros campos. Para interactuar con una visualización habilitada para profundizar, coloque el cursor sobre el objeto
visual para exponer los controles de profundización. Los controles de profundización le permiten ir al siguiente nivel
de una jerarquía, expandir todos los puntos de datos al siguiente nivel de la jerarquía o profundizar hasta el siguiente
nivel de una jerarquía en un punto de datos seleccionado:
Figura 13.26: Profundice en una visualización para centrar su análisis desde un nivel alto a un nivel inferior
Nota
Para obtener más información sobre cómo explorar e interactuar con informes de Power BI,
revise el siguiente artículo:https://docs.microsoft.com/en-us/power-bi/consumer/end-
userreading-view .
• Suscripciones estándar
Las suscripciones estándar las crean y administran usuarios individuales. Las suscripciones estándar
son útiles para los usuarios cuando necesitan un informe visto con frecuencia y entregado de forma
regular con un formato de archivo consistente y un conjunto de valores de parámetros.
Automatización de la entrega de informes con suscripciones |419
Las suscripciones basadas en datos son suscripciones que obtienen información de suscripción en
tiempo de ejecución consultando una fuente de datos externa. La fuente de datos externa proporciona
información para especificar un destinatario, valores de parámetros y/o formato de aplicación. Las
suscripciones basadas en datos normalmente las crea y administra el administrador del servidor de
informes.
• Archivo CSV
• Archivo PDF
• Archivo MHTML
• Archivo TIFF
Nota
Si planea entregar su informe como una suscripción, pruebe la suscripción al principio del
proceso de diseño.
En la siguiente tabla, puede encontrar algunos casos de uso relacionados con las suscripciones a Power BI
Report Server:
Nota
Puede revisar el siguiente tutorial para aprender cómo crear una suscripción basada
en datos:https://docs.microsoft.com/en-us/sql/reporting-services/create-adata-driven-
subscription-ssrs-tutorial?view=sql-server-ver15 .
Para habilitar la fijación de elementos de informes paginados al servicio Power BI, primero debe
completar los siguientes pasos:
2. Configure su navegador para permitir ventanas emergentes desde su sitio de Power BI Report
Server.
Anclar elementos de informe al servicio Power BI |421
3. El informe debe configurarse para las credenciales almacenadas si el elemento anclado debe actualizarse
según una programación automatizada mediante una suscripción a Reporting Services.
Nota
Para obtener más información sobre la configuración de Power BI Report Server para la
integración de Power BI, incluida la solución de problemas comunes, puede revisar lo
siguiente:https://docs.microsoft.com/en-us/sql/reporting-services/pin-reporting-services-
items-topower-bi-dashboards?view=sql-server-ver15 .
Para anclar el elemento del informe a Power BI, haga clic en el botón Anclar a Power BI en la barra de
herramientas. Si no ha iniciado sesión en el servicio Power BI, se le pedirá que inicie sesión. A continuación, se
le pedirá que seleccione el elemento del informe que desea anclar. Si no hay elementos de informe
compatibles para anclar a Power BI, aparecerá una ventana de notificación informándole:
Figura 13.28: Haga clic en el botón Anclar a Power BI en la barra de herramientas para seleccionar el elemento del informe que desea
Después de seleccionar el elemento del informe, aparecerá la ventana Anclar al panel de Power BI.
Deberá especificar elGrupo(Espacio de trabajo de la aplicación),Panel, yFrecuencia de actualizaciones
ajustes. Haga clic enAlfiler.
Modernización a la
14
Nube azul
Ningún libro sobre SQL Server 2019 está completo sin una discusión sobre el papel de Azure con
respecto a la modernización y la plataforma de datos. Los datos de la investigación sitúan el porcentaje
de cargas de trabajo en la nube para 2020 en más del 80% (según el estudio Cloud Vision 2020 realizado
por LogicMonitor:https://www.logicmonitor.com/resource/the-futureof-the-cloud-a-cloud-influencers-
survey/ ). El ahorro de costos de la nube en un tiempo de comercialización más corto, la capacidad de
escalar sin limitaciones de hardware y menos demandas de recursos para los equipos de TI brindan una
oportunidad que cada vez más empresas están aprovechando. Hace apenas una década, era un
escenario común que el administrador de la base de datos esperara a que el equipo de infraestructura
pusiera un servidor a disposición antes de poder realizar su trabajo, y luego había un período de espera
similar para los desarrolladores que esperaban que otros equipos técnicos lo hicieran. completar su
trabajo. La nube otorga acceso a los recursos y permite al administrador de la base de datos crear una
base de datos en cuestión de minutos en lugar de días o semanas. El desarrollador puede obtener
acceso a su entorno de trabajo con menos obstáculos y más coherencia entre entornos, eliminando el
tiempo de inactividad que alguna vez fue un problema común.
424|Modernización a la nube de Azure
La Instancia administrada de Azure SQL Database ofrece la capacidad de "levantar y cambiar" archivos. a un
sistema "gestionado" PaaS con solo unos pocos requisitos, como cuando se mueve un conjunto de servicios a
la nube que están alojados en una o más máquinas virtuales aisladas dentro de una subred de red virtual. Esta
instancia administrada de propósito general ha trasladado la administración de la plataforma al nivel de
instancia, otorgando un mayor control sobre las características avanzadas y capacidades que están más cerca
de la funcionalidad local en SQL Server 2019, lo que permite una mayor flexibilidad. Una instancia
administrada ofrece la opción de nube para conectividad con Azure Analysis Services y Power BI para generar
informes.
La instancia administrada permite al usuario ejecutar siempre la última versión, lo que elimina la necesidad
de parchear y actualizar. Actualmente, una instancia administrada puede admitir:
• 4 TB de almacenamiento
• Servidores vinculados, para aquellos que utilizan uniones entre bases de datos
• Grupos de archivos
Implementación de una instancia administrada en Azure |425
Para simplificar la migración a Azure, la instancia administrada ofrece la oportunidad de migrar con
menos cambios necesarios.
Al implementar una instancia administrada, existe una infraestructura de soporte, que incluye unared virtual (
Red virtual ) que contiene unGrupo de seguridad de red (NS G ), con la instancia administrada implementada
como parte de una subred dedicada. La subred para una instancia administrada debe tener al menos 16
direcciones IP dedicadas configuradas, pero las mejores prácticas recomiendan al menos 32. Este aislamiento
ofrece un silo protegido para su instancia administrada, pero debe crear reglas de seguridad de entrada y salida
antes de implementar otras reglas. . Los puntos finales de datos para redireccionar el tráfico como parte del
puerto 1433 y 11000-11999 son parte de los requisitos para las conexiones de redireccionamiento. Una de las
diferencias entre otras ofertas de PaaS y una instancia administrada es que no se configura ningún punto final
de servicio como parte de una instancia administrada debido a la configuración de VNet.
Una vez que haya creado el grupo de recursos en el que desea implementar o haya elegido utilizar un grupo de
recursos existente, haga clic enAgregar. Luego, en la barra de búsqueda, escribeAzure SQL administradopara
devolver la opción de agregar una instancia administrada:
A medida que completa la información de su instancia administrada, asegúrese de seguir los requisitos
de contraseñas. Además, utilice la coincidencia de intercalación si la instancia administrada se utilizará
para la migración desde una base de datos existente. También deberá crear una nueva VNet para crear la
subred si aún no existe una.
Implementación de una instancia administrada en Azure |427
Potencia Shell:
CLI de bash:
También puede crear la instancia administrada desde la línea de comando con dirección a la
plantilla de GitHub disponible:
Potencia Shell:
CLI de bash:
A medida que la automatización y DevOps se vuelven más centrales en el mundo del administrador de la nube,
se encuentran disponibles opciones de compilación más avanzadas en Azure. La implementación de una
instancia administrada se puede automatizar con un script interactivo para simplificar las cosas, ya sea en Bash
(Linux) o PowerShell (Linux). A medida que un clúster virtual se implementa como parte de la instancia
administrada (y más de una instancia administrada puede ser parte de un clúster virtual), las secuencias de
comandos desde la línea de comandos revelan las capas de la arquitectura.
Al utilizar la CLI de Azure con un script Bash, puede crear una instancia administrada, pasando las
variables para la infraestructura requerida de la siguiente manera:
Observe que en las versiones de Bash y Azure CLI se utilizan argumentos abreviados, como
-túen lugar de–usuarioy-pagen lugar de–contraseña. Se aceptan tanto los comandos completos como las
abreviaturas, y el uso mixto tampoco tiene ningún impacto en el éxito de la implementación desde la línea de
comandos o un script.
En PowerShell se puede realizar el mismo comando para crear la instancia administrada, esta vez
incorporando unAdministrador de recursos de Azure (BRAZO ) plantilla pero aún pasando variables
para que las cumpla un script Bash. PowerShell utiliza elNueva implementación de AzResourceGroup
comando en lugar de la CLI de Azureaz sql mi creardominio:
La plantilla ARM podría usarse con cualquiera de los comandos, al igual que las variables de
requisitos simplificadas sin la plantilla. La plantilla, un archivo JSON, tiene el siguiente aspecto:
{
"$schema": "https://schema.management.azure.com/schemas/
2014-04-01preview/deploymentTemplate.json#", "contentVersion": "1.0.0.1",
"parámetros": {
"instancia": {
"tipo": "cadena"
},
"usuario": {
"tipo": "cadena"
},
"contraseña": {
"tipo": "cadena"
}
},
Implementación de una instancia administrada en Azure |429
"recursos": [
{
"nombre": "[parámetros ('instancia')]",
"etiquetas": {
Serbio_cirílico_100_CS_AS"
},
"sku": {
"nombre": "GP_Gen4",
256, "vCores": 8,
La plantilla ARM garantiza que se cumplan todos los aspectos de los requisitos de implementación y que
se requiera menos en la línea de comando. Se enumeran los tamaños, la cantidad de núcleos, el tipo de
licencia y la intercalación. Esto garantiza que la configuración coincida con lo que se requerirá cuando se
realice la migración de una base de datos existente a la nueva instancia administrada.
• CLR
• Envío de registros
Estos son algunos factores a considerar al decidir sobre su instancia administrada. Además, a
diferencia de una solución de máquina virtual, la instancia administrada es unaPlataforma como
servicio (PaaS ), lo que garantiza que no tendrá que admitir la aplicación de parches y
actualizaciones de la base de datos.
Es fundamental antes de emprender una migración a una Instancia administrada que cualquier
problema de compatibilidad debido a versiones y características obsoletas, como 2008/R2/2012, se
identifique y resuelva de antemano. SQL Server 2008/R2 contiene una lista importante de características
obsoletas a considerar en múltiples áreas:
• Servicios de integración
• Servicios de análisis
• Servicios de informes
Es importante leer una evaluación completa, sin importar la herramienta elegida para la migración, para
garantizar que se identifiquen todos los problemas de compatibilidad antes de continuar con la migración a
Instancia administrada de Azure.
Migración de SQL Server a una instancia administrada |431
También es una buena idea realizar pruebas exhaustivas de la carga de trabajo e identificar cualquier
problema de alta latencia que pueda solucionarse antes del intento de migración. Aunque muchas
características locales son compatibles como parte de la instancia administrada de Azure, es importante
comprender a fondo las demandas de sus cargas de trabajo, los parámetros de compatibilidad y la
latencia cuando la base de datos está hospedada en la nube. Esto incluye cualquier latencia de la red que
pueda no ser evidente rápidamente en el uso diario. Considere realizar una prueba de concepto con una
carga de trabajo más pequeña y de uso variable desde sus bases de datos de SQL Server locales y evite
aquellas que se ejecutan al 100 % de utilización en su entorno actual. Esto le permite centrarse en las
bases de datos que están preparadas para migrar a la nube y abordar características incompatibles que a
menudo existen en múltiples escenarios antes de comenzar oportunidades de migración más complejas.
Los métodos preferidos proporcionados por Microsoft para la migración a una instancia administrada en
Azure son:
• Replicación transaccional
• Carga masiva
Azure DMS es un servicio conveniente, sólido y totalmente administrado para migrar múltiples plataformas de
bases de datos a bases de datos de Azure. Como el DMS es un servicio basado en la nube que permite
migraciones en línea, puede reducir el tiempo de inactividad relacionado con una migración. El DMS también
tiene una opción fuera de línea para una opción de migración única, capaz de manejar versiones de bases de
datos desde SQL Server 2005 a 2017. Tener un servicio en Azure elimina las exigencias de instalar software en un
servidor o estación de trabajo y coloca las demandas de recursos directamente en la nube, eliminando algunas
de las demandas requeridas con otras soluciones.
Conectividad de aplicaciones
Al igual que con cualquier conexión entre la nube local y Azure, puede usar una VPN o Azure Express Route
configurada con una red virtual segura desde el modelo de implementación de Azure Resource Manager. Una
vez configurado esto, debe asegurarse de que las reglas estén configuradas para no bloquear los puertos
necesarios para los puertos de comunicación y que el DMS pueda acceder a las bases de datos de origen que
desea migrar.
432|Modernización a la nube de Azure
La Instancia administrada a la que se migrará residirá dentro de unRed virtual (red virtual ) y sus
aplicaciones en la nube pueden conectarse a la base de datos dentro de esta VNet, conectarse a través de
una VNet diferente a la Instancia administrada o, si continúa residiendo en las instalaciones, la aplicación
puede usar una VPN de sitio a sitio. Si la latencia es un problema, esta sería la razón para utilizar una Ruta
Express para ganar ancho de banda adicional.
Si se va a utilizar un servicio de aplicaciones de Azure para conectarse a la Instancia administrada, entonces una
dirección IP privada será la única opción de conexión y se requerirá configuración adicional una vez que se
complete la migración de la Instancia administrada.
Azure DMS utiliza elAsistente de migración de datos (DMA ) para proporcionar informes de evaluación para
obtener recomendaciones y orientación para la migración. A diferencia de otras herramientas, DMS ofrece un
conjunto muy distinto de casos de uso de migración que pueden proporcionar valor a las organizaciones que
tal vez no se hayan dado cuenta de que existen opciones para migrar a Azure:
• Base de datos relacional de Amazon (RDS ) a Azure SQL o Instancia administrada de Azure SQL
• MongoDB a la API de Azure Cosmos DB para MongoDB (ya sea en línea o sin conexión)
Para eliminar los obstáculos para una migración exitosa de Instancia administrada de Azure, se debe
recopilar la compatibilidad y el uso de recursos del SQL Server local para garantizar que se hayan
identificado configuraciones, características y cargas de trabajo únicas.
Figura 14.2: Pasos de migración de alto nivel desde el entorno local a la Instancia administrada
Migración de SQL Server a una instancia administrada |433
ElAsistente de migración de datos , (DMA ), que se utilizará junto con el DMS, debe
instalarse localmente. Se debe crear de antemano una Instancia administrada a la que se
migrará la base de datos local en Azure Portal.
Antes de pasar del paso de conectividad de la aplicación, se debe recopilar una línea base de la base de datos
local para garantizar que se elija el tamaño correcto para la Instancia administrada de Azure que se
implementará. Junto con el tamaño de la base de datos, información crítica sobre el uso de la CPU, IOP, latencia
de E/S, memoria,TempDB y se deben reunir las ejecuciones más altas. A diferencia de un SQL Server local o una
base de datos PaaS de Azure, no se puede acceder directamente a una Instancia administrada a través de SQL
Server Management Studio (SSMS). La mejor manera de trabajar con la base de datos como DBA es crear una
máquina virtual dentro del mismo grupo de recursos y subred que la instancia administrada y usarla como un
jumpbox con las herramientas necesarias para trabajar con las bases de datos. Tampoco tendrá acceso a una
Instancia administrada con escritorio remoto (RDP).
Las mejores estimaciones de tamaño tienen en cuenta el modelo de precios de Instancia administrada, lo que garantiza el
escalamiento según los requisitos de SLA de tamaño y latencia para la Instancia administrada. Tómese el tiempo necesario
para comprender las características y los niveles de servicio de las máquinas virtuales de Instancia administrada (es decir,
de propósito general versus críticos para el negocio).
Ofertas recientes de 2núcleo virtual La Instancia administrada también brinda una mayor oportunidad de
elegir esta opción donde antes había mayores requisitos denúcleo virtual puede haber limitado la
elección.
Migración
Una vez que haya seleccionado e implementado la Instancia administrada del tamaño correcto, elija el
mejor método para la migración de su base de datos. Un beneficio adicional de la Instancia administrada
es que puede utilizar una copia de seguridad nativa de un archivo de base de datos local (.bak) y
restaurarla a través de una URL. Este método aprovecha el almacenamiento de Azure como
intermediario entre la Instancia administrada local y los archivos de respaldo. Existen algunas
restricciones y requisitos adicionales según la versión de la base de datos o si está utilizando Cifrado de
datos transparente (TDE ), por lo que es mejor leer toda la documentación como parte de Native
Restore desde URL para garantizar el éxito.
Siguiendo los pasos para evaluar la migración y corregir cualquier problema, el siguiente paso
es realizar la migración a Instancia administrada de Azure. Si no se encuentran problemas y la
migración se completa con éxito, el único paso que queda es monitorear la nueva Instancia
administrada.
434|Modernización a la nube de Azure
A diferencia de cuando surgen problemas de forma regular, durante esta migración paso a paso existe una línea
de base para comparar. Este debería ser su primer paso y criterio continuo mientras la nueva Instancia
administrada está bajo observación.
Al igual que con los servidores SQL locales, la carga de trabajo y la aplicación pueden beneficiarse de la
optimización en las opciones de almacenamiento de código y base de datos. El Query Store también podrá
identificar dónde se pueden lograr mejoras en el rendimiento. Azure Intelligent Insights utiliza inteligencia
artificial para comparar cargas de trabajo de bases de datos, notificando la degradación del rendimiento y
brindando información sobre problemas y tiempos de espera excesivos. Para obtener más información,
consulte la documentación aquí:https://docs.microsoft.com/en-us/azure/sql-database/ sql-database-
intelligent-insights .
Hay otras dos opciones para la migración de SQL Server local a una Instancia administrada de Azure.
Replicación transaccionalse puede utilizar para migrar desde la versión SQL Server 2012, (SP2+)-2017
y ofrece la capacidad de sincronización continua de transacciones hasta un punto de corte deseado.
Carga masivaTambién sigue siendo una opción para cualquier versión de SQL Server a partir de 2005,
para cargar datos desde un SQL Server local a una Instancia administrada de Azure. Ambas opciones se
beneficiarán de una conexión Azure Express Route para eliminar la latencia del tráfico continuo entre
las bases de datos locales y en la nube.
Migración de SQL Server a una instancia administrada |435
Para aquellas bases de datos que poseen requisitos complejos que no son compatibles con Azure SQL
Database o Azure Managed Instance, todavía existe la opción de migrar a la nube. Esto se puede hacer
utilizandoInfraestructura como un servicio (IaaS ) servicios como máquinas virtuales. SQL Server 2019
no es diferente, ya que se puede implementar en una máquina virtual de Azure, ya sea con Windows,
Linux o una imagen de Docker. Esta opción otorga un control increíble a la empresa para crear lo que
necesita, ampliarlo según sea necesario y seguir disfrutando de muchos de los beneficios de la nube:
El beneficio adicional de una máquina virtual de Azure sobre una local es la capacidad de escalar a
máquinas virtuales más grandes según sea necesario sin la compra de hardware local. El hardware lo
mantiene Azure, y solo requiere que el usuario administre el sistema operativo, hasta las aplicaciones.
Para aplicaciones de terceros que requieren una versión específica de una base de datos, o donde una
aplicación no se ofrece como servicio dentro de Azure y debe trasladarse a la nube, Azure VM ofrece una
opción para resolver este problema.
Los hosts administrados virtualmente simplifican la administración desde la configuración del servidor
tradicional y el uso de Azure VM. Esto elimina otra capa de soporte de infraestructura y compra que
requeriría una solución de VM local. Una de las formas en que las máquinas virtuales de Azure
simplifican la administración del equipo es ofreciendo parches, copias de seguridad y diagnósticos
automatizados mediante el Agente IaaS de SQL Server.
Al agregar una máquina virtual a Azure, se implementa dentro de un grupo de recursos. Se puede implementar como
parte de un grupo existente o en un grupo nuevo. Dentro del grupo de recursos de Azure Portal, puede iniciar la
implementación del portal de una máquina virtual de la siguiente manera:
Una vez que haya realizado este paso, verifique sus requisitos y escribaservidor SQL en la ventana de
búsqueda. Las imágenes de VM para SQL Server 2019 se mostrarán rápidamente para los sistemas
operativos disponibles, incluidos Red Hat, Ubuntu y Windows. Algunas imágenes incluirán tanto el sistema
operativo host como la base de datos configurada para admitir una base de datos relacional como parte
de la imagen. Si se requiere una versión específica del sistema operativo, la CLI (Arizonacomandos)
pueden proporcionar la imagen de VM correcta para satisfacer sus necesidades. Esto se tratará más
adelante en el capítulo.
Una vez que haya elegido la versión de la imagen de VM que desea instalar, el asistente del
portal le pedirá que revise los ajustes de configuración a través delCrearo permitirle omitir esto
eligiendo el botónComience con una configuración preestablecidaopción:
Creación de una máquina virtual de Azure desde Azure Portal |437
En nuestro ejemplo, hemos elegido crear una máquina virtual con Windows Server 2016 y una imagen de
SQL Server 2019. La primera pantalla le pedirá que nombre la VM y verifique el grupo de recursos y otras
configuraciones básicas:
Figura 14.5: Creación de una máquina virtual de Azure en la interfaz del portal de Azure
438|Modernización a la nube de Azure
El nombre de la VM debe ser exclusivo del grupo de recursos. Si, por algún motivo, eligió la imagen de
VM incorrecta, puede actualizarla usando el menú desplegable Imagen. También puede cambiar el
tamaño de la imagen si el tamaño predeterminado no es apropiado para su implementación y necesita
ampliarla. No todos los tamaños están disponibles para todas las imágenes de VM, pero existe una
amplia gama de tamaños que se adaptan a casi cualquier necesidad. ElSerie M Es ideal para cargas
intensivas de memoria, con hasta 4 TB de memoria y 128 núcleos virtuales. Puedes ver algunas
recomendaciones aquí:https://docs.microsoft.com/en-us/azure/virtual-machines/ windows/sql/virtual-
machines-windows-sql-rendimiento .
Una vez que haya terminado de elegir estas opciones, se le pedirá que elija el tipo de disco que desea
almacenar en su VM. Tiene las opciones de un disco duro estándar,disco de estado sólido estándar (SSD
), SSD premium o incluso la nueva vista previa privada de Ultra Disk. Ultra Disk es un nuevo SSD creado
para cargas intensivas de E/S que tiene tiempos de latencia inferiores a milisegundos. Estos nuevos discos
ajustarán automáticamente las cargas de trabajo sin necesidad de reiniciar una máquina virtual y
proporcionarán un rendimiento increíble para cargas de trabajo en SQL Server y otras plataformas de
bases de datos. Los discos vendrán en tamaños de 4 a 64 TB y deben considerarse para cualquier base de
datos que requiera un rendimiento de E/S superior:
Si ya existe una VNet en el grupo de recursos, la ubicación y el inquilino de suscripción, entonces una VM
puede usarla. Esto significará que no tendrá que implementar uno nuevo solo para la máquina virtual. El
tráfico de carga de trabajo debe analizarse como parte de la decisión de utilizar una VNet existente o
implementar una nueva como parte de la VM.
Diagnóstico y opciones avanzadas |439
La VNet implementará direcciones IP públicas y privadas que la VM utilizará para acceder. Estas
direcciones deben asociarse con la VM asignándolas a la NIC. Dentro de cada VNet, hay una subred
(o subredes) que sigue reglas para asignar tráfico dentro y fuera de la VM. Si no se ha configurado
una regla para permitir el tráfico a través de una subred para un puerto o dirección IP, el tráfico se
bloquea.
El siguiente paso del asistente tiene opciones para activar el diagnóstico de arranque, el apagado
automático y la configuración de seguridad. El paso siguiente es para configuraciones avanzadas, incluidas
extensiones que brindan servicios como copias de seguridad, DevOps y otras extensiones para automatizar
la administración de la VM.
La pestaña SQL Server tiene las configuraciones importantes para decidir el puerto por el que se comunicará la
base de datos, el tipo de autenticación de la base de datos que se utilizará, los parches y las características:
Figura 14.7: Configuración de SQL Server 2019 para una imagen de VM en Azure Portal
440|Modernización a la nube de Azure
Una vez que esté satisfecho con la configuración que eligió para la máquina virtual y sus opciones hayan
pasado la verificación de validación de Azure, haga clic en elCrearbotón. La máquina virtual no es tan rápida de
crear como lo es para una base de datos SQL de Azure, pero sepa que esto tiene que ver con todas las redes
que se desarrollan detrás de escena. Este proceso tarda un poco más en realizarse.
Creación de una máquina virtual con SQL Server 2019 desde la línea de comandos en Azure
Después de todos los pasos realizados en la sección anterior para crear una máquina virtual en Azure Portal, es
hora de darse cuenta del poder de la línea de comandos. Se puede acceder a la CLI de Azure de numerosas formas,
incluso a través de la interfaz de la CLI de Azure y a través del Portal de Azure. Sin embargo, utilizando
directamenteShell de nube de Azure (https://shell.azure.com/ ) ofrece una experiencia de pantalla completa que
puede ofrecer almacenamiento en la nube dedicado (cuando está configurado) para albergar scripts y automatizar
tareas comunes.
La razón para utilizar la línea de comando se vuelve evidente cuando se realiza una tarea varias
veces. La línea de comando simplifica la tarea en líneas simples de código que son más fáciles de
administrar y automatizar que las soluciones basadas en interfaz de usuario. La interfaz de usuario,
por otro lado, lo hace más sencillo para aquellos que no estén familiarizados con la sintaxis y los
requisitos, ofreciéndoles indicaciones y organizando pasos.
La CLI de Azure (también conocida como CLI de AZ o Comandos AZ) es una herramienta de línea de comandos a la que,
cuando se accede desde Azure Cloud Shell, puede implementar una máquina virtual con solo un pequeño conjunto de
comandos.
El comando de la CLI de Azure para crear una máquina virtual escrear una máquina virtual azy los argumentos
de la siguiente lista se utilizan para completar los pasos, tal como lo haría en la interfaz de usuario. Los
argumentos de una sola letra tienen un guión único precediéndolos, mientras que las palabras individuales
tienen un guión doble. Los argumentos con más de una palabra están precedidos por un doble guión y
separados por un solo guión entre palabras, como en--clave de administrador. Los valores más comunes
utilizados para la creación de VM con SQL Server son los siguientes:
Para comenzar, necesitamos saber el nombre de la imagen que queremos implementar desde la
línea de comando. Podemos localizar la imagen consultando el catálogo de Azure:
Armados con esta información, podemos elegir la imagen más reciente.nombre de recurso uniforme (
URNA ) y construir nuestra VM. Proporcionaremos la última información de la lista de argumentos para
una implementación común de VM de Azure:
Puede ingresar información en las líneas siguientes usando un espacio y una barra invertida para
notificar a la CLI que continúa. Una vez ingresados todos los parámetros y valores, la CLI de
Azure procederá a crear su máquina virtual SQL Server a partir de la imagen elegida, en el grupo
de recursos enumerado y con los recursos de la información ingresada en la línea de comando:
Figura 14.9: Implementación exitosa de una máquina virtual de Azure desde la línea de comando
Aunque la implementación anterior de Azure SQL VM requirió un grupo de recursos existente y una
red virtual para soporte, demuestra por qué puede ser más fácil implementar el script que usamos 20,
50 o cientos de veces con solo unos pocos cambios en lugar de usar Azure. interfaz de usuario del
portal. Con la incorporación de secuencias de comandos avanzadas y la automatización de DevOps, el
proceso de implementación se puede acelerar enormemente, eliminando la necesidad de realizar
pasos manuales.
Seguridad para SQL Server en una máquina virtual de Azure |443
La compatibilidad con máquinas virtuales en la nube puede ser nueva para quienes recién migran a
Azure y saber qué proteger puede resultar abrumador. Esto se puede simplificar habilitando la seguridad
de datos avanzada en las máquinas virtuales de su inquilino de Azure dentro de Azure Portal. Este
servicio realizará protección avanzada contra amenazas. Utiliza el agente de Azure Log Analytics para
revisar e informar sobre cualquier vulnerabilidad de seguridad. Luego documenta estas vulnerabilidades
y sugiere cómo resolverlas en Azure Security Center en Azure Portal. Además de acceder a esta
información en el portal, se recomiendan notificaciones para mantenerlo al tanto de cualquier
vulnerabilidad de seguridad.
Azure Security Center, en una máquina virtual recién creada, detectaría si el puerto 3389 para la conexión a
Escritorio remoto, o si el puerto predeterminado para SQL Server, 1433, estaba configurado abierto y lo
informaría como un posible riesgo de seguridad. Luego, el usuario podría actualizar la configuración y proteger
los puertos predeterminados.
Al crear una máquina virtual de Azure, elGestiónLa pestaña contiene el paso para activar la seguridad de
datos avanzada como parte del proceso de creación de VM y es muy recomendable hacerlo:
Figura 14.10: Pestaña Administración en el asistente Crear una máquina virtual en Azure Portal
444|Modernización a la nube de Azure
Como este servicio utiliza el agente de Log Analytics, estos datos de registro están disponibles para consultas
con fines de investigación. El panel del portal contiene información considerable incluso si no desea consultar los
datos de registro, lo que hace que este servicio sea muy valioso para cualquiera que administre máquinas
virtuales y desee garantizar que el entorno de nube de las máquinas virtuales sea seguro.
Existen numerosas formas de realizar una copia de seguridad de una instancia de SQL Server 2019 implementada en
una máquina virtual IaaS de Azure, pero las copias de seguridad automatizadas a través de un servicio que utiliza el
agente IaaS de SQL Server son una de las mejores soluciones. Además de configurar el servicio y el agente, se debe
configurar el almacenamiento en la nube en el que realizar la copia de seguridad antes de poder realizar las copias de
seguridad. La facilidad de esta solución se vuelve evidente cuando el administrador de la base de datos en la nube
descubre que puede realizar recuperaciones desde SSMS y comandos T-SQL estándar, como está acostumbrado con las
soluciones locales.
Una segunda opción, no menos viable, es laservicio de instantáneas de volumen (VSS ) copia de seguridad para máquinas virtuales
IaaS, que permite dos opciones de copia de seguridad: copia de seguridad completa VSS o copia de seguridad VSS. Cuando la copia de
seguridad completa realiza una copia de seguridad única de la máquina virtual completa (no solo de la base de datos), trunca los
registros que pueden ser necesarios para las copias de seguridad de la aplicación. La copia de seguridad de VSS toma tanto una
instantánea de la VM como una copia de seguridad completa de la base de datos de SQL Server, lo cual es una excelente solución para
Cuando se inicia un proyecto de migración a la nube, uno de los primeros temas de discusión
es la seguridad en la nube. Azure incorpora numerosas capas de seguridad para crear un
ecosistema que cubre la nube con seguridad de extremo a extremo.
Para las máquinas virtuales de Azure con bases de datos, esto implica autenticación mediante inicios de sesión en
bases de datos, permisos de nivel de fila, roles de bases de datos, Azure Active Directory y reglas de firewall. Existen
funciones de protección de datos más avanzadas, como el enmascaramiento de datos estáticos yCifrado de datos
transparente (TDE ).
Seguridad para SQL Server en una máquina virtual de Azure |445
Azure también facilita la configuración de seguridad de datos avanzada para SQL Server en Azure Virtual
Machines, que es un paquete de características de seguridad que proporcionará informes de evaluación que
se pueden ver en Azure Portal (y/o enviar por correo electrónico):
Estos informes ofrecen orientación sobre las mejores prácticas en materia de seguridad, junto con enlaces para
corregir posibles amenazas.
446|Modernización a la nube de Azure
A diferencia del programa "Completo" o "Sin agente" Opciones, la extensión del agente IaaS de SQL Server le ofrece la
posibilidad de tener un agente de servicio para administrar trabajos en la máquina virtual, pero sin un requisito para
SQL Server y se le deben otorgar privilegios sa para habilitarlo.
Aunque cada vez más administradores de bases de datos de SQL Server están creando scripts de
PowerShell/Shell para abordar las tareas de administración, el agente robusto y capaz era claramente
una característica importante. Con la versión de extensión ligera, que no requiere reinicio ni requisitos
de privilegios para quienes tienen aversión al riesgo, el agente puede realizar lo siguiente:
La instalación de la extensión para el modo ligero en SQL Server 2019 en una máquina virtual de Azure se puede
realizar a través de PowerShell. El primer paso es configurar la variable para el nombre de host de la VM:
Una vez realizado esto, PowerShell puede instalar la extensión en el host de VM:
Nuevo-AzResource -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
Una vez instaladas, se puede acceder a estas características en Azure Portal desde la hoja de SQL Server.
La visualización del modo actual de su agente SQL Server se puede realizar a través de PowerShell.
Si está en la misma ventana de comando que su instalación, no necesitará configurar la variable
VM nuevamente, pero si está en una nueva, deberá configurarla por segunda vez:
$vm = Get-AzVM -Nombre <vm_name> -Nombre del grupo de recursos
Microsoft.SqlVirtualMachine/ SqlVirtualMachines
$sqlvm.Properties.sqlManagement
Entorno de recuperación ante desastres en la nube |447
Azure tiene numerosos componentes de alta disponibilidad integrados, pero si elige construir
su entorno con hosts administrados virtualmente en la nube, existen importantes opciones
para DR. Aquí, analizaremos el servicio Azure Site Recovery.
Recuperación del sitio de Azure (ASR ) es un servicio versátil para realizar copias de seguridad, clonar y
recuperar datos. Considerado AzureRecuperación ante desastres como servicio (DRaaS ), el servicio es
híbrido y se conecta a máquinas virtuales locales y en la nube, e incluso se conecta a VMware y AWS para
migraciones a máquinas virtuales de Azure.
El servicio desempeña un papel fundamental para las máquinas virtuales con bases de datos SQL 2019 que residen en
ellas. Una vez que se agrega el recurso ASR a un grupo de recursos, se pueden agregar máquinas virtuales y
programaciones para todas las funciones de DR necesarias a través de un asistente simple:
Figura 14.12: Interfaz del portal Azure ASR con copias de seguridad mostradas
448|Modernización a la nube de Azure
Una vez que se ingresa toda la información pertinente sobre la máquina virtual, el servicio crea todos los recursos necesarios
para crear una solución de recuperación ante desastres sólida y totalmente redundante en Azure, incluso en zonas de
ubicación separadas. La mejor práctica sería almacenar ASR en una zona de ubicación diferente y replicarlo en una tercera
ubicación para obtener una solución de recuperación ante desastres totalmente redundante.
El servicio ASR ofrece una interfaz sencilla para crear trabajos de copia de seguridad y replicar máquinas virtuales, además de
proporcionar recomendaciones de pruebas del sitio y pruebas de conmutación por error. Aunque es totalmente posible crear su propia
solución de respaldo y recuperación ante desastres en Azure, el servicio ASR tiene muchas funciones y proporciona un panel único para
Las bases de datos de SQL Server 2008 y 2008 R2 se pueden migrar a una máquina virtual de Azure con
una opción simple de copia de seguridad y restauración en lugar de utilizar una herramienta de migración
como SSMA. La única forma de utilizar una de las herramientas de migración existentes, como DMS, sería
aceptar la actualización a SQL Server 2012 o superior. Uno de los beneficios adicionales de elegir esta
opción al final de la vida útil de 2008/2008 R2 es que con la oportunidad de Azure VM se incluyen tres años
de soporte extendido. Para obtener más información, consulte la documentación aquí:https://
azure.microsoft.com/en-us/blog/anncing-new-options-for-sql-server-2008-andwindows-server-2008-end-
of-support/ .
Entorno de recuperación ante desastres en la nube |449
Para aquellos clientes que deben permanecer en 2008 o 2008 R2, Azure Marketplace tiene
una imagen de SQL Server 2008 R2 de pago por uso que se puede utilizar para superar este
momento difícil. La imagen tiene la extensión SQL IaaS para parches y licencias automáticas:
Figura 14.13: Creación de una máquina virtual a partir de la imagen de SQL Server 2008 R2
450|Modernización a la nube de Azure
Los clientes que requieran 2008 pueden instalar el software en una VM, junto con la extensión SQL IaaS,
ya que no forma parte de la imagen de VM estándar.
La opción de convertir alBeneficio híbrido de Azure (AHB ) para cualquier imagen de SQL Server 2008 R2
proporcionará ahorros en comparación con la ejecución en Azure sin ella.
El cliente necesita administrar su propia solución de copia de seguridad y recuperación ante desastres en Azure, ya que no
forma parte de la solución IaaS ni de la imagen de SQL Server 2008 R2. Esto se puede lograr haciendo una copia de
seguridad en un almacenamiento separado o configurando ASR.
Este capítulo cubrió numerosos temas relacionados con SQL Server 2019 en Azure en torno a las
máquinas virtuales, el soporte extendido para SQL Server 2008/2008 R2 y la toma de decisiones
inteligentes al migrar a la nube. Tener la oportunidad de saber qué opciones y servicios existen al
considerar la implementación en la nube es esencial para asegurarse de hacerlo bien la primera vez en
lugar de hacerlo dos, tres o cuatro veces. Este capítulo demuestra que, ya sea que opte por Azure SQL
Database, SQL Server 2019 en máquinas virtuales de Azure o cualquier otra plataforma de datos, existen
niveles de servicio para respaldar al profesional de Microsoft dentro de la nube de Azure.
>
Índice
Acerca de
Todas las palabras clave principales utilizadas en este libro se capturan alfabéticamente en esta sección.
Cada uno va acompañado del número de página donde aparecen.
A autosuma: 371
sintonización automática: 438
cláusula: 238, 266, 292,
294, 321, 325
cuentas: 51, 91, 121, datos az: 260-261, clondb: 35-36
136, 138, 277, 406 274-275, 280-281 aplicación en la nube: 163
D ddladmin:55
demonios: 242
debian: 143, 160, 164, 207
depurador: 62
mi
tablero: 53, 77, 188, depuración: 39, 338, 375 puntos suspensivos: 400, 408,
abiertojdk:225
openjson: 307-308
protocolos: 73-74
prototipo:190
S
inicio: 278 pyspark: 223, 262, planificador: 338
superación: 302-303 269-270 sin servidor: 347
pitón: 150-152, nombre del servidor: 179, 192
ID de página: 39 sqlclásico:126
paginado: 351, 390-392,
401, 407, 409, 411, 420
R sqlcmd: 149-150, 157-158,
163-164, 179
paradigma: 152 sombrero rojo: 143, 147, datossql: 17, 178
paridad: 106-107 150-151, 160 sqldev:441
parquet: 186, 189, expresión regular: 302, 306 motorsql:205
197, 256, 267 regresión: 25, 29-31, sqlgraphdb: 287, 289-290
parcheo: 172, 430, 152, 238, 244 sqlhdfs: 268
436, 439, 446, 449 regulatorio: 45-46 sqljdbc:158
solo sql: 95
servidor sql: 58, 152,
V
236, 281, 301, 319 varbinario:239
servidor SQL: 35, 284 varchar: 64-65, 72,
sqlservr: 118, 149, 175, 207 124, 231, 268, 288,
modo ssl: 195-196 291, 294, 304-305,
apátrida: 438 309-310, 312-313, 316
subred: 75, 210-211, variable: 231-232, 235,
424-426, 433, 439 237, 239, 294, 298-299,
subredid: 428-429 321, 380, 446
enlace simbólico: 148 nombrevm:163
administrador de sistemas: 279 vmware:447
hora de envío del sistema: 312 vnext-ctp: 147
archivos del sistema: 121
t
pruebajava: 301, 306
X
testutf:310 xeventos:384
basado en texto: 267
kit de herramientas: 272
Ud.
Ubuntu: 85, 143-144,
150-151, 154,
159-160, 162-164,
180, 205-207, 436
datos de usuario: 266
filtro de usuario:68