0% encontró este documento útil (0 votos)
1K vistas489 páginas

Introducing-Microsoft-SQL-Server-2019 Es

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1K vistas489 páginas

Introducing-Microsoft-SQL-Server-2019 Es

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 489

Traducido del inglés al español - www.onlinedoctranslator.

com
Presentamos Microsoft
Servidor SQL 2019

Fiabilidad, escalabilidad y seguridad tanto on-


premise como en la nube

Kellyn Gorman, Allan Hirt, Dave Noderer, James Rowland-Jones,


Arun Sirpal, Dustin Ryan y Buck Woody
Presentamos Microsoft SQL Server 2019

Copyright © 2019 Editorial Packt

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

Material adicional: Mitchell Pearson

Editor jefe: Alexander Mazonowicz

Editora de adquisiciones: Alicia Wooding

Editor de producción: Nitesh Thakur

Consejo editorial: Shubhopriya Banerjee, Bharat Botle, Ewan Buckingham, Mahesh


Dhyani, Taabish Khan, Manasa Kumar, Alex Mazonowicz, Pramod Menon, Bridget
Neale, Dominic Pereira, Shiny Poojary, Erol Staveley, Ankita Thakur, Nitesh Thakur y
Jonathan Wray

Primera publicación: diciembre de 2019

Referencia de producción: 1111219

ISBN: 978-1-83882-621-5

Publicado por Packt Publishing Ltd.

Lugar de librea, 35 calle librea

Birmingham B3 2PB, Reino Unido


Sobre los autores
Kelly Gormanes un arquitecto de plataforma de datos de Azure para Microsoft con una larga
trayectoria en tecnología multiplataforma. Ella gasta una división del 60/40 % entre Oracle en Azure y
Analytics con su equipo actual en Microsoft. Recientemente Idera ACE, actual amiga de Redgate en la
comunidad de Microsoft y ex alumna directora de Oracle ACE, ha recibido numerosos premios a lo
largo de los años por sus contribuciones técnicas y su voluntariado comunitario. Ella es una de las
seis mujeres que forman parte de Oak Table, una red para el científico de Oracle. Tiene amplia
experiencia en optimización de entornos, automatización y arquitectura de entornos robustos,
especializándose en gestión multiterabyte de sistemas OLAP/DSS. Un defensor constante del ajuste
lógico del código y el diseño antes que las soluciones de hardware. Recientemente se ha hecho
conocida por su experiencia en DevOps, Enterprise Manager, AWR, almacén (Automatic Workload
Repository) y virtualización de entornos de bases de datos con gestión compleja de la nube. El
conocimiento técnico necesario para respaldar estas funciones ofrece grandes oportunidades
educativas para aprender asistiendo a sus presentaciones técnicas, interactuando con su presencia
en las redes sociales como DBAKevlar o leyendo su blog.https://dbakevlar.com/ .

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.

Para Jane, Lucy, Kate y Oliver. Por siempre x.

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 Ryanes arquitecto senior de soluciones en la nube en Microsoft. Dustin ha trabajado en


el campo de la inteligencia empresarial y el almacenamiento de datos desde 2008, ha hablado
en eventos comunitarios como SQL Saturday, SQL Rally y PASS Summit, y tiene una amplia
experiencia en el diseño y creación de soluciones con SQL Server y Azure. Antes de trabajar en
Microsoft, Dustin trabajó como consultor y formador de inteligencia empresarial para
Pragmatic Works. Dustin también es autor, colaborador y editor técnico de libros.

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

Sobre los autores ............................................... ................................................. .. C

Prefacio i

Capítulo 1: Optimización del rendimiento, la

escalabilidad y la información en tiempo real 1

Procesamiento híbrido transaccional y analítico (HTAP) ................................ 2


Índices de almacén de columnas agrupados ................................. ................................ 3

Agregar índices de almacén de columnas agrupados a tablas optimizadas para memoria ................. 5

Tablas basadas en disco versus tablas optimizadas para memoria ......................... .5

OLTP en memoria ................................................ ................................................. ...... 6

Planificación de la migración de datos a tablas optimizadas para memoria ................................ 7

Procedimientos almacenados compilados de forma nativa ................................. ................... 18

Mejoras en TempDB ................................................ ........................................ 21


Habilitación de metadatos TempDB optimizados para memoria ................................. ........ 21

Limitaciones de los metadatos TempDB optimizados para memoria ................................. 21

Procesamiento inteligente de consultas ................................................ ................................ 22

Grupo de búfer híbrido ................................................ ................................................. 24

Almacén de consultas ................................................ ................................................. .......... 25

Cambios en los valores de parámetros predeterminados ................................. ........................ 27

QUERY_CAPTURE_MODE ................................................ ................................................ 27

QUERY_CAPTURE_MODE: PERSONALIZADO ................................................. ................................ 27

Soporte para cursores FAST_FORWARD y STATIC ................................. ........ 29

Sintonización automática ................................................ ................................................. 29

Corrección automática del plan ................................................. .......................................... 29


Perfiles de consulta ligeros ................................................ ................................... 32
Nueva funcionalidad en 2019................................................ ........................................ 32

sys.database_scoped_configuraciones ................................................. ........................ 33

Monitor de actividad................................................. ................................................. ......... 34

Estadísticas del almacén de columnas en DBCC CLONEDATABASE ................................. ...... 34

Soporte de estadísticas de almacén de columnas .................................. ................................ 35

Validaciones de DBCC CLONEDATABASE ................................................. ................................ 35

Comprensión de la sintaxis de DBCC CLONEDATABASE ................................. ......... 35

Compresión estimada para índices de almacén de columnas ................................. 36

sp_estimate_data_compression_ Savings Sintaxis ................................................. ...... 37

Solución de problemas de esperas de recursos de página ................................. ................... 39

sys.dm_db_page_info ................................................. ................................................. .. 39

sys.fn_pagerescracker ................................................. ................................................. 41

Capítulo 2: Seguridad empresarial 45

Descubrimiento y clasificación de datos SQL ................................................ ................... 46

Evaluación de vulnerabilidad SQL ................................................ ................................ 51

Cifrado de datos transparente ................................................ ........................................ 55

Configuración ................................................. ................................................. .......................... 57

Nuevas funciones: suspender y reanudar ................................................ ................................ 59

Gestión de claves extensible ................................................ ........................................ 60

Siempre cifrado................................................. ................................................. 60


Tipos de algoritmos................................................ ................................................. .......... 61

Configuración ................................................. ................................................. .......................... 61

Computación confidencial con enclaves seguros ................................................. ...... 61

Enmascaramiento de datos dinámicos .................................. .......................................... 64

Tipos ................................................. ................................................. ........................ 64

Implementación de DDM ................................................. ................................................. ... 64


Seguridad a nivel de fila ................................................ ................................................. 67

Auditoría................................................ ................................................. ................ 71


Conexiones seguras ................................................. ........................................ 73
Configurar el complemento MMC ................................................. ........................................ 73

Habilitación a través del Administrador de configuración de SQL Server ................................. ......... 74

Base de datos SQL de Azure.................................... ................................................ 74


SSL/TLS................................................ ................................................. ........................ 75

Cortafuegos ................................................. ................................................. ................. 75

Autenticación de Azure Active Directory (AD) ................................. ................. 75

Seguridad de datos avanzada ................................................. ................................................ 77

Detección avanzada de amenazas .................................. .......................................... 78

Capítulo 3: Alta disponibilidad y recuperación ante desastres 81

Descripción general de las características de disponibilidad de SQL Server ................................. ................. 82

Copia de seguridad y restaurar ............................................... ................................................. .... 82

Funciones siempre activas ................................................. ................................................. ..... 83

Envío de registros ................................................ ................................................. ................ 91

¿Qué pasa con la duplicación y replicación de bases de datos? ........................................ 92

Mejoras de disponibilidad en SQL Server 2019 ................................................. ... 92


Recuperación acelerada de bases de datos ................................................ ................................... 92

Réplica de sólo configuración ................................................ ........................................ 92

Gestión de certificados en el Administrador de configuración de SQL Server ................. 94

Reconstrucción en línea del índice de almacén de columnas agrupado ................................. ................. 95

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

Mayor número de réplicas síncronas en la edición Enterprise ................. 96

Construcciones o reconstrucciones en línea para índices de almacén de columnas agrupados ......... 97


Configuración de enrutamiento de solo lectura en SQL Server Management Studio ................... 98

Replicación para configuraciones basadas en Linux ................................. ................. 99

Redirección de conexión de lectura/escritura de secundaria a primaria ........................ 100

Mejoras en la disponibilidad de Windows Server 2019 ................................ 102


Cambiar dominios para un clúster de conmutación por error de Windows Server ........................ 103

Compatibilidad con volúmenes compartidos en clúster para Microsoft Distributed

Coordinador de transacciones ................................................ .......................................... 103

Testigo de archivo compartido sin dominio ................................. ........................ 103

Seguridad mejorada del clúster de conmutación por error de Windows Server ................................. 104

Réplica de almacenamiento en la edición estándar ................................................ ................. 104

Configuración de dos nodos de Storage Spaces Direct ................................. .......... 106

Mejoras del clúster de conmutación por error de Windows Server en Azure ................................ 107

Capítulo 4: Funciones híbridas: SQL Server y


Microsoft Azure 111

Copia de seguridad en URL ................................................. ................................................. ..... 112

Beneficios ................................................. ................................................. ................. 112

Requisitos ................................................. ................................................. .......... 112

La cuenta de almacenamiento ................................................. ........................................ 113

Configuración ................................................. ................................................. ........................ 114

Archivos de datos de SQL Server en Azure ................................. ................................ 118

Configuración y conceptos ................................................. ................................................. .. 119

Consideraciones ................................................. ................................................. ........ 121

Copias de seguridad de instantáneas de archivos ................................. .......................................... 123

Configuración ................................................. ................................................. ........................ 123

Ampliación de los grupos de disponibilidad locales a Azure ................................ 125

Replicación a la base de datos SQL de Azure ......................................... ........................ 126

Enfoque clásico................................................. ................................................. ...... 127


Replicación transaccional ................................................ ................................. 127
Requisitos previos ................................................. ................................................. .......... 129

Configuración ................................................. ................................................. ........................ 129

Capítulo 5: SQL Server 2019 en Linux 143

Soporte de plataforma 2019 ................................................ ........................................ 144

¿Por qué mover bases de datos a SQL Server en Linux? ................................................ 145

Instalacion y configuracion ............................................... ................................... 146

Mejoras en SQL Server 2019 ................................................. ................................. 150

Servicios de aprendizaje automático en Linux ................................................. ................. 150

Kubernetes................................................. ................................................. ........ 152


Trabajar con Docker y Linux................................................ ................................ 154
Cambiar captura de datos .................................. ........................................ 155
Grupo de búfer híbrido y PMEM ................................................. ................................ 155

Coordinador de transacciones distribuidas en Linux ......................................... ... 157

Replicación................................................. ................................................. ......... 158


Herramientas de SQL Server .................................. ................................................. .. 159

Estudio de datos de Azure................................................. ................................................. ..... 159

Herramientas de consulta de línea de comandos para SQL en Linux ......................... .......... 163

SQLCMD................................................. ................................................. ................... 163

MSSQL-CLI ................................................ ................................................. ................. 164

Enfoque mejorado en secuencias de comandos ................................................ ................................ 165

El DBA de SQL en el mundo Linux ................................. ................................ 165


Usuarios y grupos ................................................. ................................................. ...... 166

Shell de nube de Azure ................................................. ................................................. ...... 166

Subsistema de Windows para Linux ................................................ ........................ 167

Root, el superusuario ................................................ ................................................. .... 167


Capítulo 6: SQL Server 2019 en contenedores y Kubernetes 171

Por qué son importantes los contenedores.................................. ........................................ 172

Fundamentos técnicos de los contenedores ................................................ ................. 173

Implementación de un contenedor de SQL Server usando Docker ................................. 174

Usando Docker y Bash................................................ ................................................ 179

Uso de utilidades locales de SQL Server ................................. ................................. 179

Personalización de contenedores de SQL Server ................................................ ................. 180

Disponibilidad para contenedores de SQL Server ................................................ ................. 180

Capítulo 7: Virtualización de datos 185

Desafíos de la integración de datos .................................. ................................ 186


Introduciendo la virtualización de datos ................................................ .......................... 186

Casos de uso de virtualización de datos .................................. ................................ 188

Virtualización de datos y procesamiento analítico transaccional híbrido ................... 188

Virtualización y almacenamiento en caché de datos ................................. ................................ 188

Virtualización de datos y sistemas federados ................................................. ................. 188

Virtualización de datos y lagos de datos ................................. ................................ 189

Contrastación de virtualización de datos y movimiento de datos ................................. 189

Virtualización de datos en SQL Server 2019 ................................................ ................. 190

Acceso seguro a los datos ................................................. ................................................ 190

La clave maestra de la base de datos .................................. ........................................ 191

Credenciales con ámbito de base de datos .................................. ................................. 191

Fuentes de datos externas ................................................ .......................................... 192

Fuentes de datos admitidas ................................................ ........................................ 193

Ampliación de su entorno utilizando una fuente de datos externa ODBC ......... 194

Acceso a fuentes de datos externas en Azure ................................. ................. 196

Formatos de archivos externos .................................. ........................................ 197


Mesas externas PolyBase ................................................. ........................................ 198

Crear tablas externas con Azure Data Studio ................................. ....... 200

Contrastación de servidores vinculados y tablas externas ................................. ......... 201

Instalación de PolyBase en SQL Server 2019 ................................. ................. 202


Guía general de preinstalación ......................................... ................................ 203

Instalación de PolyBase en Windows................................................ ................................ 204

Instalación de PolyBase en Linux................................................ ........................................ 205

Instalación de PolyBase en SQL Server ejecutándose en Docker ................................. 206

Pasos posteriores a la instalación .................................. ................................................ 208

Instalación de PolyBase como grupo escalable ................................. ................. 209


Consejo #1: Utilice diferentes grupos de recursos para cada parte de la arquitectura ......... 210

Consejo #2: Cree la red virtual y asegure las subredes antes


Construyendo máquinas virtuales ................................................. .......................................... 210

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

Instalación del grupo de escalamiento horizontal ................................. ........................................ 212

Reuniéndolo todo: su primera consulta sobre virtualización de datos ........................ 215

Capítulo 8: Marco de extensibilidad de los servicios

de aprendizaje automático 219

Descripción general del aprendizaje automático .................................. ................................ 220

Cómo funciona el aprendizaje automático .................................. ........................................ 220

Casos de uso para el aprendizaje automático ................................. ................................ 221

Lenguajes y herramientas para el aprendizaje automático ................................. ................ 222

Arquitectura y servicios de aprendizaje automático de SQL Server 2019


componentes ................................................. ................................................. ....... 224
Componentes ................................................. ................................................. ............ 226

Configuración ................................................. ................................................. .......... 228


Aprendizaje automático utilizando el marco de extensibilidad de Machine Learning
Services ......................... ................................................. ................. 230

R para aprendizaje automático en SQL Server 2019 ................................. ................. 230

Python para aprendizaje automático en SQL Server 2019 ................................. ........ 232

Java y aprendizaje automático en SQL Server ................................. ................ 233


Aprendizaje automático utilizando el comando PREDICT T-SQL ................................ 237

Aprendizaje automático utilizando el procedimiento almacenado sp_rxPredict ........................ 239

Bibliotecas y paquetes para aprendizaje automático ................................. ...... 240


Gestión ................................................. ................................................. ..... 241
Seguridad ................................................. ................................................. ................. 242

Monitoreo y desempeño ................................................. ................................. 242

Uso del proceso de ciencia de datos en equipo con Machine Learning Services ........ 244

Comprensión del proceso de ciencia de datos en equipo ................................. ......... 244

Fase 1: Entendimiento empresarial ................................................ ................................ 245

Fase 2: Adquisición y comprensión de datos ................................. ............ 245

Fase 3: Modelado ................................................ ................................................. ...... 245

Fase 4: Implementación ................................................ ................................................. 245

Fase 5: Aceptación del cliente ................................................ ................................... 246

Capítulo 9: Clústeres de Big Data de SQL Server 2019 249

Visión general de los macrodatos .................................. ................................................ 250

Aplicación de arquitecturas escalables a SQL Server ................................. ..... 250


Contenedores ................................................. ................................................. ................ 251

Kubernetes................................................. ................................................. ................ 253

Servidor SQL en Linux................................................ ................................................. ... 254

Polibase ................................................. ................................................. ................... 255

Componentes del clúster de big data de SQL Server 2019 ................................. ..... 256
Instalacion y configuracion ............................................... ................................ 257
Opciones de plataforma ................................................ ................................................. ...... 258

Usando un servicio de Kubernetes................................................ ........................................ 258

Utilizar una instalación local de Kubernetes ................................. .......... 259

Trabajar con un entorno de desarrollo/pruebas ......................................... ........................ 259

Implementación de clústeres de big data en un clúster de Kubernetes ................................. 260

Programación de clústeres de big data de SQL Server 2019 ................................. 262

Estudio de datos de Azure................................................. ................................................. ..... 262

Operaciones relacionales ................................................ ................................................ 264

Crear tablas escaladas ................................................ ........................................ 266

Creando un lago de datos ................................................ ................................................. ... 268

Trabajando con Spark................................................. ................................................. .. 269

Envío de un trabajo desde Azure Data Studio ................................. ................... 270

Envío de un trabajo Spark desde IntelliJ ................................................ ................................ 272

Archivos de trabajos de Spark y ubicaciones de datos ................................. ................................ 273

Gestión y seguimiento................................................. ................................ 273


Componentes y operaciones de SQL Server ................................................ ................... 273

Operaciones de Kubernetes................................................ ........................................ 273

Operaciones de clúster de big data de SQL Server 2019 ................................. ................ 274

Monitoreo del desempeño y las operaciones con Grafana ......................................... 275

Monitoreo de registros con Kibana ................................................ ........................................ 276

Operaciones de chispa ................................................ ................................................. ...... 277

Seguridad ................................................. ................................................. ................ 277

Acceso ................................................. ................................................. ........................ 278

Instalación y configuración de seguridad ................................................ ................................ 278

Autenticacion y autorizacion ............................................... ................................ 280


Capítulo 10: Mejorar la experiencia del desarrollador 283

Base de datos de gráficos SQL ................................................. ........................................ 285

¿Por qué utilizar SQL Graph? ................................................. ................................................ 287

Restricciones de borde ................................................ ................................................. ....... 287

Mejoras en la integridad de los datos de SQL Graph ................................. ................. 290

Compatibilidad con SQL Graph MATCH en MERGE ................................. ........................ 290

Uso de una tabla o vista derivada en una consulta MATCH de gráfico ......................... 294

Extensiones del lenguaje Java ................................................. ................................. 296

¿Por qué extensiones de idiomas? ................................................. ........................................ 296

Instalación ................................................. ................................................. ................. 297

Programa de muestra................................................ ................................................. ...... 300

JSON ................................................. ................................................. ................. 307


¿Por qué utilizar JSON? ................................................. ................................................. ....... 307

Ejemplo JSON................................................ ................................................. .......... 308

Soporte UTF-8................................................ ................................................. ....... 309


¿Por qué UTF-8? ................................................. ................................................. ............ 309

Tablas temporales ................................................. ................................................. .310

¿Por qué tablas temporales? ................................................. ................................................ 311

Ejemplo de tabla temporal ................................................ ........................................ 311

Tipos de datos espaciales ................................................ ................................................ 314

¿Por qué tipos de datos espaciales? ................................................. ........................................ 315

Ejemplo de localizador de distribuidores ................................................ ................................................ 315

Capítulo 11: Almacenamiento de datos 319

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

Índices de almacén de columnas agrupados ................................. ........................ 322


Fraccionamiento ................................................. ................................................. ........ 324

Gestión de índices en línea ................................................. ................................ 325


Habilitación del procesamiento DML en línea ................................................ ................................ 326

Reanudación de la creación o reconstrucción del índice en línea ......................... ................. 327

Crear y reconstruir índices de almacén de columnas agrupados en línea ........................ 329

Uso de ALTERAR LA CONFIGURACIÓN DEL ALCANCE DE LA BASE DE DATOS .................................. .... 329

Crear y mantener estadísticas ................................................ ................. 330


Gestión automática de estadísticas ................................................ ........................ 331

La opción AUTO_CREATE_STATISTICS ................................................. ....................331

La opción AUTO_UPDATE_STATISTICS ................................................. ...................331

La opción AUTO_UPDATE_STATISTICS_ASYNC ................................................. .....331

Estadísticas para índices de almacén de columnas ................................. ........................ 332

Patrones de almacén de datos modernos en Azure ................................. ......... 332


Introducción al almacén de datos SQL de Azure................................... ........ 333
Nodo de control ................................................. ................................................. ............ 333

Nodos de cálculo ................................................. ................................................. ........ 334

Almacenamiento ................................................. ................................................. ........................ 334

Servicios de movimiento de datos (DMS) ................................. ................................ 334

Mejores prácticas para trabajar con Azure SQL Data Warehouse ........................ 334

Reducir costos escalando hacia arriba y hacia abajo ................................. ........................ 335

Utilice PolyBase para cargar datos rápidamente ................................. ................................ 335

Gestionar las distribuciones de datos ................................................ ................................ 336

No particionar demasiado los datos ................................. .......................................... 336

Uso de la fábrica de datos de Azure.................................... ........................................ 337

Nuevas capacidades en el ADF ................................................ ................................................ 337

Entendiendo el ADF ................................................. ................................................. .. 338

Copiar datos al almacén de datos SQL de Azure ................................. ........ 340


Alojamiento de paquetes SSIS en ADF ................................................ ................................ 343

Almacenamiento de lago de datos de Azure.................................... ........................................ 344

Características clave de Azure Data Lake Storage Gen2 ................................. .......... 345

Ladrillos de datos de Azure ................................................ ................................................. 346

Trabajar con datos de streaming en Azure Stream Analytics ................................ 347

Análisis de datos mediante Power BI e introducción a Power BI ................. 349


Comprender el ecosistema de Power BI ................................................ ................. 349

Conexión de Power BI al almacén de datos SQL de Azure ................................. .. 352

Capítulo 12: Servicios de análisis 355

Introducción a los modelos tabulares................................................ ........................ 356

Introducción a los modelos multidimensionales................................................ ......... 358

Mejoras en modo tabular................................................ ........................ 359


Intercalado de consultas con sesgo de consulta corta ................................. ................... 360

Configuración de memoria para la gestión de recursos .................................. ............... 360

Grupos de cálculo ................................................ ................................................. ... 361

Cadenas de formato dinámico ................................................. ........................................ 362

Consulta directa ................................................. ................................................. ............ 363

Filtrado cruzado bidireccional ................................................ ........................................ 366

Relaciones de muchos a muchos................................................ ........................................ 367

Configuración de gobernanza para las actualizaciones de la caché de Power BI ................................. .... 368

Adjuntar en línea ................................................ ................................................. ............ 368

Presentamos DAX ................................................. ................................................. 369


Columnas calculadas ................................................ ................................................. .370

Medidas calculadas ................................................ ................................................ 370

Tablas calculadas ................................................ ................................................. ...... 372

Filtros de fila ................................................. ................................................. ................. 373

Mejores prácticas de cálculo DAX ................................. ................................... 375


Escribir consultas DAX ................................................ ........................................ 376
Usando variables en DAX ................................................ .......................................... 379

Introducción a los servicios de análisis de Azure ................................................ .............. 380

Seleccionar el nivel correcto................................................ ................................................ 381

Ampliar, reducir, pausar, reanudar y reducir ................................. ................. 382

Conexión a sus datos donde se encuentran ................................................ ........................ 382

Proteger sus datos ................................................. ................................................. .... 383

Usando herramientas conocidas................................................. ................................................. ... 383

Monitoreo y diagnóstico integrados ................................................ ................................ 384

Aprovisionamiento de un servidor de Azure Analysis Services y


Implementando un modelo tabular................................................ .......................................... 384

Capítulo 13: Servidor de informes de Power BI 389

SSRS versus servidor de informes Power BI ................................. ........................ 389

Tipos de contenido del informe .................................. ........................................ 391


Migración de informes paginados existentes a Power BI Report Server ................ 392

Explorando nuevas capacidades ................................................ ................................... 395

Analizador de rendimiento ................................................ ................................................ 396

La nueva vista de Modelado................................................ ................................................ 398

Seguridad a nivel de fila para modelos de datos de Power BI ......................... ................ 398

Tematización del informe ................................................. ................................................. ........400

Gestión de diseños de parámetros ................................................ ................................ 401

Desarrollo de KPI ................................................. ................................................. .. 402

Publicación de informes................................................ ................................................ 405

Gestión del acceso y la seguridad de los informes .................................. ................. 406

Publicar informes móviles ................................................ ................................... 409


Visualización de informes en navegadores modernos .................................. ................... 409

Visualización de informes en dispositivos móviles ................................................ ........................ 412


Exploración de informes de Power BI ................................................ ................................ 415

Usando el panel FILTROS ................................................ ................................................ 416

Resaltado cruzado y filtrado cruzado ........................................... ................. 416

Ordenar una visualización ................................................ ................................................ 417

Mostrar los datos subyacentes de una visualización ......................................... ................. 417

Profundizar en una visualización ......................................... ........................................ 418

Automatización de la entrega de informes con suscripciones ................................. .. 418

Anclar elementos de informe al servicio Power BI ................................. ........ 420

Capítulo 14: Modernización a la nube de Azure 423

La plataforma de datos SQL en Azure ................................................ ................................ 424

Instancia administrada de Azure SQL Database ................................................ ................. 424

Implementación de una instancia administrada en Azure ........................................... ....... 425

Instancia administrada a través del portal de Azure ................................................ ........................ 426

Instancia administrada mediante plantillas ................................................ ................................ 427

Migración de SQL Server a una instancia administrada ................................................ ......... 430

Servicio de migración de bases de datos de Azure (DMS) ................................. ................. 431

Conectividad de aplicaciones ................................................ .......................................... 431

Requisitos para el DMS................................................ ........................................ 432

Asistente de migración de datos ................................................ .......................................... 433

Tamaño de instancia administrada ................................................ .......................................... 433

Migración ................................................. ................................................. ................. 433

Monitoreo de instancia administrada ................................................ ................................ 434

SQL Server en máquinas virtuales de Azure ......................................... ........................ 435

Creación de una máquina virtual de Azure desde Azure Portal ................................. ......... 436

Opciones de almacenamiento para máquinas virtuales ......................................... ........................................ 438

Diagnóstico y opciones avanzadas ................................................ ........................ 438

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

Copias de seguridad de instancias de Azure VM SQL Server ................................. ................ 444

Seguridad integrada para máquinas virtuales de Azure ................................. ........................................ 444

Extensión del agente IaaS de SQL Server ................................. ........................ 446


Entorno de recuperación ante desastres en la nube ................................................ ....... 447

Recuperación del sitio de Azure ................................................. ................................................. .. 447

Soporte extendido para SQL 2008 y 2008 R2 ................................. ................. 448

Í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

y bases de datos gratuitos y un crédito de $200.Comience gratis > especialista en ventas>


Prefacio
>
Acerca de

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

Acerca de Microsoft SQL Server 2019


Desde sus humildes comienzos en OS/2 con la versión 1.1, SQL Server ha demostrado una y otra vez que es
una base de datos que a los profesionales de datos les encanta usar. El motor es confiable y el dialecto T-SQL
tiene todo lo que el desarrollador necesita para escribir rápidamente aplicaciones resistentes y de alto
rendimiento.

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.

La seguridad es esencial en cualquier sistema de procesamiento y almacenamiento de datos, y SQL


Server se enorgullece de ser la base de datos más segura en los últimos ocho años según la
Vulnerabilidad Integral del Instituto Nacional de Estándares y Tecnología (NIST). Base de datos. SQL
Server admite la seguridad empresarial y el cumplimiento de funciones de seguridad como cifrado
de datos transparente, auditoría, seguridad a nivel de fila, enmascaramiento dinámico de datos y
siempre cifrado. SQL Server 2019 agrega compatibilidad con enclaves seguros en Always Encrypted
para permitir cálculos enriquecidos sobre datos cifrados.

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.

Sobre los capítulos


Capítulo 1,Optimización para el rendimiento y la información en tiempo real, explica cómo
SQL Server 2019 aprovecha al máximo su hardware y potencia sus análisis con características
como Hybrid Buffer Pool y procesamiento híbrido transaccional y analítico.

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 8,Marco de extensibilidad de servicios de aprendizaje automático,explora el aprendizaje


automático, los componentes y arquitecturas de SQL Server 2019 que puede utilizar para
implementar dichos servicios y el proceso que sigue para sus soluciones.

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 11,Almacenamiento de datos,destaca características de seguridad de misión crítica como


seguridad a nivel de fila, siempre cifrado y enmascaramiento de datos.

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."

Un bloque de código se establece de la siguiente manera:

USAR maestro;

IR
CERTIFICADO DE RESPALDO MyServerCert

AL ARCHIVO = 'C:\SQLSERVER\MyServerCert.cer' CON

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."

Requisitos del sistema

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)

• 1 GB de memoria (se recomiendan 4 GB)

• 6 GB de espacio disponible en el disco duro

• Pantalla Super VGA de 800 x 600 o resolución superior

• 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.

Dependiendo de su configuración de Windows, es posible que necesite derechos de administrador


local para instalar o configurar SQL Server 2019 y productos relacionados.
vi|Prefacio

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.

Base de datos de AdventureWorks

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.

Procesamiento híbrido transaccional y analítico (HTAP)


Procesamiento híbrido transaccional y analítico (HTAP ), es la aplicación de herramientas y
funcionalidades para poder analizar datos en vivo sin afectar las operaciones transaccionales.

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.

Este capítulo cubre muchas de estas funciones y le permitirá comprender la tecnología y


las funciones disponibles.

Una discusión más general sobre HTAP está disponible aquí:https://en.wikipedia.org/wiki/


Hybrid_transactional/analytical_processing_(HTAP) .

Í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.

Un grupo de filas es un conjunto de filas que se comprimen en un formato de almacén de columnas:


un máximo de un millón de filas (1.048.576).

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:

Figura 1.1: Carga de datos en un índice de almacén de columnas no agrupado


4|Optimización del rendimiento, la escalabilidad y la información en tiempo real

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.

Figura 1.2: Carga de un índice de almacén de columnas agrupado

Puede encontrar más información aquí:https://docs.microsoft.com/en-us/sql/


relacional-databases/indexes/get-started-with-columnstore-for-real-
timeoperativeal-analytics?view=sql-server-2017 .
Tablas basadas en disco versus tablas optimizadas para memoria |5

Agregar índices de almacén de columnas agrupados a tablas optimizadas para memoria

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

ALTERAR TABLA MyMemOpttable

AGREGAR ÍNDICE MyMemOpt_ColIndex almacén de columnas agrupado

Tablas basadas en disco versus tablas optimizadas 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

Puede encontrar información adicional en este enlace de documentos de Microsoft:

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.

La mayor parte del rendimiento proviene de la eliminación de la contención de bloqueos y pestillos


entre transacciones que se ejecutan simultáneamente y está optimizado para datos en memoria.
Aunque se realizan en memoria, los cambios se registran en el disco para que, una vez confirmados,
la transacción no se pierda incluso si la máquina falla.

Para utilizar completamente OLTP en memoria, están disponibles las siguientes funciones:

• Las tablas optimizadas para memoria se declaran cuando se crea la tabla.

• 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.

Puede encontrar información adicional en los siguientes enlaces:

• 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

Planificación de la migración de datos a tablas optimizadas para memoria

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:

Figura 1.3: Elección del análisis del rendimiento de las transacciones


8|Optimización del rendimiento, la escalabilidad y la información en tiempo real

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:

Figura 1.4: Tablas recomendadas según el uso


Planificación de la migración de datos a tablas optimizadas para memoria |9

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:

Figura 1.5: Selección del Asesor de optimización de memoria


10|Optimización del rendimiento, la escalabilidad y la información en tiempo real

ElAsesor de optimización de memoria de tablaes un "asistente" estilo de interfaz de usuario que le


guiará a través de las configuraciones:

Figura 1.6: El diálogo del Asesor de optimización de memoria de tablas


Planificación de la migración de datos a tablas optimizadas para memoria |11

El asistente lo guiará a través de una lista de verificación con cualquier problema fallido:

Figura 1.7: Lista de verificación de optimización de la memoria


12|Optimización del rendimiento, la escalabilidad y la información en tiempo real

El diálogo sobre advertencias señalará otras cuestiones importantes.

Figura 1.8: Advertencias de optimización de memoria


Planificación de la migración de datos a tablas optimizadas para memoria |13

Luego ingrese los nombres de los archivos y verifique las rutas en el diálogo de opciones de migración.

Figura 1.9: Opciones de optimización de revisión


14|Optimización del rendimiento, la escalabilidad y la información en tiempo real

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.

Figura 1.10: Revisar la conversión de clave principal


Planificación de la migración de datos a tablas optimizadas para memoria |15

Haciendo clickGuionpuede generar un script Transact-SQL en la pantalla de resumen.

Figura 1.11: Verificar pantalla de resumen de acciones de migración


dieciséis|Optimización del rendimiento, la escalabilidad y la información en tiempo real

El asistente mostrará un informe a medida que la tabla migra.

Figura 1.12: Informe de progreso de la migración

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:

- - Crear base de datos optimizada para memoria

USE MASTER;

IR

CREAR BASE DE DATOS MemOptDB

ON (Nombre = MemOptDB_Data, Nombre de archivo = 'c:\sqldata\memoptdb_data.mdf', tamaño = 10 mb,


tamaño máximo = 20 mb, crecimiento de archivo = 5 mb)

INICIAR SESIÓN (Nombre = MemOptDB_Log, Nombre de archivo = 'c:\sqldata\memoptdb_log.ldf', tamaño = 2


mb, tamaño máximo = 10 mb, crecimiento de archivo = 1 mb);

IR

- - Debe declarar un grupo de archivos optimizado para memoria

ALTER DATABASE MemOptDB

AGREGAR FILEGROUP MemOptDB_FG contiene MEMORY_OPTIMIZED_DATA;

ALTERAR BASE DE DATOS MemOptDB

AÑADIR ARCHIVO (Nombre = 'MemOptDB_MOFG', Nombre de archivo = 'c:\sqldata\memoptdb_mofg') AL

FILEGROUP MemOptDB_FG;

ALTERAR BASE DE DATOS MemOptDB

ESTABLECER MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ACTIVADO;

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:

Figura 1.13: La ventana de diálogo de la nueva base de datos

Procedimientos almacenados compilados de forma nativa

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.

Aquí se introducen algunos conceptos adicionales, incluyendoENLACE DE ESQUEMAS yCOMENZAR ATÓMICO ,


los cuales son necesarios para los procedimientos almacenados compilados de forma nativa.
Procedimientos almacenados compilados de forma nativa |19

SCHEMABINDING bloquea la definición de la tabla para evitar modificaciones después de crear el


procedimiento almacenado. SCHEMABINDING permite que el procedimiento almacenado compilado
tenga ciertos tipos de datos involucrados. Las tablas involucradas en el procedimiento almacenado
compilado de forma nativa no se pueden modificar sin eliminar SCHEMABINDING, realizar cambios y
luego volver a aplicar SCHEMABINDING. SHEMABINDING también requiere que se utilicen nombres de
campo explícitos en la consulta; "seleccionar *…" no trabajará.

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:

- - Crear tabla optimizada para memoria USE

MemOptDB;

IR

CREAR TABLA dbo.MyMemOptTable (

id int no nulo, dtCreated


datetime no nulo,
20|Optimización del rendimiento, la escalabilidad y la información en tiempo real

ID de pedido nvarchar(10) no nulo


RESTRICCIÓN pk_id CLAVE PRIMARIA NO CLUSTERADA (id))

CON (MEMORIA_OPTIMIZED = ENCENDIDO, DURABILIDAD = SCHEMA_AND_DATA)

IR

- - Crear procedimiento almacenado de forma nativa

CREAR PROCEDIMIENTO dbo.myNativeProcedure (@id int)

CON NATIVE_COMPILATION, SCHEMABINDING

COMO COMENZAR ATÓMICO CON ( NIVEL DE AISLAMIENTO DE TRANSACCIÓN = INSTANTÁNEA, IDIOMA =


N'us_english' )

SELECCIONE ID, dtCreated, ID de pedido

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í:

- - ¡Intenta alterar el esquema! ALTERAR


TABLA [dbo].[MyMemOpttable]
ALTERAR COLUMNA ID de pedido nvarchar(20)

IR

Mensaje 5074, Nivel 16, Estado 1, Línea 55


El objeto 'myNativeProcedure' depende de la columna 'orderId'.
Mensaje 4922, Nivel 16, Estado 9, Línea 55
ALTER TABLE ALTER COLUMN orderId falló porque uno o más objetos acceden a esta
columna.
Mejoras en TempDB |21

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.

Habilitación de metadatos TempDB optimizados para memoria

Habilitar esta característica en SQL Server es un proceso de dos pasos:

• Primero, modifique la configuración del servidor con T-SQL

• Reiniciar el servicio

ALTERAR LA CONFIGURACIÓN DEL SERVIDOR ESTABLECER MEMORY_OPTIMIZED tempdb_METADATA = ON

El siguiente comando T-SQL se puede utilizar para verificar sitempdbestá optimizado para la
memoria:

SELECCIONE LA PROPIEDAD DEL SERVIDOR ('IsTempdbMetadataMemoryOptimized')

Limitaciones de los metadatos TempDB optimizados para memoria

Existen algunas limitaciones asociadas con el uso de esta nueva función.

• Para activar y desactivar la función es necesario reiniciar el servicio.

• 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.

Procesamiento inteligente de consultas

Procesamiento inteligente de consultas (IQP ) es una familia de características que se introdujeron en


Microsoft SQL Server 2017 como procesamiento de consultas adaptativo y se ha ampliado con nuevas
características en Microsoft SQL Server 2019. Al actualizar a SQL Server 2019 y con el nivel de compatibilidad
150, la mayoría de las cargas de trabajo verán mejoras de rendimiento debido para agregar inteligencia en el
optimizador de consultas.

Las funciones de procesamiento inteligente de consultas se habilitan automáticamente según el nivel de


"COMPATIBLITY_LEVEL". de la base de datos. Para aprovechar las últimas funciones de IQP, establezca la
compatibilidad de la base de datos en 150.

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

La siguiente tabla resume algunas de las características de IQP.

Tabla 1.14: Tabla que resume las características de IQP

• Estas características se pueden desactivar y monitorear.

• Para obtener más información, consultehttps://docs.microsoft.com/en-us/sql/


relationaldatabases/performance/intelligent-query-processing?view=sql-server-2017 .
24|Optimización del rendimiento, la escalabilidad y la información en tiempo real

Grupo de búfer híbrido

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:

Figura 1.15: Arquitectura de memoria Intel

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:

ALTERAR LA CONFIGURACIÓN DEL SERVIDOR

ESTABLECER MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ENCENDIDO;

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;

O, para deshabilitarlo, ejecute el siguiente comando:


ALTERAR BASE DE DATOS <nombre de la base de datos> ESTABLECER MEMORIA_OPTIMIZADA = APAGADO;

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:

SELECCIONE * DESDE sys.configurations DONDE nombre = 'hybrid_buffer_pool';

SELECCIONE el nombre, is_memory_optimized_enabled FROM sys.databases;

Hay muchas consideraciones al configurar un servidor con memoria persistente,


incluida la proporción de DRAM a PMEM. Puede leer más aquí:

• 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:

• Cambios en los valores de parámetros predeterminados al habilitar Query Store

• Un nuevoQUERY_CAPTURE_MODEcostumbre

• Soporte para cursores estáticos y de avance rápido


26|Optimización del rendimiento, la escalabilidad y la información en tiempo real

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:

Figura 1.16: Ventana de diálogo de propiedades de la base de datos


Almacén de consultas |27

Cambios en los valores de parámetros predeterminados

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í:

• MAX_STORAGE_SIZE_MBtiene un valor predeterminado de 1000 (MB)

• ElQUERY_CAPTURE_MODEtiene un valor predeterminado de AUTdO

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.

Configurando elQUERY_CAPTURE_MODEaAUTOsignifica que no se capturarán planes de consulta ni estadísticas de


tiempo de ejecución asociadas para las primeras 29 ejecuciones en un solo día. Los planes de consulta y las estadísticas
de tiempo de ejecución no se capturan hasta la ejecución número 30 de un plan. Esta configuración predeterminada se
puede cambiar utilizando el nuevo modo personalizado.

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.

ElCOSTUMBREEl modo le proporciona un mecanismo para cambiar la configuración predeterminada del


Query Store. Por ejemplo, las siguientes configuraciones se pueden modificar cuando se trabaja en modo
PERSONALIZADO:

• 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:

SELECCIONE actual_state_desc, stale_query_threshold_days,


query_capture_mode_desc,
capture_policy_execution_count, capture_policy_total_compile_cpu_time_ms,
capture_policy_total_execution_cpu_time_ms
DESDE sys.database_query_store_options

El resultado es el siguiente:

Figura 1.17: Verificación y validación de la configuración del Almacén de consultas

Para modificar la configuración predeterminada, primero cambiará el modo de captura de consultas a


personalizado y luego aplicará los cambios a los valores predeterminados. Mire el siguiente código a modo de
ejemplo:

ALTERAR BASE DE DATOS AdventureWorks2017

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:

Figura 1.18: Modificación de la configuración predeterminada

Soporte para cursores FAST_FORWARD y STATIC


Hemos agregado otra actualización interesante a Query Store. Ahora puede forzar planes de
ejecución de consultas para cursores estáticos y de avance rápido. Esta funcionalidad admite
cursores T-SQL y API. Forzar planes de ejecución para cursores estáticos y de avance rápido se
admite a través de SSMS o T-SQL usandosp_query_store_force_plan.

Sintonización automática

El ajuste automático identifica posibles problemas de rendimiento de las consultas, recomienda


soluciones y corrige automáticamente los problemas identificados.

De forma predeterminada, la sintonización automática está deshabilitada y debe habilitarse. Hay dos funciones de
sintonización automática disponibles:

• Corrección automática del plan

• Gestión automática de índices

Corrección automática del plan

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.

Habilitar la corrección automática del plan

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:

SELECCIONE el nombre, deseado_state_desc,


actual_state_desc DE sys.database_automatic_tuning_options

El resultado es el siguiente:

Figura 1.19: La corrección automática del plan está desactivada

Habilite la corrección automática del plan utilizando el siguiente código:


ALTERAR BASE DE DATOS actual

ESTABLECER AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON)


Sintonización automática |31

Si no ha activado Query Store, recibirá el siguiente error:

Figura: 1.20: Informe de error si Query Store está desactivado

Planes forzados automáticamente

El motor de base de datos utiliza dos criterios para forzar planes de ejecución de consultas:

• Cuando la ganancia de CPU estimada es superior a 10 segundos

• La cantidad de errores en el plan recomendado es menor que la cantidad de errores


en el nuevo plan.

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 que el motor de base de datos fuerza automáticamente no persisten


entre reinicios de SQL Server.

• 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:

SELECCIONE el nombre, deseado_state_desc, actual_state_desc

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

Perfiles de consulta ligeros


Perfiles de consulta ligeros (LWP ) proporciona a los DBA la capacidad de monitorear consultas en tiempo real a
un costo significativamente reducido del método estándar de creación de perfiles de consultas. La sobrecarga
esperada de LWP es del 2 % de la CPU, en comparación con una sobrecarga del 75 % de la CPU para el mecanismo
de creación de perfiles de consultas estándar.

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 .

Nueva funcionalidad en 2019

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.

• También hemos introducido un nuevo evento ampliado. El nuevo


query_post_execution_plan_profileEl evento extendido recopila el equivalente de un plan
de ejecución real basado en perfiles livianos, a diferencia de
query_post_execution_showplan, que utiliza perfiles estándar.

• También tenemos un nuevo DMFsys.dm_exec_query_plan_stats;este DMF devuelve el


equivalente al último plan de ejecución real conocido para la mayoría de las consultas, basado
en perfiles ligeros.
Perfiles de consulta ligeros |33

La sintaxis parasys.dm_exec_query_plan_statses como sigue:


sys.dm_exec_query_plan_stats(plan_handle)

Para un análisis más detallado, consulte esta documentación en línea:https://


docs.microsoft. com/en-us/sql/relational-databases/system-dynamic-management-views/
sys-dmexec-query-plan-stats-transact-sql?view=sql-server-2017 .

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:

SELECCIONE * DESDE sys.database_scoped_configurations

DONDE nombre = 'LAST_QUERY_PLAN_STATS'

El resultado es el siguiente:

Figura 1.22: Verificar el estado de las configuraciones de alcance de la base de datos

Para habilitar o deshabilitar LWP, utilizará la configuración de ámbito de base de datos


ligero_query_profiling. Consulte el siguiente ejemplo:
ALTERAR LA CONFIGURACIÓN DEL ALCANCE DE LA BASE DE

DATOS SET LIGHTWEIGHT_QUERY_PROFILING = OFF;


34|Optimización del rendimiento, la escalabilidad y la información en tiempo real

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.

Figura 1.23: El monitor de actividad

Estadísticas del almacén de columnas en DBCC CLONEDATABASE

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

Soporte de estadísticas del almacén de columnas

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 .

Validaciones de DBCC CLONEDATABASE

DBCC CLONEDATABASE realiza las siguientes comprobaciones de validación. Si alguna de estas


comprobaciones falla, la operación fallará y no se proporcionará una copia de la base de datos.

• La base de datos de origen debe ser una base de datos de usuario.

• La base de datos de origen debe estar en línea o ser legible.

• El nombre de la base de datos clonada no debe existir todavía.

• El comando no debe ser parte de una transacción de usuario.

Comprender la sintaxis de DBCC CLONEDATABASE

Sintaxis de DBCC CLONEDATABASE con parámetros opcionales:


BASE DE DATOS CLONADA DBCC

(
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

Los siguientes mensajes se proporcionan al finalizar:

Figura 1.24: Salida de la base de datos clonada

Para excluir estadísticas, reescribe el código para incluirSIN_ESTADÍSTICAS:


DBCC CLONEDATABASE ('Fuente', 'Destino_NoStats') CON
NO_STATISTICS;
Para excluir estadísticas y datos del Query Store, ejecute el siguiente código:
DBCC CLONEDATABASE ('Fuente', 'Destino_NoStats_NoQueryStore')
CON NO_STATISTICS, NO_QUERYSTORE; Preparar

la base de datos clonada para producción

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:

Figura 1.25: Verificación de la base de datos clonada

Compresión estimada para índices de almacén de columnas

El procedimiento almacenadosp_estimate_data_compression_ahorroestima el tamaño del


objeto para el estado de compresión solicitado. Además, puede evaluar posibles ahorros en
compresión para tablas enteras o partes de tablas; Discutiremos las opciones disponibles en
breve. Antes de SQL Server 2019, no podía utilizarsp_estimate_data_ahorro_compresiónpara
los índices de almacén de columnas y, por lo tanto, no pudimos estimar la compresión para el
almacén de columnas ocolumnstore_archive.
Compresión estimada para índices de almacén de columnas |37

Hemos ampliado la capacidad desp_estimate_data_compression_ahorroincluir soporte para


TIENDA DE COLUMNASyCOLUMNSTORE_ARCHIVE.

sp_estimate_data_compression_ Savings Sintaxis

Mire la siguiente sintaxis T-SQL:


sp_estimate_data_compression_ahorro
[ @schema_name = ] 'schema_name'
, [ @object_name = ] 'object_name'
, [@index_id = ] índice_id
, [@número_partición = ] número_partición
, [@data_compression = ] 'compresión_de_datos'
[;]

Las siguientes descripciones de argumentos las proporciona docs.microsoft.com:


https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/
sp-estimate-data-compression- Savings-transact-sql?view=sql-server-2017 .

Tabla 1.26: Descripción de los argumentos


38|Optimización del rendimiento, la escalabilidad y la información en tiempo real

Actualmente hay ocho salidas disponibles; Te centrarás principalmente en los cuatro resultados relacionados
con el tamaño.

Producción:

nombre del objeto

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:

EXEC sp_estimate_data_compression_ Savings


@schema_name = 'dbo',
@object_name = 'MySourceTable',
@index_id = NULL,
@partition_number = NULL,
@data_compression = 'PÁGINA'

Ejemplo con compresión de PÁGINA:

Figura 1.27: Compresión de PÁGINA

EXEC sp_estimate_data_compression_ Savings


@schema_name = 'dbo',
@object_name = 'MySourceTable',
@index_id = NULL,
@partition_number = NULL,
@data_compression = 'COLUMNSTORE'
Solución de problemas de esperas de recursos de página |39

Ejemplo con compresión COLUMNSTORE:

Figura 1.28: Compresión COLUMNSTORE

En este ejemplo, la compresión de páginas ha estimado un ahorro de espacio de aproximadamente el 45 %, y la


compresión del almacén de columnas ha estimado un ahorro de espacio del 68 %.

Solución de problemas de esperas de recursos de página

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.

Esta sección discutirá los siguientes temas:

• Permisos de estado de la base de datos

• 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:

CONCEDER VER EL ESTADO DE LA BASE DE DATOS A [iniciar sesión]

Hay cuatro parámetros requeridos:


sys.dm_db_page_info (ID de base de datos, ID de archivo, ID de página, modo)
40|Optimización del rendimiento, la escalabilidad y la información en tiempo real

Las siguientes descripciones de argumentos son proporcionadas pordocs.microsoft.com :

Tabla 1.29: La descripción de los argumentos.

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:

SELECCIONE OBJECT_NAME(object_id) como TableName,*


FROM SYS.dm_db_page_info(6, 1, 1368, 'Limitado') El
resultado es el siguiente:

Figura 1.30: Salida con modo LIMITADO

Utilizando elDetalladomodo, obtendrá mucha más información descriptiva que la proporcionada en


el ejemplo anterior. En este ejemplo, puedes ver que elNULOLos valores se han reemplazado con
información descriptiva.
SELECCIONE OBJECT_NAME(object_id) como TableName,*
FROM SYS.dm_db_page_info(6, 1, 1368, 'Detallado')
Solución de problemas de esperas de recursos de página |41

El resultado es el siguiente:

Figura 1.31: Salida con modo Detallado

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.

En este ejemplo, la columna page_resource se pasa alsys.fn_PageResCrackerfunción, y


luego el ID de la base de datos, el ID del archivo y el ID de la página se pasan a
sys.dm_db_page_info:
SELECCIONE OBJECT_NAME(page_info.object_id) COMO TableName,page_info.*

FROM sys.dm_exec_requests AS d

APLICACIÓN CRUZADA sys.fn_PageResCracker (d.page_resource) AS r


APLICACIÓN CRUZADA sys.dm_db_page_info(r.db_id, r.file_id, r.page_id,
'detallado') AS page_info
42|Optimización del rendimiento, la escalabilidad y la información en tiempo real

El resultado es el siguiente:

Figura 1.32: La columna de recursos de la página se pasa a una función

Puede leer más aquí:https://docs.microsoft.com/en-us/sql/relational-databases/system-


functions/sys-fn-pagerescracker-transact-sql?view=sql-server-2017 .
Seguridad empresarial
2
Proteger datos confidenciales y cumplir con las regulaciones de la industria, como PCI-DSS (Estándar
de seguridad de datos de la industria de tarjetas de pago ) yRGPD (Reglamento General de
Protección de Datos ) es muy importante. Un sistema de base de datos comprometido puede
provocar una pérdida de ingresos, multas regulatorias y un impacto negativo en la reputación de su
empresa.

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

clasificar conjuntos de datos específicos para garantizar el cumplimiento.

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.

Descubrimiento y clasificación de datos SQL


La función Clasificación y descubrimiento de datos le permite identificar, clasificar y etiquetar datos
almacenados en su conjunto de SQL Server. El gran volumen de datos que ahora se encuentran en las
bases de datos hace que este sea un proceso desafiante, junto con el hecho de que los mandatos
regulatorios como GDPR, SOX y PCI exigen que las empresas protejan los datos confidenciales. Entonces
puedes ver cómo te ayudará esta función. Antes de poder desarrollar una estrategia de seguridad para sus
bases de datos de SQL Server, tiene sentido lógico saber qué datos tiene y, a partir de ahí, puede clasificar
y etiquetar los datos más confidenciales e implementar los controles de seguridad pertinentes,
minimizando así las posibles fugas de datos confidenciales. .

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.

Figura 2.1: Confirmación de clasificación


Descubrimiento y clasificación de datos SQL |47

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).

Figura 2.2: Accediendo a la opción Clasificar datos... desde el menú

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

Figura 2.3: Conexión exitosa a la base de datos


Descubrimiento y clasificación de datos SQL |49

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.

Figura 2.4: Se han implementado cambios 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:

AÑADIR CLASIFICACIÓN DE SENSIBILIDAD A

<nombre_objeto> [, ...n]

CON ( <sensitivity_label_option> [, ...n ]

Esto sólo es posible con Azure SQL Database.


50|Seguridad empresarial

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:

Figura 2.5: Informe de clasificación de datos SQL

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

Evaluación de vulnerabilidad SQL


Mientras pensamos en una estrategia de seguridad sólida para SQL Server, es importante abordar
los problemas de seguridad actuales que existen dentro de su base de datos. ¿Por dónde deberías
empezar? ¿Qué trabajo técnico se requiere para abordar los problemas encontrados? La evaluación
de vulnerabilidad de SQL es la herramienta para esta tarea. Le permitirá mejorar sus procesos
internos y reforzar su seguridad en un entorno de base de datos dinámico y en constante cambio.

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:

Figura 2.6: Acceso al escaneo de vulnerabilidades desde el menú Tareas


52|Seguridad empresarial

Es necesario indicar una ubicación para guardar la evaluación. Esta será la ubicación
donde podrá abrir y ver informes históricos:

Figura 2.7: El cuadro de diálogo de escaneo

Nota
El escaneo es liviano y de solo lectura. No causará degradación del rendimiento.
Evaluación de vulnerabilidad SQL |53

Figura 2.8: Resultados de la evaluación de vulnerabilidad

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:

Figura 2.9: Resultados de la evaluación

Esta es simplemente una forma de aprobar un cheque para que se clasifique como aprobado en futuros escaneos:

Figura 2.10: Cuadro de diálogo de aprobación de línea base


54|Seguridad empresarial

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.

Figura 2.11: La verificación VA2108

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:

SELECCIONE nombre_usuario(sr.member_principal_id) como [Principal],


nombre_usuario(sr.role_ principal_id) como [Rol], type_desc como [Tipo principal]
DESDE sys.database_role_members sr, sys.database_principals sp
DONDE sp.principal_id = sr.member_principal_id
Y sr.role_principal_id IN (user_id('bulkadmin'),
Evaluación de vulnerabilidad SQL |55

user_id('db_accessadmin'),
user_id('db_securityadmin'),
user_id('db_ddladmin'),
user_id('db_backupoperator'))
ORDENAR POR sp.name

Esto da el siguiente resultado:

Figura 2.12: El rol asignado es db_securityadmin

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:

ALTERAR ROL [db_securityadmin] BORRAR MIEMBRO [SQLadmin]

Cifrado de datos transparente

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

Un enfoque común para implementar TDE es la jerarquía de cifrado tradicional que se


muestra enFigura 2.13:

Figura 2.13: Arquitectura de cifrado de base de datos transparente


Evaluación de vulnerabilidad SQL |57

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

CREAR CERTIFICADO MyServerCert CON ASUNTO = 'Mi certificado DEK'; IR

USAR [MicrosoftDB];
IR
CREAR CLAVE DE CIFRADO DE BASE DE

DATOS CON ALGORITMO = AES_256

CIFRADO MEDIANTE CERTIFICADO DE SERVIDOR MyServerCert; IR

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

AL ARCHIVO = 'C:\SQLSERVER\MyServerCert.cer' CON

CLAVE PRIVADA

(ARCHIVO = 'C:\SQLSERVER\certificate_Cert.pvk',
CIFRADO POR CONTRASEÑA = '!£$Strongpasswordherewelikesqlver#')

ALTERAR LA BASE DE DATOS [MicrosoftDB]

CONFIGURAR EL CIFRADO EN;

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"

CUANDO '1' ENTONCES 'Sin cifrar'

CUANDO '2' ENTONCES 'Cifrado en progreso'

CUANDO '3' ENTONCES 'Cifrado'

CUANDO '4' ENTONCES 'Cambio clave en progreso' CUANDO '5'

ENTONCES 'Descifrado en progreso' CUANDO '6' ENTONCES

'Cambio de protección en progreso '

ELSE 'Sin estado'


FIN,
porcentaje_completo, fecha_creación, algoritmo_clave, longitud_clave, tipo_cifrador,
fecha_modificación_escaneo_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:

Figura 2.14: Cifrado de bases de datos

Nuevas funciones: suspender y reanudar

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.

El comando T-SQL que suspende el análisis de cifrado es el siguiente:


ALTERAR BASE DE DATOS [AdventureDB] ESTABLECER SUSPENDER CIFRADO;

Si marca el error inicie sesiónFigura 2.15, verá que el análisis se ha pausado.

Figura 2.15: Registro de errores

Para reanudar el análisis, emita elREANUDARcomando que se muestra en el siguiente fragmento.


Verificar el estado del cifrado a través de la consulta de la sección anterior mostrará el porcentaje
de finalización, que es el último punto desde el que se reanudó.
ALTERAR BASE DE DATOS [AdventureDB] ESTABLECER REANUDAR CIFRADO;

Figura 2.16: Porcentaje de escaneo completado

El registro de errores confirma que el análisis se completó:

Figura 2.17: Confirmación de que el escaneo está completo


60|Seguridad empresarial

También notará una nueva columna dentro de la tabla llamadacifrado_escaneo_modificar_fecha. Este


se almacena dentro delsys.dm_database_encryption_keysvista de gestión dinámica. Contiene la fecha y
hora del último cambio de estado del análisis de cifrado, que se basa en cuándo se suspendió o reanudó
el análisis por última vez. La suspensión y reanudación de un análisis también se aplica al proceso de
descifrado cuando el cifrado está desactivado para TDE.

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:

Figura 2.18: Registro de errores con el comando RESUME

Gestión de claves extensible


Al configurar TDE, puede seguir los pasos que hemos visto hasta ahora para implementar una estrategia
de jerarquía de claves tradicional. Sin embargo, también puede utilizar Azure Key Vault como Gestión
de claves extensible (EKM ) proveedor, que utiliza una clave asimétrica que está fuera de SQL Server,
en lugar de un certificado dentro de la base de datos maestra. Como puedes imaginar, esto añade otra
capa de seguridad, que suele ser la estrategia preferida de muchas organizaciones.

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

Always Encrypted utiliza elAEAD_AES_256_CBC_HMAC_SHA_256algoritmo. Hay dos variaciones:


deterministayaleatorio. El cifrado determinista siempre genera el mismo valor cifrado de un valor
de entrada determinado. Con este tipo de cifrado, es posible que su aplicación realice búsquedas
de puntos, uniones de igualdad, indexación y agrupación en la columna cifrada. El único problema
potencial al utilizar este tipo de cifrado es si la columna cifrada contiene pocos valores o si las
estadísticas sobre la distribución de datos en texto sin formato se conocen públicamente; en tales
casos, un atacante podría adivinar los valores de texto sin formato subyacentes.

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 .

Computación confidencial con enclaves seguros


Como se mencionó anteriormente, los dos desafíos principales de Always Encrypted son la funcionalidad
de consulta reducida y la necesidad de sacar datos de la base de datos para operaciones criptográficas,
como el cifrado inicial o la rotación de claves. Para abordar esto, Microsoft aprovecha la tecnología de
enclave seguro de vanguardia para permitir que se realicen cálculos enriquecidos y operaciones
criptográficas dentro del motor de base de datos.
62|Seguridad empresarial

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.

Figura 2.19: Al intentar acceder a la memoria de un enclave 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:

Figura 2.20: La arquitectura de Always Encrypted con enclaves seguros

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

Enmascaramiento de datos dinámicos

SQL Server 2019 proporcionaenmascaramiento de datos dinámicos (DDM ), que limita la


exposición de datos confidenciales ocultándolos a usuarios sin privilegios. En realidad, esto no es
una forma de cifrado en el disco, pero aun así es útil en ciertos escenarios, como si desea ocultar
secciones de un número de tarjeta de crédito al personal de soporte. Tradicionalmente, esta lógica
se habría implementado en la capa de aplicación; sin embargo, este no es el caso ahora porque se
controla dentro de SQL Server.

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:

CREAR TABLA dbo.Usuarios

(ID de usuario INT IDENTIDAD CLAVE PRIMARIA,

Nombre VARCHAR(150) ENMASCARADO CON (FUNCIÓN = 'parcial(1,"XXXXX",0)') NULL,

Apellido VARCHAR(150) NO NULO,


Enmascaramiento de datos dinámicos |sesenta y cinco

Teléfono VARCHAR(20) ENMASCARADO CON (FUNCTION = 'default()') NULL, Correo

electrónico VARCHAR(150) ENMASCARADO CON (FUNCTION = 'email()') NULL);

IR

INSERTAR dbo.Usuarios

(Nombre, Apellido, Teléfono, Correo electrónico)

VALORES

('Arun', 'Sirpal', '777-232-232', ' Asirpal@company.com'), ('Tony',


'Mulsti', '111-778-555' ;, 'TMulsti@company.com'), ('Pedro', 'Lee&
#39;, '890-097-866', 'PLee@company.com') , ('Bob', 'Lee',
'787-097-866', 'Blee@company.com ');
IR

Figura 2.21: Tabla con reglas de enmascaramiento aplicadas

Para confirmar sus reglas de enmascaramiento, se debe ejecutar la siguiente consulta:

SELECCIONE OBJECT_NAME(object_id) Nombre de tabla,

nombre nombre de columna,

masking_function MaskFunction
DE sys.masked_columns
ORDENAR POR Nombre de tabla, Nombre de columna;

Figura 2.22: Tabla con consulta ejecutada


66|Seguridad empresarial

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.

EJECUTAR COMO USUARIO = 'soporte' SELECCIONE

NOMBRE_USUARIO(), NOMBRE_USUARIO();

SELECCIONAR * DE dbo.Users

Figura 2.23: Tabla con datos parcialmente enmascarados

Si decide permitir que el usuario vea los datos en su forma nativa, puede emitir elCONCEDER DESENMASCARAR
comando como se muestra aquí:

CONCEDER DESENMASCARAR AL apoyo;

IR

EJECUTAR COMO USUARIO = 'soporte'

SELECCIONE NOMBRE_USUARIO(),

NOMBRE_USUARIO(); SELECCIONAR * DE dbo.Users

Figura 2.24: Tabla con datos desenmascarados


Seguridad a nivel de fila |67

Emitir elREVOCARcomando para eliminar esta capacidad:


REVOCAR DESENMASCARAR PARA apoyar;

EJECUTAR COMO USUARIO = 'soporte' SELECCIONE

NOMBRE_USUARIO(), NOMBRE_USUARIO();

SELECCIONAR * DE dbo.Users

Figura 2.25: Tabla con desenmascaramiento revocado

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

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:

CREAR FUNCIÓN rls.fn_securitypredicate (@GroupAccessLevel AS sysname)


TABLA DE DEVOLUCIONES

CON ENLACE DE ESQUEMAS

COMO
VOLVER SELECCIONAR 1 COMO fn_securitypredicate_result

DONDE @GroupAccessLevel = NOMBRE_USUARIO() O NOMBRE_USUARIO() = 'GlobalManager'; IR

CREAR POLÍTICA DE SEGURIDAD UserFilter

AÑADIR PREDICADO DE FILTRO RLS.fn_securitypredicate(GroupAccessLevel)


EN rls.All_Patient
CON (ESTADO = ENCENDIDO);

IR

CONCEDER SELECCIONAR EN RLS.fn_securitypredicate A


GlobalManager; GRANT SELECT EN RLS.fn_securitypredicate A General

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

ORDEN POR ID de área

REVERTIR;
Seguridad a nivel de fila |69

La siguiente captura de pantalla confirma los datos que elGeneralEl usuario sólo puede ver:

Figura 2.26: Una tabla con acceso configurado en GlobalManager

La ejecución del siguiente código cambia el contexto de ejecución alGeneralusuario:


EJECUTAR COMO USUARIO = 'General';

SELECCIONAR * DE rls.All_Patient

ORDEN POR ID de área

REVERTIR;

Figura 2.27: La misma tabla con acceso configurado en General


70|Seguridad empresarial

Si verifica las propiedades del escaneo de índice agrupado, verá que se evalúa el
predicado:

Figura 2.28: Selección de propiedades del escaneo de índice agrupado

Figura 2.29: El cuadro de diálogo de evaluación de predicados

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

Figura 2.30: Resultado de una consulta security_policies


Auditoría |71

SELECCIONAR * DESDE sys.security_predicates

Figura 2.31: Resultado de una consulta security_predicates

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

CREAR AUDITORÍA DEL SERVIDOR [MainAudit] PARA

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

CREAR ESPECIFICACIÓN DE AUDITORÍA DE BASE DE DATOS [DeleteAuditHR]

PARA AUDITORÍA DEL SERVIDOR [MainAudit]

AÑADIR (ELIMINAR EN OBJETO::[HumanResources].[EmployeePayHistory] POR [dbo])

IR
DECLARAR @files VARCHAR(200) = 'D:\AUDIT\*.sqlaudit'; SELECCIONAR * DESDE

sys.fn_get_audit_file (@files, predeterminado, predeterminado)

Figura 2.32: El cuadro de diálogo de declaración de resultados

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.

Suponiendo que haya configurado elConsola de administración de Microsoft (MMC )


complemento, luego deberá usarlo para instalar el certificado en el servidor. Luego, SQL Server
puede utilizarlo para cifrar conexiones.

Configurar el complemento MMC

Para abrir el complemento de certificados MMC, siga estos pasos:

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.

3. Haga clicAgregary luego haga clic enCertificados. Hacer clicAgregarde nuevo.

4. Se le solicitará que abra el complemento para la cuenta de usuario actual, la cuenta de


servicio o la cuenta de computadora. SeleccionarCuenta de computadora.

5. SeleccioneComputadora localy luego haga clic enFinalizar.

6. Haga clicCercaen elAgregar complemento independientecaja de diálogo.

7. Haga clicDE ACUERDOen elAgregar o quitar complementocaja de diálogo. Sus certificados


instalados se encuentran en elCertificadoscarpeta en elPersonalenvase.

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

Habilitación a través del Administrador de configuración de SQL Server

Para que SQL Server utilice el certificado, deberá seleccionarlo en el Administrador de


configuración de SQL Server y finalmente configurarlo.Forzar cifradoaSí:

Figura 2.33: Cuadro de diálogo Protocolos para propiedades de RED

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.

Base de datos SQL de Azure

La seguridad está absolutamente a la vanguardia de la estrategia de Microsoft, y esto no es diferente


cuando se opera con sus servicios en la nube. Si desea ejecutar cargas de trabajo de bases de datos en
Microsoft Azure, puede estar seguro de que Azure SQL Database (la oferta PaaS) tiene todas las
características mencionadas en este capítulo hasta ahora, y más. Durante el resto de este capítulo, se
analizarán las características de seguridad específicas de Azure SQL Database.
Base de datos SQL de Azure |75

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.

Una cadena de conexión típica debería verse así:


Servidor=tcp:yourserver.database.windows.net,1433;Catálogo inicial=su base de datos;
Información de seguridad persistente=False;ID de usuario={su_nombre de
usuario};Contraseña={su_contraseña};MultipleActiveResultSets=False;Encrypt=True;

TrustServerCertificate=False;Tiempo de espera de conexión=30;

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.

Autenticación de Azure Active Directory (AD)

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

La arquitectura de confianza se muestra enFigura 2.47y la configuración es simple:

Figura 2.34: La arquitectura de confianza

Los pasos de configuración completos se pueden encontrar enhttps://docs.microsoft.com/en-us/azure/


sql-database/sql-database-aad-authentication . Una vez completada la configuración, podrá emitir el
siguiente código para crear un usuario de base de datos basado en Azure AD una vez que se haya
conectado a la red "lógica". SQL Server como usuario administrador de Azure AD:

CREAR USUARIO [Anita.Holly@Adventureworks.com] DESDE

UN PROVEEDOR EXTERNO;

CONCEDER CONEXIÓN A [Anita.Holly@Adventureworks.com]

EXEC sp_addrolemember 'db_datareader', 'Anita.Holly@Adventureworks.com';


Base de datos SQL de Azure |77

Seguridad de datos avanzada

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:

Figura 2.35: Panel de control de la suite ADS

Para habilitar esto, deberá navegar hasta elSeguridadsección de la base de datos a través del
portal de Azure:

Figura 2.36: Configuración de una alerta de seguridad en Azure Portal


78|Seguridad empresarial

Una vez que haya seleccionado elSeguridad de datos avanzadasección, se le solicitará el


costo asociado con la función:

Figura 2.37: Diálogo de solicitud de costos

Finalmente, tendrá la opción de habilitar la configuración como se muestra aquí:

Figura 2.38: Cuadro de diálogo Seguridad de datos avanzada

Detección avanzada de amenazas

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:

Figura 2.39: Alerta de vulnerabilidad en tiempo real

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.

Si desea probar alguna de las técnicas que se muestran en este libro,


empezar con unPrueba gratuita de 180 días de SQL Server 2019
Alta disponibilidad y
3
Recuperación de desastres

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.

Descripción general de la característica 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.

Copia de seguridad y restaurar

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

Funciones siempre activas

Always On es un término general que cubre dos características, no solo una:Grupos de


disponibilidad(AG) yInstancias de clúster de conmutación por error(FCI). Esta sección describirá
las dos características. Al final del capítulo se incluirán enlaces a documentación más detallada
sobre cómo planificar y configurar AG y FCI.

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.

La sincronización de datos se puede realizar de forma sincrónica o asincrónica. La única


diferencia entre la sincronización asíncrona y síncrona es que la réplica principal espera una
confirmación de una réplica secundaria de que la transacción se ha reforzado en su registro de
transacciones. Para obtener más información sobre el proceso de sincronización, consulte
https://docs.microsoft.com/en-us/sql/database-engine/availabilitygroups/windows/availability-
modes-always-on-availability-groups?view=sqlserver-2017 .

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

Hay tres variantes principales de AG, que se analizarán en esta sección:

1. AG tradicionales

2. AG distribuidos

3. AG de escala de lectura

Grupos de disponibilidad tradicionales

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.

Figura 3.1: Grupo de disponibilidad siempre activo

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.

Figura 3.2: Clúster multidominio con un AG configurado encima

La documentación completa sobre cómo implementar AG con Windows Server se puede


encontrar en https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/
windows/overview-of-always-on-availability-groups-sql-server?view=sql-server-2017 . Para
Linux, se puede encontrar enhttps://docs.microsoft.com/en-us/sql/linux/sql-serverlinux-
availability-group-ha?view=sql-server-2017 .
Descripción general de las funciones de disponibilidad de SQL Server |87

Grupos de disponibilidad distribuidos

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:

Figura 3.3: AG distribuido que abarca dos clústeres diferentes


88|Alta disponibilidad y recuperación ante desastres

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.

Grupos de disponibilidad de escala de lectura

Un AG de escala de lectura es una variante específica de la edición Enterprise. El propósito de un AG de escala de


lectura es proporcionar hasta nueve copias de datos sincronizados casi en tiempo real si los necesita para fines
de lectura o generación de informes. Este tipo de AG es diferente a configurar el enrutamiento de solo lectura en
un AG normal o usar un AG distribuido, los cuales se pueden usar para permitir que otras réplicas accedan a
datos legibles.

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.

Figura 3.6: Ejemplo de FCI

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.

Figura 3.7: Envío de registros


92|Alta disponibilidad y recuperación ante desastres

¿Qué pasa con la duplicación y replicación de bases de datos?

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.

Mejoras de disponibilidad en SQL Server 2019


Esta sección cubre las nuevas características y mejoras relacionadas con la disponibilidad en SQL
Server 2019.

Recuperación acelerada de bases de datos

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.

Réplica de solo configuración

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 (

AUTENTICACIÓN = CERTIFICADO JY_Cert,


ROL = TESTIGO);
IR

Figura 3.8muestra un AG basado en Linux que tiene dos réplicas y una réplica de solo
configuración.

Figura 3.8: Ejemplo de un AG en Linux con una réplica de solo configuración


94|Alta disponibilidad y recuperación ante desastres

Gestión de certificados en el Administrador de configuración de SQL Server

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:

Figura 3.9: Diálogo de gestión de certificados para 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

Reconstrucción en línea del índice de almacén de columnas agrupado

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:

CREAR ÍNDICE DE COLUMNSTORE AGRUPADO MyCCI

EN Mi Mesa
CON (EN LÍNEA = ENCENDIDO);

Este ejemplo muestra cómo reconstruir una CCI en línea:

ALTERAR EL ÍNDICE DE COLUMNSTORE AGRUPADO MyCCI

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:

ALTERAR LA CONFIGURACIÓN DEL ALCANCE DE LA BASE DE DATOS

ESTABLECER ELEVATE_ONLINE = WHEN_SUPPORTED; ALTERAR LA

CONFIGURACIÓN DEL ALCANCE DE LA BASE DE DATOS

ESTABLECER ELEVATE_RESUMABLE = WHEN_SUPPORTED;

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:

Figura 3.10: FCI con el recurso en lenguaje de máquina

Mayor número de réplicas síncronas en la edición Enterprise


En SQL Server 2019 Enterprise Edition, Microsoft aumentó el número total de réplicas sincrónicas que se
pueden configurar a cinco (una principal y cuatro réplicas secundarias sincrónicas), en comparación con
tres en SQL Server 2016 y 2017 (una principal y hasta dos réplicas secundarias). ) y dos en SQL Server 2012
y 2014 (solo uno primario y otro secundario). Dado que se requiere el movimiento de datos sincrónico
para la conmutación por error automática, esto también significa que se pueden configurar hasta cinco
réplicas para la conmutación por error automática. La cantidad de réplicas en SQL Server 2019 para AG
básicos sigue siendo la misma con un total de dos réplicas (una principal y otra secundaria).
Mejoras de disponibilidad en SQL Server 2019 |97

Más réplicas sincrónicas permiten diferentes escenarios. Por ejemplo, puedes tener:

• La réplica principal de lectura/escritura.

• Una réplica secundaria dedicada a la disponibilidad.

• 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.

Compilaciones o reconstrucciones en línea para índices de almacén de columnas agrupados

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:

CREAR ÍNDICE DE COLUMNSTORE AGRUPADO MyCI

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:

ALTERAR ÍNDICE MyCI

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

Configuración de enrutamiento de solo lectura en SQL Server Management Studio

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.

Figura 3.11: Configuración de enrutamiento de solo lectura en SSMS


Mejoras de disponibilidad en SQL Server 2019 |99

Replicación para configuraciones basadas en Linux

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

• Replicación de igual a igual

• Replicación con puertos no predeterminados

• Replicación con autenticación de Servicios de dominio de Active Directory

• Actualizaciones inmediatas para replicación transaccional

Al momento de escribir este capítulo, no se admite lo siguiente:

• Suscriptores de actualización inmediata

• 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:

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true


sudo systemctl reiniciar mssql-server
Si el distribuidor se ejecutará en una instancia de SQL Server basada en Linux, cree unacarpeta para las
instantáneas utilizadas por el Agente SQL Server. Elmssqlel usuario debe tener acceso; de lo contrario, la
replicación no funcionará. Aquí se muestra un ejemplo:

sudo mkdir /var/opt/mssql/data/Snapshots/ sudo


chown mssql /var/opt/mssql/data/Snapshots/ sudo
chgrp mssql /var/opt/mssql/data/Snapshots/
100|Alta disponibilidad y recuperación ante desastres

Redirección de conexión de lectura/escritura de secundaria a primaria

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:

• READ_WRITE_ROUTING_URLdebe configurarse, que actualmente no está expuesto en SSMS al


momento de escribir este capítulo.

• Intención de aplicacióndebe serLeer escribir,noSolo lectura.

• PERMITIR CONEXIONESdebe configurarse enTODOpara un papel secundario.

El siguiente es un ejemplo de Transact-SQL para cambiar un AG existente para admitir esta nueva
funcionalidad:

ALTERAR GRUPO DE DISPONIBILIDAD [2019AG]

MODIFICAR RÉPLICA EN N'AGN1'

CON (PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE)); IR

ALTERAR GRUPO DE DISPONIBILIDAD [2019AG]

MODIFICAR RÉPLICA EN N'AGN1'

CON (PRIMARY_ROLE (READ_WRITE_ROUTING_URL = N'TCP://AGN1.CONTOSO.COM')); IR

ALTERAR GRUPO DE DISPONIBILIDAD [2019AG]

MODIFICAR RÉPLICA EN N'AGN1'

CON (SECONDARY_ROLE (ALLOW_CONNECTIONS = TODOS)); IR

ALTERAR GRUPO DE DISPONIBILIDAD [2019AG]

MODIFICAR RÉPLICA EN N'AGN2'

CON (PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE)); IR

ALTERAR GRUPO DE DISPONIBILIDAD [2019AG]

MODIFICAR RÉPLICA EN N'AGN2'


Mejoras de disponibilidad en SQL Server 2019 |101

CON (PRIMARY_ROLE (READ_WRITE_ROUTING_URL = N'TCP://AGN2.CONTOSO.COM')); IR

ALTERAR GRUPO DE DISPONIBILIDAD [2019AG]

MODIFICAR RÉPLICA EN N'AGN2'

CON (SECONDARY_ROLE (ALLOW_CONNECTIONS = TODOS)); IR

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:

Figura 3.12: Configuración de ApplicationIntent en las propiedades de conexión SSMS


102|Alta disponibilidad y recuperación ante desastres

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:

Figura 3.13: Mostrando la nueva capacidad de redireccionamiento de un AG

Mejoras en la disponibilidad de Windows Server 2019


Windows Server 2019 también tiene algunas características nuevas o cambios en las existentes que mejoran la
disponibilidad de las implementaciones de SQL Server basadas en Windows Server 2019, incluso si no son SQL Server
2019. Algunas características nuevas, como los conjuntos de clústeres, se introdujeron en Windows Server 2019.
Actualmente no se aplica a ninguna versión de SQL Server, pero es posible que lo haga en el futuro.

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 dominios para un clúster de conmutación por error de Windows Server

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.

Compatibilidad con volúmenes compartidos en clúster para Microsoft Distributed Transaction

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:

Figura 3.14: Salida de PowerShell que muestra el DTC creado en un CSV

Testigo de intercambio de archivos sin dominio

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:

Figura 3.15: Creación de testigos de archivos compartidos en PowerShell

Seguridad mejorada del clúster de conmutación por error de Windows Server

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.

Réplica de almacenamiento en la edición estándar

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

Storage Replica maneja la replicación de volúmenes de disco configurados para su uso en un


WSFC. La replicación basada en disco puede ser síncrona o asíncrona. Windows Server 2016
fue la primera versión de Windows Server que incluyó Storage Replica, pero solo estaba en la
edición Datacenter. Windows Server 2019 habilita Storage Replica en la edición Standard. Hay
dos limitaciones principales de la función en la edición Estándar:

• Sólo replica un único volumen.

• El tamaño del volumen puede ser de un máximo de 2 TB.

Esto significa que una FCI solo puede tener un disco configurado con ella.

Figuras 3.16y3.17muestra el resultado de un script de PowerShell que muestra la versión y edición de


Windows Server junto con todas las características que tienen la palabra "almacenamiento" en ellos:

Figura 3.16: Funciones de Windows Server 2016 con almacenamiento en el nombre

Figura 3.17: Funciones de Windows Server 2019 con almacenamiento en el nombre

Nota
Para usar la réplica de almacenamiento para una FCI, primero cree todo el almacenamiento y la replicación y luego

seleccione los discos durante la creación de la FCI.


106|Alta disponibilidad y recuperación ante desastres

Configuración de dos nodos de Storage Spaces Direct

En Windows Servidor 2016,Espacios de almacenamiento directo (S2D ) funcionó en una configuración de


dos nodos pero fue óptimo con tres o más. En Windows Server 2019, la configuración de dos nodos
funciona bien y es sólida. Los FCI se pueden configurar en S2D. S2D ahora tiene dos opciones de resiliencia
anidadas diferentes en Windows Server 2019 para sobrevivir a fallas de unidades y nodos:

• Espejo bidireccional anidado

• Paridad anidada acelerada por espejo

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:

Figura 3.18: Espejo bidireccional anidado S2D


Mejoras en la disponibilidad de Windows Server 2019 |107

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:

Figura 3.19: Paridad acelerada por espejo anidado

La compensación de estas arquitecturas es la capacidad. El espejo bidireccional anidado mantiene cuatro


copias, por lo que si el tamaño de sus datos es de 500 GB, necesitará 2 TB de almacenamiento físico. Eso
significa que sólo el 25% de su espacio es utilizable. La paridad anidada acelerada por espejo es mejor, pero
depende de la cantidad de unidades de capacidad en cada servidor, así como de la combinación de espejo y
paridad para el volumen. Normalmente, verá entre un 35 y un 40 % de espacio utilizable.

Para más información, verhttps://docs.microsoft.com/en-us/windows-server/


storage/storage-spaces/nested-resiliency .

Mejoras en el clúster de conmutación por error de Windows Server en Azure

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

Esto simplifica la configuración de un WSFC basado en IaaS. El nombre de la red distribuida no


funciona con los recursos de SQL Server, por lo que aún se requiere un ILB para el escucha de un AG
o las direcciones IP de la FCI. Un ejemplo se muestra enFigura 3.20:

Figura 3.20: Nombre de red distribuida para un WSFC

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:

• 1136: el mantenimiento del nodo es inminente y está a punto de ocurrir.

• 1139: se ha detectado mantenimiento del nodo.

• 1140: se ha reprogramado el mantenimiento del nodo.


Mejoras en la disponibilidad de Windows Server 2019 |109

Hay una nueva propiedad en el WSFC llamadaDetectar eventos administrados. Hay cinco valores que esto
puede tener:

• 0: no registra eventos programados de Azure (valor predeterminado para el entorno local).

• 1: registrar eventos programados de Azure (valor predeterminado para Azure).

• 2 – Evite la colocación (no mueva roles a este nodo).

• 3: Pausar y drenar roles cuando se detecta un evento programado.

• 4: pausar, vaciar y restaurar funciones cuando se detecta un evento programado.

Otra nueva propiedad de WSFC esUmbral de detección de eventos administrados. El valor


predeterminado es 60 segundos y es la cantidad de tiempo antes de que ocurra el evento para sacar
cosas del nodo WSFC.
Funciones híbridas: SQL
4
Servidor y Microsoft
Azur

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.

Copia de seguridad en URL

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.

• Almacenamiento georedundante (GRS) está diseñado para proporcionar al menos


99,99999999999999% de durabilidad durante un año determinado al replicar sus datos en una
región secundaria que está a cientos de millas de su región principal, es decir, su región
emparejada.

• 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:

• Un contenedor privado dentro de una cuenta de almacenamiento

• Firma de acceso compartido (SAS)


• Una credencial de SQL Server que tiene un secreto asignado al SAS
La cuenta de almacenamiento |113

La cuenta de almacenamiento

Normalmente, configuraría su cuenta de almacenamiento como se muestra enFigura 4.1:

Figura 4.1: Configuración de 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

1. Conéctese a la cuenta de almacenamiento a través de Azure Storage Explorer (https://azul.


microsoft.com/en-gb/features/storage-explorer/ ) y obtener el SAS para el copias de seguridad
sqlcontenedor, que está configurado como privado, como se muestra enFigura 4.2:

Figura 4.2: Contenedores de blobs

2. Ir aComportamientoy seleccioneObtenga firma de acceso compartido, como se muestra enFigura 4.3:

Figura 4.3: El cuadro de diálogo de acciones


La cuenta de almacenamiento |115

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:

Figura 4.4: Configuración de la firma de acceso compartido

Analicemos un SAS de ejemplo:

Figura 4.5: SAS de ejemplo

• 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).

• sves la versión del servicio de almacenamiento utilizada.

• señores el recurso utilizado para este ejemplo, que es un contenedor (C).


• firmares la firma real creada utilizando el algoritmo SHA256.
116|Funciones híbridas: SQL Server y Microsoft Azure

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):

CREAR CREDENCIAL [https://aksproddiag844.blob.core.windows.net/sqlbackups] CON


IDENTIDAD = 'FIRMA DE ACCESO COMPARTIDO',
SECRETO = 'st=2020-04-05T07%ani&se=2019-04-14T07%3A5aa6ryaesSQL&sv=2018-03-
28&sr=c&sig=1LSEQkaJSCZ%anOayausca!;
IR

Una vez creada la credencial, permitirá que el código de respaldo se ejecute


correctamente:
BASE DE DATOS DE RESPALDO

[CodeDB] A URL = N'https://aksproddiag844.blob.core.windows.net/sqlbackups/


CodeDB_Apr_5_2019_9_19AM.bak
' CON COMPRESIÓN, SUMA DE VERIFICACIÓN, FORMATO, ESTADÍSTICAS = 10;

10 por ciento procesado.

20 por ciento procesado.


30 por ciento procesado.
40 por ciento procesado.
50 por ciento procesado.
60 por ciento procesado.
70 por ciento procesado.
80 por ciento procesado.
90 por ciento procesado.
100 por ciento procesado.
Se procesaron 191264 páginas para la base de datos 'CodeDB', archivo 'CodeDB_Data' en el archivo 1.

Procesó 1 página para la base de datos 'CodeDB', archivo 'CodeDB_Log' en el expediente 1.

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:

Figura 4.6: 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]

RESTAURAR BASE DE DATOS [CodeDB2] DESDE

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

Archivos de datos de SQL Server en 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.

Figura 4.7: Guardar base de datos entre plataformas

La separación de la capa informática (sqlservr.exeestar en las instalaciones) y la capa de almacenamiento (Azure


Storage) hace que los beneficios de la recuperación parezcan más obvios. Por ejemplo, si pierde la instancia de SQL
Server local, puede configurar una nueva sin ningún movimiento manual de datos. Sencillamente, todo lo que se
necesita es volver a adjuntar los archivos de datos. Una vez que la configuración sea exitosa, podrá aprovechar las
copias de seguridad de instantáneas de archivos para archivos de bases de datos en Azure (consulte la siguiente
sección). Esta característica proporciona copias de seguridad casi instantáneas y restauraciones rápidas, lo que la
convierte en una solución atractiva para bases de datos más grandes.
Archivos de datos de SQL Server en Azure |119

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:

Figura 4.8: Explorador de almacenamiento


120|Funciones híbridas: SQL Server y Microsoft Azure

4. Haga clicComportamientopara construir el secreto:

Figura 4.9: Cuadro de diálogo Firma de acceso compartido

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:

CREAR CREDENCIAL [https://aksproddiag844.blob.core.windows.net/


sqldatafiles]
CON IDENTIDAD='FIRMA DE ACCESO COMPARTIDO',
SECRETO = 'st=2020-04-05T09%d&se=2019-04-arj&!un=rwdl&sue=2018-03-28ani&Asi
g=Ra0yanab1VJ2y5mTAnotherA000Rg3TeamrZfyhXs%Ar7unDddaa4ryaxxA'
Archivos de datos de SQL Server en Azure |121

6. Cree la base de datos de SQL Server vinculada a Azure Storage:

CREAR BASE DE DATOS IOT_DB


EN
(NOMBRE = IOT_DB,
NOMBRE DE ARCHIVO = 'https://aksproddiag844.blob.core.windows.net/sqldatafiles/
IOT_DB.mdf' )
ACCEDER

(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:

Figura 4.10: Una lista de archivos de bases de datos

8. Utilice una consulta SSMS para verificar que los archivos estén vinculados a Azure Storage:

SELECCIONAR * DE sys.sysfiles

Figura 4.11: Archivos del sistema

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:

Figura 4.12: Romper el contrato de arrendamiento

En este caso, el contrato de arrendamiento se cancelaría según el registro de transacciones.


Alternativamente, puedes esperar a que caduque para que esté disponible.

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

Copias de seguridad de instantáneas de archivos

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:

Figura 4.13: Copias de seguridad de instantáneas

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

BASE DE DATOS DE RESPALDO [IOT_DB]

A URL = 'https://aksproddiag844.blob.core.windows.net/sqldatafiles/IOTDB_
FULL_SNAPSHOT.bak'
CON FILE_SNAPSHOT;
IR

DECLARAR @Log_Filename COMO VARCHAR (300);

SET @Log_Filename = 'https://aksproddiag844.blob.core.windows.net/


sqldatafiles/IOTDB_Log_'+
REEMPLAZAR (REPLACE (REPLACE (CONVERT (VARCHAR (40), GETDATE (),
120), '-','_'),':', '_'),' ', '_') + '.trn';
REGISTRO DE COPIA DE SEGURIDAD IOT_DB

A URL = @Log_Filename CON FILE_SNAPSHOT; IR

Figura 4.14: Nueva entrada agregada

Para ver los archivos de instantáneas, use esto:

seleccione * de sys.fn_db_backup_file_snapshots (nulo); IR

Figura 4.15: Listado de archivos de instantáneas


Ampliación de los grupos de disponibilidad locales a Azure |125

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ó

anteriormente) y el archivo de registro en sí:

Figura 4.16: Copia de seguridad en Azure con instantáneas de archivos

Ampliación de los grupos de disponibilidad locales a Azure


Con SQL Server 2019, puede ampliar su AG local mediante la creación de una réplica secundaria en un
centro de datos de Microsoft Azure, produciendo así una solución híbrida rentable de recuperación ante
desastres. Las réplicas que elija crear pueden estar dentro de una región geográfica específica o en varias
regiones que utilizan varias redes virtuales. Este enfoque no solo es un plan válido de recuperación ante
desastres, sino que también puede aprovechar las réplicas para descargar sus tareas de respaldo y
requisitos de generación de informes. De cualquier manera, puede estar seguro de que su centro de
datos secundario es escalable, confiable y extremadamente confiable.

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 .

Replicación a la base de datos SQL de Azure

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í:

Figura 4.17: Migración a Azure SQL Database a través de DMA

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 %:

Figura 4.18: Replicación transaccional en Azure


Replicación transaccional |129

Requisitos previos

• El editor y distribuidor deben ejecutar las siguientes versiones de SQL Server:

Servidor SQL 2019 (15.x)

Servidor SQL 2017 (14.x)

Servidor SQL 2016 (13.x)

Servidor SQL 2014 (12.x) SP1 CU3

Servidor SQL 2014 (12.x) RTM CU10

SQL Server 2012 (11.x) SP2 CU8 o SP3

• Instale la última versión de SSMS (18.xx).

• Acceso a una suscripción de Azure.

• 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

1. En el nodo de replicación dentro de SSMS, haga clic enNueva Publicación:

Figura 4.19: Configuración de una nueva publicación dentro de SSMS


130|Funciones híbridas: SQL Server y Microsoft Azure

2. Luego se le presentará el asistente:

Figura 4.20: El cuadro de diálogo Nueva publicación


Replicación transaccional |131

3. Configure los ajustes de distribución para su entorno:

Figura 4.21: Cuadro de diálogo de configuración de distribución


132|Funciones híbridas: SQL Server y Microsoft Azure

4. Indique una ruta UNC donde se pueda acceder a las instantáneas:

Figura 4.22: Cuadro de diálogo Instantánea


Replicación transaccional |133

5. La base de datos SQL Server local se convertirá en el editor:

Figura 4.23: Elección de la publicación en el Asistente para nuevas publicaciones


134|Funciones híbridas: SQL Server y Microsoft Azure

6. Solo se admite la replicación transaccional, por lo que se seleccionó para esta demostración:

Figura 4.24: Cuadro de diálogo Tipo de publicación


Replicación transaccional |135

7. Agregue todas sus tablas o simplemente seleccione las tablas que necesita:

Figura 4.25: Elegir tablas en el Asistente para nueva publicación

8. Configure elAgente de instantáneassegún sea necesario:

Figura 4.26: Configuración del Agente de instantáneas


136|Funciones híbridas: SQL Server y Microsoft Azure

9. Desde una perspectiva de seguridad, para entornos de producción, se deben utilizar


cuentas dedicadas:

Figura 4.27: Configuración de la seguridad del agente

10. Complete la configuración de la publicación:

Figura 4.28: La publicación ha sido creada


Replicación transaccional |137

11. A continuación, vaya a la configuración de la suscripción desde el nodo de replicación:

Figura 4.29: Menú de configuración de suscripción desde el nodo de replicación

12. Para completar el proceso de publicación, deberá seleccionar el editor correcto. Para
este ejemplo, se llama al editor a la nube:

Figura 4.30: Elección de la publicación que se vinculará al editor


138|Funciones híbridas: SQL Server y Microsoft Azure

13. Se requiere la conexión con el suscriptor, este es Azure SQL Database. Nuevamente,
se deben utilizar cuentas dedicadas:

Figura 4.31: Conexión al servidor

14. Una vez conectado, elija la base de datos correcta para convertirse en suscriptor:

Figura 4.32: Elección de la base de datos en el Asistente para nueva suscripción


Replicación transaccional |139

15. A continuación, elija cuándo inicializar la suscripción.Inmediatamenteestá seleccionado en la


siguiente captura de pantalla:

Figura 4.33: Configurando la inicialización en el asistente de suscripción

16. La suscripción ha sido creada:

Figura 4.34: Las suscripciones se han creado exitosamente


140|Funciones híbridas: SQL Server y Microsoft Azure

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:

Figura 4.35: Las acciones mostradas por el monitor de replicación

El monitor de replicación mostrará métricas como rendimiento, latencia y última


sincronización:

Figura 4.36: El cuadro de diálogo del monitor de replicación


Replicación transaccional |141

17. Al conectarse a Azure SQL Database, verá que el esquema y los datos ahora
existen:

Figura 4.37: El esquema recién creado

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:

Figura 4.38: Uso de tokens para medir la latencia total


Servidor SQL 2019 en
5
linux

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.

Soporte de plataforma 2019

Con SQL Server 2019, se ofrece soporte para una lista de distribuciones de Linux sólidas y
conocidas:

• Red Hat Enterprise Linux (versiones 7.3-7.6)

• Servidor SUSE Enterprise Linux v12 SP2

• Soporte a largo plazo (LTS) de Ubuntu 16.04

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.

¿Por qué mover bases de datos a SQL Server en Linux?


Nuestro mundo se está haciendo más pequeño y, al mismo tiempo, la tecnología se expande para hacer más por más
personas. Al igual que con otras plataformas de datos, SQL Server ha continuado su camino para liderar en Linux como
lo ha hecho en Windows durante décadas.

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:

1. Descargue el paquete al repositorio.

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 encontrar la instalación correcta en el repositorio, puede utilizar unlistacomando y grep


(buscar) para la cadena que estás buscando, que en este caso es mssql:
lista Yum instalada

La distribución de contenedores de productos de Microsoft se recupera mejor desde el Registro de


contenedores oficial de Microsoft. Este repositorio cuenta con una variedad considerable de imágenes
más allá de Microsoft, incluyendo otros sistemas operativos y aplicaciones. ArizoEl comando se utiliza para
acceder al repositorio, y el-ohle dice altransferirutilidad qué archivo transferir desde el repositorio
certificado de Microsoft,mcr.microsoft/mssql/server:vNext-CTP2.0 .

Para transferir la instalación de SQL Server 2019 desde dentro de un servidor Red Hat, ejecute el
siguiente comando:

$ sudo curl -o <archivo del repositorio> <ubicación del repositorio>

O como ejemplo, de la siguiente manera:

sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft. com/


config/rhel/7/mssql-server-preview.repo

Ahora que la instalación se ha agregado al repositorio local, el siguiente paso es instalar


SQL Server usando unmmmdominio:
sudo yum install -y servidor-mssql

Ahora debemos configurar y configurar la contraseña del administrador:


configuración sudo /opt/mssql/bin/mssql-conf
148|Servidor SQL 2019 en Linux

Hay tres preguntas principales que se le harán durante la configuración:

Figura 5.2: Configuración de la instalación de SQL Server

EnFigura 5.2, elegí entrar2para la edición de desarrollador.

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:

estado systemctl servidor mssql

El resultado es el siguiente:

Figura 5.3: Estado del servicio SQL Server en Linux


¿Por qué mover bases de datos a SQL Server en Linux? |149

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:

ps -ef | grep sqlservr

Figura 5.4: comprobación de procesos en ejecución en Linux

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:

sudo firewall-cmd --zone=public --add-port=1433/tcp –permanent

Elcortafuegosdebe reiniciarse para que los cambios surtan efecto:


sudo firewall-cmd --recargar

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:

$ curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.


repos.d/msprod.repo
$ salir
Una vez que haya salido como superusuario, ejecute la instalación. Responda sí a cualquier pregunta
que confirme la instalación:

$ sudo yum eliminar mssql-tools unixODBC-utf16-devel $


sudo yum instalar mssql-tools unixODBC-devel
150|Servidor SQL 2019 en Linux

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:

$ sqlcmd -S locahost,1433 -U <nombre de usuario>

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.

Mejoras en SQL Server 2019


Este libro contiene capítulos que se centran en diferentes áreas de la versión SQL Server
2019, pero hay mejoras significativas en torno a la versión SQL Server 2019 para Linux que
merecen destacarse en sus propios capítulos. Vale la pena tomarse el tiempo para
comprender cómo estas mejoras afectan el rendimiento, las funciones y la interacción con
Linux. Una de las mejoras más importantes es la interacción entre SQL Server 2019 en
Linux y servicios como Azure Machine Learning y Azure Kubernetes Service.

Servicios de aprendizaje automático en 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.

Las distribuciones de Linux y los formatos de instalación compatibles incluyen:

• Servidor empresarial Redhat

• Ubuntu (apto)

• SUSE (zipper)

• Redhat, SUSE y CentOS (RPM)


Servicios de aprendizaje automático en Linux |151

Tras la instalación y configuración de SQL Server 2019 en Linux, se realizará una


instalación posterior delservicios mssql-mlEl paquete debe realizarse en el mismo
repositorio que el SQL Server existente. El proceso de instalación depende de la
distribución de Linux (mmmpara RedHat,apto-obtenerpara Ubuntu, etc.), pero hay pasos
que deben realizarse después para completarlo exitosamente:

1. Agregue el usuario de MSSQL Linux a la cuenta de configuración del servicio Machine


Learning.

2. Emita el comando para aceptar la licencia de usuario final.

3. Configure las configuraciones de red y puerto para Python.

4. Establezca las variables de entorno para R en el.bashRCarchivo

5. Actualice la configuración de SQL Server para habilitar los scripts externos.

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:

az ml –admin –endpoint <endpoint>

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:

az ml –ejecución de diagnóstico de administrador

La utilidad de línea de comandos usa comandos similares en Azure, utilizando eladministrador de ml


comando, y esto incluye elayudaopción para devolver argumentos y descripciones de cada uno:

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.

Lo más importante para el profesional de plataformas de datos es comprender que el aprendizaje


automático está disponible para científicos de datos principiantes y expertos que utilizan SQL Server
2019 y Azure Machine Learning sin un conocimiento amplio, lo que permite que todos obtengan los
beneficios del aprendizaje automático. Para leer más sobre este escenario, vaya a:https://
cloudblogs.microsoft.com/sqlserver/2019/04/16/automated-machine-learning-fromsql-server-with-
azure-machine-learning/ .

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

Figura 5.5: Diagrama de la arquitectura del clúster de Kubernetes


Kubernetes |153

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

para un escenario de recuperación rápida.

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

Trabajar con Docker y Linux


Para crear un contenedor Docker con una instalación de SQL Server 2019 incluida, necesitará una
instalación local de Docker o acceso al servidor Docker. Usando un ejemplo para Windows, abra el
símbolo del sistema (ejecutar comandos de Docker dentro de la línea de comandos de PowerShell
puede generar resultados inconsistentes).

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:

$ ventana acoplable ejecutar -e "ACCEPT_EULA=Y"

- e "MSSQL_SA_PASSWORD=<contraseña>"

- p <puerto:puerto>

- - nombre <nombre del contenedor>

-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

Acceda a su contenedor, inicie sesión y ejecútelo en Bash:

$ docker exec -it <nombre del contenedor> "golpe"

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

Cambiar captura de datos

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.

Las mismas plantillas disponibles enEstudio de administración de SQL Server (SSMS) en el


Explorador de plantillas funcionará para CDC en Linux y puede acelerar el proceso de
implementación de una solución CDC.

Grupo de búfer híbrido y PMEM


Eliminar la latencia es el objetivo de la optimización y la memoria persistente.PMEM , o memoria de clase de
almacenamiento, es una nueva herramienta que ayuda a evitar realizar una copia de los datos en el área de páginas
limpias del grupo de búfer y, en su lugar, almacena estas páginas en PMEM para que se pueda acceder a ellas
directamente en una nueva característica llamada Grupo de búfer híbrido. .

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

• Memoria de clase de almacenamiento (SCM)

• Memoria no volátil (NVM)


• Almacenamiento direccionable por bytes (BAJO)

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

Los archivos de base de datos que pueden aprovechar PMEM incluyen:

• Archivos de base de datos

• Registros de transacciones

• Archivos de puntos de control OLTP en memoria

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:

$ndctl crear-espacio de nombres -f -e espacio de nombres0.0 –mode=devdax –map=mem

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:

$ mkfs.xfs -f /dv1/pmem1 mount -o dv1,noatime /dv1/pmem1 /mnt/dv1


xfs_io -c "extsize 2m" /mnt/dv1
Una vez configurado, podemos asignar archivos para usar PMEM, pero debe reiniciar SQL
Server antes de que los cambios surtan efecto:
$ sudo systemctl detener el servidor mssql $

sudo systemctl iniciar el servidor mssql

Y una vez que haya reiniciado SQL Server, verifique el estado:


$ sudo systemctl estado servidor-mssql
Coordinador de transacciones distribuidas en Linux |157

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.

Inicie sesión en la base de datos usandosqlcmdy mueve los archivos:

sqlcmd -U <iniciar sesión> -S "<localhost,puerto>" ALTERAR BASE DE

DATOS nombre_base de datos ESTABLECER SIN CONEXIÓN; IR

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:

ALTER DATABASE nombre_base de datos SET ONLINE;

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:

ALTERAR LA CONFIGURACIÓN DEL SERVIDOR ESTABLECER MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;

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.

Coordinador de transacciones distribuidas en Linux


Con la introducción de la funcionalidad del asignador de puntos finales para SQL Server 2019 en Linux, la
adición deCoordinador de transacciones distribuidas de Microsoft (MSDTC) también se ha vuelto fácil.
MSDTC en un host Linux o VM necesitará el puerto 135 abierto para que se vincule el proceso del asignador de
puntos finales RPC (red.rpcport). Las mejores prácticas también dictan que definitivamente debe configurar el
puerto en el que escucha MSDTC (transacción distribuida. servidortcport); de lo contrario, se puede elegir un
puerto aleatorio al reiniciar, lo que crea una pérdida de servicio cuando no se ha preparado una excepción del
firewall para el cambio en los puertos que están abiertos al exterior.
158|Servidor SQL 2019 en Linux

Para configurar estáticamente el puerto para que escuche MSDTC, use el siguiente comando:

$ sudo /opt/mssql/bin/mssql-conf establece network.rpcport 13500

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:

$ sudo firewall-cmd –zone=public –add-port=135/tcp

Haga esto para cada puerto que deba estar abierto para MSDTC, luego vuelva a cargar para que los cambios entren en
vigor:

$ sudo firewall-cmd –recargar

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

Después de instalar estos valiosos procedimientos almacenados, podrá utilizar los


procedimientos XA en la base de datos de MSDTC. Para aquellos que desean MSDTC en todas
sus bases de datos, SQL Server 2019 ahora también lo ofrece en Linux.

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.

En cualquier entorno replicado de SQL Server, existen tres identificadores principales:

• 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:

• Transaccional: una replicación por transacción del editor al suscriptor.


• Instantánea: Se recopila y aplica al suscriptor un conjunto de transacciones replicadas y
actualizaciones en un intervalo regular.

• Unir: Los cambios se fusionan del entorno del editor al del suscriptor.

Un diseño de arquitectura de replicación sólido, incluida la replicación geográfica, puede ofrecer


recuperación ante desastres, entornos de informes secundarios y alta disponibilidad manual. Con esta
incorporación a SQL Server 2019 en Linux, ofrece más opciones para la empresa con respecto a en qué
sistema operativo ejecutar SQL Server.

herramientas de servidor SQL

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.

Estudio de datos de Azure

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.

Azure Data Studio también se mantiene al día con la integración de aplicaciones/desarrollo,


incluida la integración a través de Git/GitHub, y la salida de la consola se puede guardar en varios
formatos, incluidos CSV, texto y JSON.

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:

• Red Hat Enterprise Linux 7.4

• Red Hat Enterprise Linux 7.3

• SUSE Linux Enterprise Server v12 SP2

•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.

Dependiendo de la distribución de Linux, la instalación será ligeramente diferente. Todos


los siguientes comandos suponen que está iniciando sesión con el usuario que copiará el
archivo al host y que la instalación se realizará en el directorio de inicio del usuario. Para
Debian, un simple comando Bash realizará la instalación. Mientras está conectado a su
host o VM, abra una terminal después de descargar el archivo y realice lo siguiente,
según la instalación.

DEB para Debian:

discos compactos ~

sudo dpkg -i azuredatastudio-linux-<versión>.deb


YUM para Redhat o CentOS:
discos compactos ~

yum instalar ./azuredatastudio-linux-<versión>.rpm TAR


para Ubuntu, SUSE, etc..

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 ~

cp ~ /<directorio donde se descargó el archivo/azuredatastudio-linux-<version>.


tar.gz ~
tar -xvf ~/azuredatastudio-linux-<versión>.tar.gz
cat 'export PATH=$PATH:~/azuredatastudio-linux-x64"' >> ~/.bashrc

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:

Figura 5.7: Información del host de Azure en Azure Portal

• Tipo de autenticación: Inicio de sesión SQL o autenticación de Windows o Azure Active


Directory

• Nombre de usuario: Se explica por sí mismo y depende de la elección en Tipo de autenticación

• Contraseña: Contraseña del usuario


• Base de datos: Base de datos a la que conectarse una vez que haya iniciado sesión en el servidor

• grupo de servidores: Opcional (establecido como predeterminado en la conexión)

• Nombre: Opcional

Figura 5.8: Configuración de una conexión en Azure Data Studio


162|Servidor SQL 2019 en Linux

Si no ha iniciado sesión en el recurso de Azure anteriormente, un mensaje le indicará cómo


configurar una regla de firewall para acceder al recurso; de lo contrario, estará conectado a la base
de datos y estará listo para administrar los recursos.

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

Desde la consola de Ubuntu, puede iniciar un nuevo cuaderno escribiendoControl+norte. La


configuración JSON se ha minimizado al máximo para ponérselo más fácil a quienes están
más acostumbrados a utilizar SQL, aportando el mayor valor posible a la hora de utilizar SQL
para completar lo necesario.

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

Herramientas de consulta de línea de comandos para SQL en Linux

Hay dos herramientas principales de consulta de línea de comandos disponibles para


SQL Server en Linux, una antigua y otra nueva:

• 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:

sudo apt-obtener actualización

sudo apt-get install mssql-tools


Hay actualizaciones disponibles periódicamente para la utilidad SQLCMD. Las incorporaciones más recientes
están disponibles para las siguientes distribuciones de Linux y ahora incluyen la autenticación multifactor de
Azure Active Directory:

• Red Hat Linux, Empresa

•Ubuntu

• Servidor empresarial SUSE Linux

• 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:

sqlcmd -U <nombre de usuario> -S "<nombrevm>. <zone>.cloudapp.azure.com" -P "<contraseña>"


- d "<base de datos>" -Q "<sqlstatement>; "

sqlcmd -U <nombre de usuario> -S "<nombrevm>. <zone>.cloudapp.azure.com" -P "<contraseña>"


- d "<base de datos>" -i "<nombre de archivo>.sql"
164|Servidor SQL 2019 en Linux

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

• Red Hat Enterprise Linux 7

• SUSE Empresa Linux 12

• Fedora 25 y 26

La instalación es un único comando simple:


$pip instalar mssql-cli

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:

Figura 5.10: Llenado de IntelliSense para columnas en MSSQL-CLI


Enfoque mejorado en secuencias de comandos |165

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.

Enfoque mejorado en secuencias de comandos

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.

El DBA de SQL en el mundo Linux


Existen algunas diferencias vitales entre Linux y Windows. Una diferencia esencial es que en Linux todo se
configura como un archivo. Incluso los directorios y controladores de dispositivos se identifican como
archivos de texto. El kernel ve la estructura de directorios como una serie de archivos con un diseño
jerárquico claro que culmina en el directorio raíz (también conocido como /). El concepto de
identificadores alfabéticos como puntos de montaje es diferente en Windows, que es más probable que
sean identificados por el usuario (u) o el disco (d).
166|Servidor SQL 2019 en Linux

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.

Figura 5.11: Cambio de usuario con el comando su

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.

Shell de nube de Azure

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.

El beneficio de Azure Cloud Shell es un acceso más rápido a la información de recursos, la


automatización de implementaciones masivas y cambios de VM desde la línea de comandos. Azure
Portal permite a aquellos que no se sienten cómodos con la CLI administrar la mayoría de estas
mismas cosas. También están disponibles numerosas extensiones específicamente para facilitar las
tareas de administración e implementación, incluidas Azure DevOps, GitHub y Jenkins.
Subsistema de Windows para Linux |167

Subsistema de Windows para Linux


La segunda opción que muchos deben considerar es para aquellos usuarios de Windows 10. Es la nueva
Subsistema de Windows para Linux versión 2 (WSL2) . A diferencia de un emulador, WSL2 es un
kernel de Linux completo dentro de Windows, que brinda la capacidad de ejecutar cualquier comando
de terminal como lo haría en un sistema Linux completo. Esto significa que ya no se necesita un
emulador. WSL1 se lanzó con Azure Sphere el año pasado, pero esta es la primera vez que un kernel de
Linux se entregará con Windows, y WSL2 llevará al profesional de Windows al siguiente paso de
verdadero rendimiento e interacción a nivel de kernel.

Root, el superusuario

Root es similar, pero no equivalente, al Administrador en un servidor Windows.Raízse conoce como


superusuario y propietario del directorio de nivel superior y del sistema operativo en un servidor
Linux.

Figura 5.12: Ejemplo de archivos y directorios en Linux

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:

• Distribuciones compatibles de Linux

• Instalación de SQL Server en Linux

• Servicios de aprendizaje automático

• Alta disponibilidad y contenedores

• Herramientas de SQL Server para Linux

• Comprender Linux como un DBA de SQL Server

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

172|SQL Server 2019 en Contenedores y Kubernetes

Por qué son importantes los contenedores

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.

Un contenedor es similar, pero diferente, y posiblemente sea la evolución de la virtualización. En lugar de


virtualizar el host y administrarlo como lo haría con un servidor físico tradicional, como instalar software y
parchear el sistema operativo y las aplicaciones, los contenedores virtualizan el sistema operativo, no el
hardware. La abstracción es completamente diferente y se explicará más en elFundamentos técnicos de
contenedoressección.

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

El tamaño, la portabilidad, la facilidad de implementación y el aislamiento se cruzan con DevOps y integración


continua/implementación continua (CI/CD ) movimientos. Para los desarrolladores de aplicaciones, la
capacidad de enviar cambios como una unidad completa y administrar las actualizaciones de forma controlada
brinda a los entornos de producción la capacidad de abordar los problemas mucho más rápido. ¿Necesita
volver a una versión anterior? Cambia el contenedor. ¿Quieres actualizar la versión? Cambia el contenedor.
Todo esto lleva muy poco tiempo en comparación con los métodos de implementación tradicionales.

Figura 6.1muestra la diferencia entre contenedores y VM a alto nivel:

Figura 6.1: Contenedores versus VM

Fundamentos técnicos de contenedores


Actualmente, los contenedores se pueden implementar de dos maneras: usando Docker y mediante un
método de orquestación comoKubernetes (K8 ), los cuales se abordarán en este capítulo con un poco
más de detalle. Los fundamentos descritos en esta sección se aplican a ambos.

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.

Una imagen de contenedor es el componente más fundamental del ecosistema de contenedores y se


publica en un registro. Microsoft proporciona imágenes de contenedores de SQL Server basadas en Docker.
Docker es lo que le permite crear una imagen de contenedor, pero también le permite ejecutar una imagen.
Docker se ejecuta de forma nativa en muchos sistemas operativos, lo que hace que sea conveniente para
los desarrolladores escribir aplicaciones basadas en contenedores.
174|SQL Server 2019 en Contenedores y Kubernetes

De forma predeterminada, el almacenamiento de imágenes de contenedores es efímero o temporal. Esto


significa que si la imagen del contenedor se cambia por una nueva, todo lo almacenado se perderá. SQL
Server requiere un almacenamiento que no desaparece, lo cual es posible tanto con Docker como con K8.

Implementar un contenedor de SQL Server usando Docker

Docker es un buen método de implementación para contenedores que no son de producción. El


almacenamiento persistente se logra en Docker usando volúmenes (https://docs.docker.com/storage/
volumes/ ), que le indican al contenedor qué usar y dónde mapearlo. Esta sección cubrirá cómo
implementar un contenedor de SQL Server usando Windows 10, la función Hyper-V incorporada y Docker.
Si estás utilizando otra plataforma, puedes adaptar las instrucciones en consecuencia:

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:

Figura 6.2: Configuración de la memoria en 2 GB en Docker


Implementar un contenedor de SQL Server usando Docker |175

El valor predeterminado es 1 GB. Si no configura esta configuración, obtendrá el siguiente


error al intentar crear un contenedor:

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:

docker extrae nombre de imagen

Aquí,Nombre de la imágenes el nombre propio de la imagen en el repositorio en línea:

Figura 6.3: Extracción de la imagen del contenedor de SQL Server 2019

5. Cree el contenedor con el siguiente comando:

docker run -e ACCEPT_EULA=Y -e SA_PASSWORD=StrongPassword -d -p host_ port:sql_port


-–name nombre de contenedor nombre de imagen

Aquí se aplica lo siguiente:

• - dsignifica ejecutar el contenedor en segundo plano.


• Puerto hostes el puerto del punto final en el host.
• puerto_sqles el puerto donde SQL Server escucha en el contenedor.
• nombre del contenedores el nombre del contenedor que se está creando.
176|SQL Server 2019 en Contenedores y Kubernetes

• Nombre de la imágenes el nombre de la imagen del contenedor que se extrajo.

Si tiene éxito, debería ver algo similar aFigura 6.4:

Figura 6.4: Creación de un contenedor Docker

Nota
En Docker para Windows, no coloque nada después del-mientre comillas simples. El
contenedor no arranca. Otras plataformas pueden requerirlos.

Sin-d, el contenedor se iniciará como se muestra en el ejemplo deFigura 6.5, y se ejecutará en


el contexto de esa ventana de comando. puedes golpearControl+Cy el contenedor seguirá
ejecutándose, pero eso no será evidente hasta que ejecute el comando en el siguiente paso:

Figura 6.5: Ejecutando un contenedor en primer plano


Implementar un contenedor de SQL Server usando Docker |177

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:

Figura 6.6: Compartir la unidad con la carpeta de datos


178|SQL Server 2019 en Contenedores y Kubernetes

Añade el-vopción, que enlaza monta un volumen en el contenedor. Si quieres usarC:\sqldata,


ejecute el siguiente comando, dondenombre de la carpetaes la ruta al almacenamiento
montado. Un ejemplo que muestra una carpeta antes y después de la creación del contenedor se
muestra enFigura 6.7:

docker run -e ACCEPT_EULA=Y -e SA_PASSWORD=StrongPassword -d -p host_


port:sql_port -vfoldername:/var/opt/mssql/data -–name contanername
imagename

Figura 6.7: Carpeta antes y después de crear el contenedor

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:

Figura 6.8: Verificar que el contenedor se esté ejecutando

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

Usando Docker y Bash


1. Ejecute eldocker exec -it nombre del contenedorcomando, dondenombre del contenedores el
nombre del contenedor.

2. En el símbolo del sistema, ejecute/opt/mssql-tools/bin/sqlcmd -S localhost -Usa


- Contraseña fuerte. Ahora debería conectarse a la instancia que se ejecuta en el
contenedor y poder ejecutar comandos. Un ejemplo se muestra enFigura 6.9:

Figura 6.9: Conexión al contenedor usando sqlcmd

Usar utilidades locales de SQL Server

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:

Figura 6.10: Conectado a un contenedor Docker en SSMS


180|SQL Server 2019 en Contenedores y Kubernetes

Personalización de contenedores de SQL Server

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.

Disponibilidad para contenedores de SQL Server

Para cualquier entorno de producción, garantizar la disponibilidad es un aspecto importante de cualquier


arquitectura. Las soluciones de disponibilidad tradicionales para SQL Server utilizan un clúster subyacente (
Clúster de conmutación por error de Windows Server (WSFC ) o Pacemaker en Linux). Para los contenedores,
los K8 proporcionan equilibrio de carga, agrupación en clústeres, orquestación y más. Ejemplos de K8 son
Servicio Azure Kubernetes (AKS ) y OpenShift de Red Hat.
Disponibilidad para contenedores de SQL Server |181

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:

Figura 6.11: Clúster de Kubernetes que abarca sistemas operativos

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

Los pods de Kubernetes pueden funcionar de manera similar utilizando almacenamiento


persistente. Como se muestra enFigura 6.12, un nodo del clúster de Kubernetes falló y SQL
Server se volvió a alojar en otro nodo de otro pod:

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

Desafíos de integración de datos


El enfoque tradicional adoptado con los sistemas analíticos tradicionales generalmente ha aprovechado las
herramientas de integración de datos para construir canales que extraen datos del sistema de origen, los
transforman, los limpian y finalmente los cargan en un data mart o almacé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.

¿Entonces, qué debería hacer?

Descubra cómo la virtualización de datos le ayuda a afrontar estos desafíos, ¡por supuesto!

Introduciendo la virtualización de datos

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:

• Consolidar el procesamiento de consultas en el origen,reducir el gasto en recursos.

• Administre una vista única, semántica y lógica de sus datos,evitando la duplicación.

• Abordar los problemas de datos en la fuente,mejorando la calidad de los datos.

• Consultar datos dispares en tiempo real sin crear un canal de datos.maximizando la


frescura.

• Acceder a los datos utilizando el modelo de seguridad del sistema fuente,simplificando la gestión.

• Las uniones y los filtros se pueden enviar hasta la fuente,mejorando el rendimiento de


las consultas.

• Sólo los resultados de las consultas viajan de forma segura a través de la red.mejorar la eficiencia
de la red.

• Datos en caché de forma transparente,reducir el impacto en los sistemas fuente.

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:

Figura 7.1: Un centro de datos empresarial moderno


188|Virtualización de datos

Casos de uso de virtualización de datos

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.

Virtualización de datos y procesamiento analítico transaccional híbrido.

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.

Virtualización de datos y almacenamiento en caché

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

almacenamiento en caché de archivos de SQL Server 2019: niveles HDFS.

Virtualización de datos y sistemas federados.

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.

Virtualización de datos y lagos de datos

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.

Contraste de virtualización de datos y movimiento de datos


Si bien la virtualización de datos es una excelente solución para varios escenarios, hay algunos casos en los que se
prefiere una canalización de movimiento de datos. La virtualización de datos interroga la fuente de datos en el
momento de la consulta, para que pueda ver el estado más reciente y actualizado de los datos. Sin embargo, sus
consultas se limitan a los datos disponibles en el momento de la consulta y usted depende del sistema de origen para
el control de versiones de las filas. ¿Qué debe hacer cuando necesita realizar un análisis histórico a lo largo del
tiempo? Cuando una fuente de datos no admite estados históricos de los datos, es necesario seleccionarlos mediante
un enfoque de movimiento de datos.
190|Virtualización de datos

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 resumen, la virtualización y el movimiento de datos pueden ser tecnologías complementarias.

Virtualización de datos en SQL Server 2019


La tecnología que utiliza SQL Server para ofrecer capacidades de virtualización de datos en 2019
es PolyBase. PolyBase se introdujo por primera vez en SQL Server en la versión 2016 para ayudar
a los clientes a integrar sus clústeres de Hadoop con datos relacionales. SQL Server 2019 amplía
significativamente PolyBase y mejora estas capacidades para brindar capacidades de
virtualización de datos a la plataforma.

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.

Acceso seguro a los datos

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 de la base de datos

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:

CREAR CIFRADO DE CLAVE MAESTRA POR CONTRASEÑA = '@rsen@l@re@m@zing!' ;

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;

Credenciales con ámbito de base de datos

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:

• Autenticación de proxy (nombre de usuario y contraseña)

• Autenticación integrada Kerberos (autenticación PassThrough)

• Clave de acceso al almacenamiento (secreto compartido)

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:

CREAR CREDENCIAL DE ALCANCE DE BASE DE DATOS

pg_credential CON IDENTIDAD = 'jrj@jrjpg'

, 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:

SELECCIONAR * DESDE sys.database_scoped_credentials;

Una vez que haya configurado su acceso a los datos, puede continuar y crear la fuente de datos
externa.

Fuentes de datos externas

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

Fuentes de datos admitidas

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:

Tabla 7.2: Tabla que resume las fuentes de datos externas

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.

Se accede a Azure Cosmos DB a través de la API de MongoDB. El grupo de datos y el grupo de


almacenamiento son características de SQL Server 2019 Big Data Clusters. Para obtener más información,
consulteCapítulo 9,Clústeres de big data de SQL Server 2019.
194|Virtualización de datos

Ampliando su entorno utilizando una fuente de datos externa ODBC

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:

Tabla 7.3: Información necesaria para configurar el controlador Postgres


Fuentes de datos externas |195

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:

Figura 7.4: Configuración del controlador ODBC para PostgreSQL

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.

Ahora puede crear la fuente de datos externa utilizando la siguiente sintaxis:


CREAR FUENTE DE DATOS EXTERNA pg_eds

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

ElUBICACIÓNEl argumento especifica el protocolo de comunicación, así como el nombre del


servidor y el puerto para la conectividad.

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:

SELECCIONAR * DESDE sys.external_data_sources;

Ahora puedes crear unmesa externa.

Acceder a fuentes de datos externas en Azure

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

Figura 7.5: Pantalla del firewall de Azure Database for PostgreSQL

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.

Formatos de archivos externos

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:

CREAR FORMATO DE ARCHIVO EXTERNO azure_adventureworks_eff

CON

(FORMAT_TYPE = TEXTO DELIMITADO

, FORMAT_OPTIONS( FIELD_TERMINATOR = '^')


);
198|Virtualización de datos

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:

SELECCIONAR * DESDE sys.external_file_formats;

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.

Mesas externas PolyBase


Las tablas externas proporcionan a SQL Server el esquema para razonar sobre los datos en la fuente de datos
externa. Cuando crea una tabla externa, está estableciendo una interfaz fuertemente tipada para los datos que
incluye el tipo de datos, la posibilidad de nulos y la intercalación a nivel de columna. Las columnas pueden y
deben estar fuertemente tipadas, ya que esto mejora el rendimiento de las consultas y la calidad de los datos.

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:

CREAR TABLA EXTERNA [Ventas].[TerritorioVentas]


([IDTerritorio] EN T NO NULO

, [Nombre] NVARCHAR(50) NO NULO

, [CódigoRegiónPaís] NVARCHAR(3) NO NULO

, [Grupo] NVARCHAR(50) NO NULO

, [Ventas hasta la fecha] DINERO NO NULO

, [VentasÚltimoAño] DINERO NO NULO

, [Costo hasta la fecha] DINERO NO NULO


Mesas exteriores PolyBase |199

, [CostoÚltimoAño] DINERO NO NULO

, [guid de fila] IDENTIFICADOR ÚNICO NO NULO

, [Fecha de modificación] FECHAHORA2(3) NO NULO

)
CON
( FUENTE DE DATOS = páginas_eds

, UBICACIÓN = 'postgres.ventas.territorio de ventas'


)
;

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.

Puede validar sus tablas externas usando el siguiente comando:


SELECCIONAR * DESDE sys.external_tables;

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

Crear tablas externas con Azure Data Studio


Azure Data Studio es una herramienta cliente multiplataforma para consultar sus datos. Incluye un
asistente útil que puede utilizar para crear tablas externas en su centro de datos. Para iniciar el
asistente, primero debe crear una conexión a Azure Data Studio. Deje la base de datos
predeterminada como maestra para que pueda ver todas las bases de datos de la instancia. Haga
clic derecho en su centro de datos y elija elCrear tabla externaopción para iniciar el asistente:

Figura 7.6: Iniciar el asistente

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

Figura 7.7: Asistente de virtualización de datos de Azure Data Studio

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.

Servidores vinculados contrastantes y tablas externas

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.

En resumen, si está creando un centro de datos empresariales moderno, debería aprovechar


las tablas externas de PolyBase en SQL Server 2019.

Instalación de PolyBase en SQL Server 2019


PolyBase es un componente opcional en SQL Server. Debe incluirlo como parte de la instalación
inicial o agregarlo después de la instalación para poder usarlo. También deberá habilitarlo una vez
instalado.

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

Guía general de preinstalación


Cuando instala PolyBase en Windows, vale la pena decidir si también desea conectarse a una
fuente de datos externa de Hadoop. Una fuente de datos de Hadoop permite la conectividad con
distribuciones de Cloudera u Hortonworks, pero también incluye almacenes de objetos en la nube,
como Azure Blob Storage. Estas fuentes de datos externas requieren que también instales un
Entorno de ejecución de Java (JRE ) para instalar PolyBase. Afortunadamente, SQL Server ahora
incluye su propio JRE compatible, que se instalará como parte del proceso de instalación. Si
prefieres usar tu propio JRE, puedes usarlo en su lugar:

Figura 7.8: La ventana Ubicación de instalación de Java

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

Instalación de PolyBase en Windows

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.

La pantalla más crítica en el proceso de instalación es la siguiente:

Figura 7.9: Seleccione la función PolyBase durante la instalación

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:

Setup.exe /Q /ACTION=INSTALL /IACCEPTSQLSERVERLICENSETERMS /


FEATURES=SQLEngine,PolyBase
/INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS="\<fabric-domain>\
Administrador"

/INSTANCEDIR="C:\Archivos de programa\Microsoft SQL Server" /PBSCALEOUT=TRUE /

PBPORTRANGE=16450-16460 /SECURITYMODE=SQL /SAPWD="<StrongPassword>"

/PBENGSVCACCOUNT="<NombreDominio>\<NombreUsuario>" /
PBENGSVCPASSWORD="<StrongPassword>"

/PBDMSSVCACCOUNT="<NombreDominio>\<NombreUsuario>" /
PBDMSSVCPASSWORD="<StrongPassword>"

Una vez instalado, puede continuar con los pasos posteriores a la instalación.

Instalación de PolyBase en Linux

A partir de SQL Server 2017, puede operar SQL Server en Linux. Actualmente, SQL Server
admite las siguientes distribuciones:

• Red Hat Enterprise Linux (RHEL )


• Servidor empresarial SUSE Linux (LES )
•Ubuntu

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.

Las siguientes URL le indicarán cómo realizar la configuración inicial para su


distribución preferida:

• 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.

Instalación de PolyBase en SQL Server ejecutándose en Docker

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

# Capa base del sistema operativo: último Ubuntu

LTS DESDE ubuntu:16.04

# 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

EJECUTAR exportación DEBIAN_FRONTEND=noninteractive && \

apt-obtener actualización && \

apt-get install -yq apt-transport-https curl && \


# Obtener la configuración oficial del repositorio de Microsoft

rizo https://packages.microsoft.com/keys/microsoft.asc | agregar clave apta -


&& \
curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-
serverpreview.list | tee /etc/apt/sources.list.d/mssql-server-preview.list && \
apt-obtener actualización && \

# Install PolyBase también instalará SQL Server mediante un mecanismo de


dependencia. apt-get install -y mssql-server-polybase && \
# Limpiar el Dockerfile
apt-get clean && \
rm -rf /var/lib/apt/listas

# Ejecute el proceso de SQL Server

CMD /opt/mssql/bin/sqlservr

Puede acceder a una copia de este Dockerfile en la siguiente URL:https://github.com/


microsoft/mssql-docker/tree/master/linux/preview/examples/mssql-polybase .

Ahora puede crear la imagen y asignarle una etiqueta usando el siguiente comando a continuación:

construcción de ventana acoplable. -t mssql-polybase-2019

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:

ventana acoplable ejecutar -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=@rsenal@re@mazing' -p 1433:1433


-d mssql-polybase-2019

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:

Figura 7.10: Preferencias de Docker

Pasos posteriores a la instalación

Primero debes validar que PolyBase esté instalado ejecutando el siguiente comando:
SELECCIONE SERVERPROPERTY ('IsPolyBaseInstalled') COMO IsPolyBaseInstalled;

Ahora que ha validado la instalación, deberá habilitar PolyBase usando el siguiente


comando:
exec sp_configure @configname = 'polybase habilitada', @configvalue = 1;
RECONFIGURAR CON ANULACIÓN;

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

Instalación de PolyBase como un grupo escalable

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.

Configurar un grupo de escalamiento horizontal es relativamente sencillo, siempre que se siga


un proceso metódico. Hay algunos factores importantes que debes tener en cuenta, por lo que
tener un plan es importante para una implementación sin problemas. El siguiente diagrama
resume una topología funcional que puede utilizar para su implementación. También debe
revisar la guía adicional para implementar esta topología para ayudar a garantizar el éxito:

Figura 7.11: Topología del grupo de escalamiento horizontal PolyBase de la máquina virtual de Azure
210|Virtualización de datos

° 1: utilice diferentes grupos de recursos para cada parte de la arquitectura

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.

° 2: cree la red virtual y asegure las subredes antes de crear máquinas


virtuales
Al crear primero la red virtual, puede establecer la topología de red y seguridad.a nivel de subred
antes de implementar cualquier máquina virtual (VM). También puede crear grupos de seguridad
de red (NSG) y asociar sus subredes a un NSG. Cuando implementa las máquinas virtuales,
simplemente puede asociar cada máquina virtual a la red virtual y a la subred a medida que crea la
máquina.

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.

Con esta configuración, no es necesario crear reglas de entrada adicionales en el NSG. La


subred actúa como límite de seguridad para la comunicación entre las máquinas del
grupo de escalamiento horizontal.

Consejo #4: ¡Complete esta lista de verificación previa a la instalación!

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

Instalación de grupo ampliable

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

Si no elige la segunda opción, MSDTC no se configurará correctamente y las reglas de


firewall adicionales para permitir el paso del tráfico de red no estarán habilitadas. Cambiar
una instalación de una instancia independiente a un grupo escalable requiere desinstalar la
característica PolyBase y reinstalarla, lo cual es engorroso. Lo mejor es hacerlo bien la
primera vez.
Instalación de PolyBase como grupo escalable |213

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:

SELECCIONE SERVERPROPERTY ('IsPolyBaseInstalled') COMO IsPolyBaseInstalled;

exec sp_configure @configname = 'polybase habilitada', @configvalue = 1;

RECONFIGURAR CON ANULACIÓN;

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.

Puedes consultar lo siguienteVista de gestión dinámica(DMV) para validar que la máquina


ha sido incorporada al grupo de escalado horizontal:
SELECCIONE * DE sys.dm_exec_compute_nodes;

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

Reuniéndolo todo: su primera consulta sobre virtualización de datos


AdventureWorks es una empresa distribuida globalmente. Cada empresa ha implementado su
propio sistema HTAP utilizando la tecnología de su elección. Los arquitectos de AdventureWorks han
hecho un buen trabajo al federar el modelo en todas las unidades de negocios para que cada
subsidiaria pueda proporcionar los mismos KPI. La junta directiva le ha pedido que cree una
solución que proporcione informes a nivel de grupo en todas las unidades de negocio:

Figura 7.14: AdventureWorks: un centro de datos empresarial moderno

Para implementar la arquitectura anterior, deberá crear los siguientes objetos en su


centro de datos:

• Cuatro esquemas

• Una clave maestra de base de datos

• Cuatro credenciales con ámbito de base de datos

• Un formato de archivo externo (Europa)

• Cuatro fuentes de datos externas

• Ocho mesas externas


216|Virtualización de datos

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

Cuaderno SQL de Azure Data Studio


Reuniéndolo todo: su primera consulta de virtualización de datos |217

¡É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.

Si desea probar alguna de las técnicas que se muestran en este libro,


empezar con unPrueba gratuita de 180 días de SQL Server 2019
Aprendizaje automático
8
Extensibilidad de servicios
Estructura

"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.

En este capítulo, explorará brevemente el aprendizaje automático, los componentes y arquitecturas


de SQL Server 2019 que puede usar para implementar estos servicios y un proceso que puede seguir
para incluirlos en una solución. Aprenderá las nuevas funciones de SQL Server 2019 para la
plataforma de aprendizaje automático.
220|Marco de extensibilidad de servicios de 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.

Descripción general del aprendizaje automático

En un momento, cubrirá la instalación de SQL Server Machine Learning Services y lo pondrá en


funcionamiento. También comprenderá sus componentes, configuración y seguridad,
momento en el que estará listo para comenzar con sus cargas de trabajo. Pero, ¿qué es el
aprendizaje automático y dónde lo utilizarías? Examinemos los conceptos básicos.

Dentro de la ciencia de datos, existen tres ramas principales de predicción y


categorización:

1.Aprendizaje automático: Usar patrones e inferencias a partir de datos en lugar de programación


explícita para realizar una tarea

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.

Cómo funciona el aprendizaje automático

El aprendizaje automático implica ingerir datos en un sistema y aplicar un algoritmo al conjunto de


datos para predecir un resultado o agrupar los datos de manera significativa. Hay dos tipos
generales de algoritmos de aprendizaje automático:

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.

Casos de uso para el aprendizaje automático

En su excelente vídeo de introducción llamadoCiencia de datos para principiantes,Brandon Rohrer


explica los cinco tipos de preguntas que la ciencia de datos puede responder:

1. ¿Es esto A o B?

2. ¿Es esto raro?

3. ¿Cuánto o cuántos?

4. ¿Cómo se organiza esto?

5. ¿Qué debo hacer a continuación?


222|Marco de extensibilidad de servicios de aprendizaje automático

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.

Todas estas preguntas tienen "familias" de algoritmos que proporcionan respuestas. Si


observa su organización, puede encontrar sus casos de uso específicos dentro de una de
estas preguntas. Por ejemplo, suponga que desea saber por qué algunas de sus tiendas
experimentan un mayor nivel de devoluciones que otras tiendas. Podría utilizar un
algoritmo de agrupación (como k-means) para mostrar los grupos de clientes que
devuelven productos y qué los hace similares.

Para encontrar los algoritmos que pueden responder a un problema determinado,


visite https://aka.ms/mlalgorithms .

El proceso general para crear una predicción o clasificación de aprendizaje automático


funciona así:

1. Seleccione el área del problema y los datos que respaldan la respuesta.

2. Ingerir y examinar los datos.

3. Seleccione las columnas (características) más predictivas.

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".

8. Utilice el modelo del software que lo llama.

Lenguajes y herramientas para el aprendizaje automático.

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.

2. ElPREDECIR T-SQLcomando: ejecuta un modelo entrenado que almacenó en formato binario


en la base de datos usando R o Python. Utiliza las extensiones nativas de C++ en SQL
Server.

3. Elrx_PredecirProcedimiento almacenado: ejecuta un modelo entrenado almacenado en formato


binario en la base de datos que se creó con las bibliotecas de modelado de Microsoft (más sobre
esto en un momento) e implementa elCLRextensión: es independiente del lenguaje y se ejecuta
sin dependencias de los motores de ejecución R o Python.

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:

• Enterprise (funciones básicas y mejoradas)

• Estándar (funciones básicas y mejoradas)

• Web (funciones básicas)

• Express con Servicios Avanzados (funciones básicas)

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

Arquitectura y componentes de SQL Server 2019 Machine


Learning Services
Puede instalar Machine Learning Services mediante el instalador de SQL Server, ya sea con una instancia
nueva o agregando funciones a una instancia instalada actualmente. Luego, el instalador marca los
componentes base para que cada instancia pueda ejecutar llamadas de lenguaje externo para la
instalación:

Figura 8.1: Instalación de SQL Server 2019 Machine Learning Services


Arquitectura y componentes de los servicios de aprendizaje automático de SQL Server 2019 |225

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 .

La instalación de Linux es diferente: instalará una serie de paquetes en un orden determinado


y existen ligeras variaciones según su distribución de Linux. Lo mejor es consultar las
instrucciones de instalación completas aquí:https://docs.microsoft.com/en-us/sql/linux/ sql-
server-linux-setup-machine-learning?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

figura. Utiliza elPlataforma de lanzamiento(en Windows) oplataforma de lanzamiento mssql

(en Linux) servicio, pero luego invocacommonlauncher.dll(en Windows) o


commonlauncher.so(en Linux). Para obtener más detalles sobre la interacción de Java,
visite:https://docs.microsoft.com/en-us/sql/language-extensions/concepts/
extensibilityframework?view=sqlallproducts-allversions .

Componentes

El siguiente diagrama ilustra los componentes principales del marco de extensibilidad de


Machine Learning Services y muestra la ruta de una llamada alsp_execute_external_script
Procedimiento almacenado que inicia el proceso:
Arquitectura y componentes de los servicios de aprendizaje automático de SQL Server 2019 |227

Figura 8.2: Marco de extensibilidad de SQL Server 2019 Machine Learning Services
228|Marco de extensibilidad de servicios de aprendizaje automático

Estos son los componentes principales en el orden en que se utilizan:

Figura 8.3: Tabla que menciona los componentes principales

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

RECONFIGURAR CON ANULACIÓN.

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; ',

@input_data_1 =N'SELECCIONE 1 COMO [¿R está funcionando]' CON

CONJUNTOS DE RESULTADOS (([Está funcionando R] int no nulo)); IR

Y este para Python:


/* Prueba Python */
EXEC sp_execute_external_script @language =N'Python',
@script=N'
Conjunto de datos de salida = Conjunto de datos de entrada; ',

@input_data_1 =N'SELECCIONE 1 COMO [¿Está funcionando Python]' CON

CONJUNTOS DE RESULTADOS (([¿Python funciona] int not null)); IR

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

Aprendizaje automático utilizando el marco de extensibilidad de


Machine Learning Services
El marco de extensibilidad de servicios de aprendizaje automático es una arquitectura que permite que
un entorno de procesamiento de lenguaje (como los tiempos de ejecución R, Python o Java) se ejecute
junto con el motor SQL Server. Al utilizar un servicio, el tiempo de ejecución del lenguaje puede aceptar,
procesar y devolver datos hacia y desde SQL Server de forma segura y rápida. Examinaremos la
arquitectura completa del marco de extensibilidad de Machine Learning Services una vez que haya
aprendido más sobre cómo trabajar con los lenguajes.

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 .

R para aprendizaje automático en SQL Server 2019

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.

En SQL Server 2019, ejecuta el código R de la siguiente manera:

1. Escribir y probar tu código R.

2. Usando elsp_execute_external_scriptprocedimiento almacenado, envolviendo el código R


con los datos que envía desde SQL Server y definiendo una estructura para los datos que
recibe de R.

La sintaxis para ejecutar código R toma el siguiente formato básico (consulte la


documentación oficial para obtener más parámetros):

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

CONJUNTOS DE RESULTADOS ((nombre_columna tipo_datos));

Analicemos esto un poco. Aquí están las partes de la declaración:

• sp_execute_external_script: El procedimiento almacenado que llama a los procesos que


permiten la ejecución de R (y otros lenguajes). Aprenderá más sobre la arquitectura de este
proceso en un momento.

• @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.

• @input_data_1_name = ' ': El nombre de la "variable" que R utilizará como datos de


entrada de SQL Server.

• @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

• @output_data_1_name = N'nombre de datos de salida': Este es el nombre de la variable en el script R


que se devuelve a T-SQL, que puede usar para seguir procesando o simplemente mostrársela a la persona
que llama.

• CON CONJUNTOS DE RESULTADOS ((nombre_columna tipo_datos)): Cuando los resultados


provienen del script R y regresan a SQL Server, no hay encabezados implícitos. Se recomienda
declarar las columnas que se devuelven y los tipos de datos de SQL Server que desea.

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'

, @script = N'sumlineitems <- as.data.frame(sum(lineitems))'


, @output_data_1_name = N'sumlineitems' CON

CONJUNTOS DE RESULTADOS ((sumlineitems int)); IR

Python para el aprendizaje automático en SQL Server 2019

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.

Java y aprendizaje automático en SQL Server


El lenguaje y la plataforma de procesamiento Java es un lenguaje de programación
multiplataforma, aislado, de uso general y orientado a objetos. SQL Server 2019 introduce el
entorno Java a las bibliotecas externas que tienes disponibles para tu código.
234|Marco de extensibilidad de servicios de aprendizaje automático

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 ):

Figura 8.4: El entorno de programación Java


Java y aprendizaje automático en SQL Server |235

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.

Si bien puedes otorgar (en Windows, elGrupo de usuarios SQLRUgrupo y, en Linux, el


mssql_satélite: usuario mssql_satélite) permisos manualmente, es mejor instalar el SDK de
extensibilidad de Microsoft Java para Microsoft SQL Server, que descarga elmssqljava-lang-
extension.jararchivo. (Busque este instalador en la web o consulte la documentación oficial de SQL
Server 2019 para conocer la ubicación más reciente).

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:

1. Escribe tu código Java como.clasearchivo y guárdelo en la carpeta donde otorgó


permisos de SQL Server. Deberá incluir al menos estas líneas:

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:

líneas de resumen de clase pública extiende AbstractSqlServerExtensionExecutor {

Y luego comienza a crear tus clases. Su conjunto de datos de entrada y cualquier parámetro toman esta
forma:

ejecución pública de PrimitiveDataset (entrada de PrimitiveDataset,


LinkedHashMap<String, Object> parámetros) {
// Validar los parámetros de entrada y el esquema de la columna de
entrada validarInput(input, params);

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.

2. Compile la clase en un.frascoarchivo (por ejemplo,jar -cf sumlineitems.jar


sumlineitems.clase).
Aprendizaje automático mediante el comando PREDICT T-SQL |237

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:

CREAR BIBLIOTECA EXTERNA sumlineitemsJar


DESDE (CONTENIDO = 'c:\javajars\')
CON (IDIOMA = 'Java'); IR

4. Utilice elsp_execute_external_scriptprocedimiento almacenado para enviar datos, ejecutar la


clase y luego recibir los resultados. En este ejemplo, tienes un.frascoarchivo que compilaste, y
queJavaEl archivo tiene una clase que suma las líneas de los datos que se le envían, igual que
en los ejemplos de R y Python:

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.

Aprendizaje automático mediante el comando PREDICT T-SQL


Una vez que haya creado un modelo (también llamado "modelo entrenado"), puede guardarlo en formato
binario para "puntuar" los resultados de una predicción. Tanto R como Python tienen métodos para almacenar
los modelos entrenados como salidas binarias. Es común almacenar estos modelos en la propia base de datos,
lo que luego le permite procesar solicitudes de clientes en una declaración T-SQL y devolver los resultados como
un conjunto de datos. Este proceso requiere el tiempo de ejecución (R o Python) para procesar la solicitud.
238|Marco de extensibilidad de servicios de aprendizaje automático

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.

Funciones deRevoScaleR(para R) yrevoescalapia(para Python) tienen implementaciones de C++ y


SQL Server 2019 puede usar los modelos que crean (usando el rxSerializarpara R, y
rx_serialize_modelopara Python, funciones) incluso sin que R o Python estén presentes en el
servidor. Estas implementaciones de C++ tienen varios algoritmos de predicción, incluida la regresión
logística y los árboles de decisión, y están optimizadas para un procesamiento rápido.

Nota
Utilizando elPREDECIRcomando también se llamaPuntuación nativa .

El proceso para utilizar elPREDECIRcomando es el siguiente:

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.

3. Serializar el modelo entrenado utilizando elrxSerializarpara R, omodelo rx_serialize_


para Python, funciones.

4. Llame al modelo usando elSELECCIONAR... DE PREDICCIÓN(...)comandos. Tenga en cuenta que los


modelos devuelven datos en varios formatos según lo que defina, por lo que debe tener laCON
RESULTADOScláusula para especificar el esquema de los datos devueltos por la predicción.

Para ver un ejemplo completo de este proceso, consulte:https://docs.microsoft.com/en-us/


sql/t-sql/queries/predict-transact-sql?view=sql-server-2017 .

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

Aprendizaje automático utilizando el procedimiento almacenado sp_rxPredict

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:

1. Cargue un modelo entrenado en una variable binaria.

2. Selecciona los datos que deseas puntuar.

3. Llame alsp_rxPredictfunción.

4. Reciba los resultados.

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:

DECLARAR @modelname varbinary(max)

SELECCIONE @modelname = [model_name] de [my_models]


DONDE model_name = 'predict_purchase'
AND model_version = 'v1''

EXEC sp_rxPredict
@modelo = @nombredelmodelo,

@inputData = N'SELECT * FROM customer_features'

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

Bibliotecas y paquetes para aprendizaje automático.


En los entornos R, Python y Java, el lenguaje base viene con múltiples funciones, declaraciones,
operadores y llamadas. Pero el verdadero poder de todos estos lenguajes es la capacidad de
agregar construcciones adicionales escritas para extender el lenguaje para otros fines (en este caso,
el aprendizaje automático). Estas construcciones se agrupan en paquetes y bibliotecas.

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.

En Python, un paquete es una colección de módulos que contienen funciones y otro


código.

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.

A continuación se muestra un ejemplo de cómo cargar unRpaquete con este método:

CREAR BIBLIOTECA EXTERNA paquete personalizado

DESDE (CONTENIDO = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\


MyPackage.zip') CON (IDIOMA = 'R');
IR
Luego, puedes ejecutar elRcódigo para usarlo:

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.

Para obtener más información sobre este comando, consulte:https://docs.microsoft.com/en-


us/ sql/t-sql/statements/create-external-library-transact-sql?view=sql-server-ver15 .

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.

Existen diferencias en la seguridad de los propios idiomas. Si el usuario va a incluir


paquetes y bibliotecas para R o Python en su código, necesitará los permisos adecuados
para instalar estas adiciones de software. Para una discusión completa de estos cambios,
consulte:https://docs.microsoft.com/en-us/sql/advanced-analytics/security/user-
permission?view=sql-server-ver15 .

Un efecto secundario interesante de trabajar con procesos externos es que elCifrado de


datos transparente (TDE ) en SQL Server no es compatible con Machine Learning Services, ya
que los procesos descritos anteriormente están aislados del proceso principal de SQL Server
donde se mantiene TDE.

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

Uso del proceso de ciencia de datos en equipo con Machine Learning


Services
Ha explorado los conceptos básicos del aprendizaje automático y comprende los lenguajes, las
herramientas y los componentes de SQL Server 2019 que puede usar para implementarlo y ahora está
listo para comenzar con la ciencia de datos real. Un proyecto de ciencia de datos se diferencia de los
proyectos tradicionales de desarrollo de software porque involucra una única solución a la vez,
depende en gran medida de mejorar la solución una vez implementada e involucra a más partes
interesadas en el diseño y la implementación.

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.

Comprender el proceso de ciencia de datos del equipo

ElProceso de ciencia de datos en equipo (TDSP –https://aka.ms/tdsp ) es un marco abierto para


gestionar y controlar proyectos de ciencia de datos. Proporciona orientación, recursos y
documentación que puede utilizar para implementar su solución. El TDSP también define los roles
descritos anteriormente, como los ingenieros de datos.

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

Fase 1: Entendimiento empresarial

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.

Fase 2: Adquisición y comprensión de datos


Con la pregunta definida, deberá identificar las fuentes de datos (internas o externas) que necesita para
crear las características y (opcionalmente) las etiquetas que necesita para crear la predicción o
clasificación. SQL Server 2019 tiene componentes como servicios de datos maestros, servicios de calidad
de datos, servicios de integración de SQL Server y el propio motor de base de datos para obtener, mover,
documentar, almacenar y procesar fuentes de datos desde múltiples ubicaciones. En SQL Server 2019, la
función Big Data Clusters (que se trata en el siguiente capítulo) le permite obtener y almacenar datos a
una escala enorme.

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

Fase 5: Aceptación del cliente


El amplio conjunto de funciones de clasificación e informes de SQL Server 2019, junto con Integración
continua yDespliegue continuo (CI/CD ), le permiten realizar la transición de la solución al equipo de
mantenimiento y también le permite almacenar la información de "verdad sobre el terreno". de las
predicciones para el reentrenamiento del modelo. También puede utilizar Reporting Services para
crear resultados de la efectividad de los modelos y predicciones.

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.

Debido a la profundidad de la información técnica en cualquier sistema de escalamiento horizontal, este


capítulo se centrará en los conceptos principales de esta nueva característica, al tiempo que proporcionará
ejemplos concretos de su uso. En cada sección se proporcionan referencias para ayudarle a aprender más
sobre cada área.
250|Clústeres de big data de SQL Server 2019

Descripción general de grandes datos

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 ).

Aplicar arquitecturas escalables a SQL Server


Con una comprensión del origen de big data, los usos de big data y la tecnología para procesar big
data, se requieren cambios y mejoras para que SQL Server funcione en un entorno escalable. Si bien
SQL Server ha proporcionado durante mucho tiempo un mecanismo paralelo para escalar el
procesamiento dentro de una instancia, requiere nuevas tecnologías para trabajar con conjuntos de
datos distribuidos masivos.

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í:

Figura 9.1: Arquitectura de la máquina virtual


252|Clústeres de big data de SQL Server 2019

Usando un motor de ejecución de contenedor, la arquitectura se ve así:

Figura 9.2: Arquitectura de contenedor (se muestra Docker)

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:

1. Creas untextopresentar enOtro-lenguaje-de-marcado-más , oYAML , formato) que


describe qué binarios y archivos desea en su contenedor.

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.

3. Usando uncorrercomando, la imagen binaria se carga en el motor de ejecución del


contenedor (Docker, en nuestro caso) y se inicia. Este entorno es ahora un contenedor.

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

Una de las plataformas de contenedores más populares se llamaEstibadory es el que se utiliza en


los clústeres de big data de SQL Server. Hay un curso completo que puede realizar en línea para
Docker aquí:https://docs.docker.com/get-started/ .

Si bien la tecnología de contenedores es revolucionaria, plantea un problema importante:


cómo gestionar varios contenedores. Quiere una arquitectura escalable para su sistema de
procesamiento de big data, y eso significa muchos contenedores ejecutando el
procesamiento (a veces docenas, cientos o incluso miles de contenedores). Esto puede
resultar abrumador de implementar y gestionar.

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:

Tabla 9.3: Componentes de Kubernetes


254|Clústeres de big data de SQL Server 2019

Aquí hay un diagrama de todos esos componentes juntos:

Figura 9.4: Componentes de Kubernetes

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/ .

Servidor SQL en Linux

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.

Puedes aprender mucho más sobre Linux aquí:https://www.edx.org/course/


introductionto-linux .

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

Componentes del clúster de big data de SQL Server 2019

Con una comprensión de big data, su procesamiento, arquitectura y tecnologías, y la


capacidad de SQL Server para utilizar estas tecnologías, es hora de unirlo todo.

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:

Tabla 9.6: Componentes del sistema de cluster 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):

1. Usar un servicio de Kubernetes (como elServicio Azure Kubernetes (AKS )

2. Usar una instalación local de Kubernetes

3. Usando una instalación local/portátil de Kubernetes

Veamos una descripción general de cada uno de ellos.

Usando un servicio de Kubernetes

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 .

Implementar un clúster de Kubernetes en AKS es bastante simple y también proporciona registros,


informes y más. La configuración más importante para los clústeres de big data de SQL Server
2019 es el tamaño de las máquinas virtuales, la configuración de red y la cantidad y tipo de discos
para los volúmenes de almacenamiento.
Instalación y configuración |259

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.

Usar una instalación local de Kubernetes


La siguiente opción que tienes para trabajar con Kubernetes es instalarlo localmente o en tu
propio centro de datos. La ventaja de esta implementación es que usted controla completamente
el entorno, puede utilizar hardware físico o tecnología de máquina virtual y puede configurar y
controlar un límite de seguridad completamente privado.

Existen bastantes métodos para implementar Kubernetes localmente, pero el proceso


principal es descargar el programa Kubernetes e instalarlo, y luego usar elkubeadm utilidad
para configurar el clúster, el almacenamiento y los nodos que desee. Puedes leer más sobre
cómo hacerlo aquí:https://kubernetes.io/docs/setup/ .

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.

Trabajar con un entorno de desarrollo/pruebas

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.

El proceso de instalación y configuración.minikuboes aquí:https://kubernetes.io/docs/


tutorials/hello-minikube/ , y las consideraciones con respecto al tamaño de la
implementación están aquí:https://docs.microsoft.com/en-us/sql/big-data-cluster/deploy-
onminikube?view=sqlallproducts-allversions .

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.

Implementación de clústeres de big data en un clúster de Kubernetes

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:

azdata login --controller-endpoint https://<ip-address-of-controller-


svcexternal>:30080 --controller-username <user-name>

Y luego puede enumerar los puntos finales que utilizará para conectarse al componente que desea:

lista de puntos finales del clúster azdata

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

Programación de 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.

Estudio de datos de Azure

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:

Figura 9.7: Registro del servidor Azure Data Studio

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:

Figura 9.8: Conexión de Azure Data Studio

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

/* Bases de datos en esta instancia */ SELECT

db.name AS 'Nombre de la base de datos' ,

Nombre_físico AS 'Ubicación en el disco'

, Cast(Cast(Round(cast(mf.size as decimal) * 8.0/1024000.0,2) as


decimal(18,2)) as nvarchar) 'Tamaño (GB)'
DESDE sys.master_files mf

UNIÓN INTERNA

sys.databases db ON db.database_id = mf.database_id


DONDE mf.type_desc = 'FILAS';
IR

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:

kubectl cp WWI.bak master-0:/var/opt/mssql/data -c mssql-server -n sqlbigdata

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]

RESTAURAR BASE DE DATOS [WideWorldImporters]

DESDE DISCO = N'/var/opt/mssql/data/WWI.bak'

CON ARCHIVO = 1
, REEMPLAZAR

, MOVER N'WWI_Primary' A N'/var/opt/mssql/data/WideWorldImporters.mdf'


, MOVER N'WWI_UserData' A N'/var/opt/mssql/data/WideWorldImporters_UserData. ndf'

, MOVER N'WWI_Log' A N'/var/opt/mssql/data/WideWorldImporters.ldf'


, MOVER N'WWI_InMemory_Data_1' A N'/var/opt/mssql/data/WideWorldImporters_
InMemory_Data_1'
, NO DESCARGAR, ESTADÍSTICAS = 5;

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.

Crear tablas escaladas


Hay muchas situaciones en las que desearía conservar una gran cantidad de datos relacionales para
operaciones de consulta. Por ejemplo, es posible que desee realizar inteligencia empresarial sobre
varios terabytes de datos relacionales, o puede que desee realizar consultas para unir varias fuentes de
datos y conservar los resultados para su uso posterior.

Aprendió sobre la función PolyBase enCapítulo 5,Virtualización de datos. La función


de clúster de big data de SQL Server 2019 utiliza esta tecnología en todo el clúster.
Programación de clústeres de big data de SQL Server 2019 |267

La instancia maestra tiene el motor PDW y otras funciones de PolyBase instaladas y


configuradas. El proceso para crear una tabla externa consta de tres partes:

1. Cree una fuente de datos externa.

2. Esto es opcional si la fuente está basada en texto. Crear unformatoarchivo para los elementos de
datos en la fuente de datos externa.

3. Cree una tabla 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.

Notarás en el diagrama de arquitectura que hay un sistema HDFS en el grupo de almacenamiento.


SQL Server 2019 ha sido diseñado para leer y escribir Parquet yValores Separados por Comas (CSV )
archivos, y esos se pueden almacenar en HDFS en el grupo de almacenamiento. Con PolyBase,
puede crear una fuente de datos externa, una especificación de formato y una tabla externa. Todos
estos apuntan al punto final de HDFS y luego puede cargar ese directorio en HDFS con archivos de
texto. En este ejemplo, el código crea todos los activos para hacer precisamente eso:

/* Crear formato de archivo externo */

UTILICE Importadores WideWorld;

IR

SI NO EXISTE (SELECCIONAR * DESDE sys.external_file_formats DONDE nombre = 'csv_file')

COMENZAR

CREAR FORMATO DE ARCHIVO EXTERNO csv_file

CON (

FORMAT_TYPE = TEXTO DELIMITADO,

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

/* Crear fuente de datos externa para el grupo de almacenamiento */

SI NO EXISTE (SELECCIONAR * DESDE sys.external_data_sources DONDE nombre


= 'SqlStoragePool')
CREAR FUENTE DE DATOS EXTERNA SqlStoragePool

CON (UBICACIÓN = 'sqlhdfs://controller-svc:8080/default');


/* Crear una tabla externa que pueda leer desde la ubicación del archivo del grupo de
almacenamiento */ SI NO EXISTE (SELECCIONAR * DESDE sys.external_tables WHERE nombre
= 'partner_customers_hdfs') COMENZAR A CREAR TABLA EXTERNA [partner_customers_ hdfs]
(" CustomerSource" VARCHAR(250), "CustomerName" VARCHAR(250), "EmailAddress"
VARCHAR(250)) CON ( DATA_SOURCE = SqlStoragePool, LOCATION = '/partner_customers',
FILE_FORMAT = csv_file ); FIN

Ahora puede consultar esos datos como si fueran un objeto de tabla estándar de SQL Server:

/* Leer datos de HDFS usando solo T-SQL */

SELECCIONE LOS 10 PRINCIPALES Fuente del

cliente, Nombre del cliente

, Dirección de correo electrónico

DESDE [partner_customers_hdfs] hdfs DONDE

Dirección de correo electrónico COMO '%wingtip%'

PEDIDO POR FuenteCliente, NombreCliente; IR

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 .

Creando un lago de datos

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.

Puedes ver un ejemplo del uso de estos métodos aquí:https://docs.microsoft.com/en-


us/sql/big-data-cluster/tutorial-data-pool-ingest-spark?view=sqlallproductsallversions .

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 .

Trabajando con chispa

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

términos utilizados en esta sección:https://spark.apache.org/docs/latest/cluster-overview.html .


270|Clústeres de big data de SQL Server 2019

Enviar un trabajo desde Azure Data Studio

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:

Figura 9.9: Conexión de Azure Data Studio a Spark


Programación de clústeres de big data de SQL Server 2019 |271

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:

Figura 9.10: Cuaderno Spark de Azure Data Studio


Traducido del inglés al español - www.onlinedoctranslator.com

272|Clústeres de big data de SQL Server 2019

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.

En Java, como aprendiste enCapítulo 8,Marco de extensibilidad de servicios de aprendizaje automático,


puede agrupar varios archivos en.frascoformato y luego envíe ese código a Spark para su distribución
desde el programa controlador a los ejecutores. Puedes hacer lo mismo con.py archivos. Para enviar un
trabajo de esta manera, desde el panel Big Data Clusters, seleccione el ícono Enviar trabajo de Spark y
luego complete la ubicación de los archivos que desea ejecutar:

Figura 9.11: Azure Data Studio envía un trabajo a Spark

Envío de un trabajo Spark desde IntelliJ

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

Archivos de trabajo y ubicaciones de datos de Spark

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.

Componentes y operaciones de SQL Server

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

La herramienta principal para administrar y monitorear un clúster de Kubernetes eskubectl.


Mecanografía kubectly presionandoIngresarobtendrá una referencia a la documentación completa y una
lista de las categorías de comandos con las que puede trabajar.

Para obtener ayuda específica sobre un comando, simplemente agregue--ayudahasta el final de ese comando:

kubectl obtiene vainas --ayuda


274|Clústeres de big data de SQL Server 2019

Aquí hay algunos comandos básicos para trabajar con su clúster:

Tabla 9.12: Mostrando comandos de kubectl

Operaciones de clúster de big data de SQL Server 2019

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:

Tabla 9.13: Mostrar comandos azdata


Gestión y seguimiento |275

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 .

Monitoreo del desempeño y las operaciones con Grafana

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í:

Figura 9.14: Monitoreo de Grafana SQL Server

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

Monitoreo de registros con Kibana

Visualizar los contadores de rendimiento y otras métricas dentro de los componentes de su


clúster es muy importante, pero también deberá examinar los distintos registros del sistema, y
de ahí viene otra tecnología de código abierto llamada Kibana. in. Este es otro de los servicios
compartidos ubicados en el diagrama de arquitectura.

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:

Figura 9.15: Gestión de registros con Kibana

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:

• Archivos de registro maestros

• Archivos de registro de trabajadores

• Archivos de registro del controlador (cliente y clúster)

• Archivos de registro del ejecutor

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.

Configuración y configuración de seguridad

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}

"big data clustersAdminPrincipals": {lista de entidades principales de AD en AD a las que se les


otorgarán derechos de administrador de BIG DATA CLUSTERS}

"big data clustersUserPrincipals": {lista de entidades principales de AD en el AD a las que se les


otorgarán derechos de usuario (no administrador) de BIG DATA CLUSTERS}

"appOwnerPrincipals": {lista de entidades principales de AD en AD que tendrán derechos de administrador


en todas las aplicaciones} Opcional

"appReaderPrincipals": {lista de entidades principales de AD que tendrán derechos de


lectura en todas las aplicaciones} Opcional

"upstreamIpAddresses":{Puede haber varios servidores DNS para alta


disponibilidad, cada uno con su propia dirección IP.}
"domainControllerFullyQualifiedDns":{El nombre DNS completo del dominio}
"reino":{dominio dominio}
"}
Debido a que los clústeres de big data de SQL Server 2019 usan contenedores, están en el nivel de proceso, no
en el nivel de unión al servidor, como lo estaría si uniera una computadora a un bosque de AD. Esto significa que
el sistema utiliza construcciones basadas en Kerberos para enrutar todas las llamadas de seguridad a través del
sistema, una especie de suplantación para que pueda iniciar sesión una vez en AD y hacer que esa identidad
confiable fluya a través del sistema.
280|Clústeres de big data de SQL Server 2019

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.

Solo hemos explorado brevemente los conceptos de instalación y configuración, uso y


programación, y monitoreo y administración de la función Big Data Cluster de SQL Server
2019. Hay mucho más que aprender y explorar. Si desea seguir un tutorial completo que
incluya todos estos conceptos y herramientas en un ejemplo de clúster de big data,
consulte este recurso:https://github.com/Microsoft/sqlworkshops/tree/master/
sqlserver2019bigdataclusters .
Mejorando el
10
Experiencia del desarrollador

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.

Figura 10.1: Programa de código de Visual Studio

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

Base de datos de gráficos SQL

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.

Puede encontrar más información sobre Azure Data Studio en:https://docs.microsoft.


com/en-us/sql/azure-data-studio/what-is?view=sql-server-2017:

Figura 10.2: SSMS que muestra la estructura del estudio de gestión

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

• Integridad de los datos

• Compatibilidad con coincidencias en la declaración MERGE

• Uso de tablas derivadas o alias de visualización en consultas de coincidencia de gráficos

Puede encontrar más información sobre SQL Graph aquí:

https://docs.microsoft.com/en-us/sql/relational-databases/graphs/sql-
grapharchitecture?view=sql-server-2017
Base de datos de gráficos SQL |287

¿Por qué utilizar SQL Graph?

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.

• Cuando existe un conjunto complejo de relaciones de muchos a muchos.

• Análisis de datos de alto rendimiento sobre datos complejos.

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.

Crear un nuevobase de datosllamadoSQLGraphDBen SQL Server 2019:

crear base de datos SQLGraphDB

ir

utilizar SQLGraphDB

ir
288|Mejorando la experiencia del desarrollador

CrearNodotablas llamadasPersonayCiudadcon algunos datos:


crear la tabla Persona (PersonID int clave primaria, PersonName varchar(10)) como Nodo;

crear la tabla Ciudad (CityID int clave primaria, CityName varchar(10)) como Nodo;

insertar en valores de persona (1, 'Sam')


insertar en valores de persona (2, 'Dave')

insertar en valores de ciudad (1, 'Miami')


insertar en valores de ciudad (2, 'Atlanta')

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:

crear la tabla PersonCity (NodeCount int) como Edge;

Puedes insertar en elPersonaCiudadmesa de borde en cualquier dirección, desdePersonaaCiudado


CiudadaPersona:

- - 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

A continuación, soltaremos elPersonaCiudadtabla de borde y recrearla con una restricción que


solo permita laPersonaaCiudaddirección. Esta declaración no funcionará en SQL Server 2017. El
errorSintaxis incorrecta cerca de 'conexión'es generado:
soltar tabla si existe PersonCity ir

crear tabla PersonCity (

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:

- - Person to City aún logra insertar valores en


PersonCity ($from_id, $to_id) (

(seleccione $node_id de Persona donde PersonID = 1),


(seleccione $node_id de Ciudad donde CityID = 1))

- - Ciudad a Persona falla


insertar en PersonCity ($from_id, $to_id)
valores (
(seleccione $node_id de Ciudad donde CityID = 2),
(seleccione $node_id de Persona donde PersonID = 2))

Intentando insertar datos deCiudadaPersonafalla y genera el siguiente error:


Mensaje 547, Nivel 16, Estado 0, Línea 51
La instrucción INSERT entró en conflicto con la restricción EDGE "EdgeConstraint_
PersonCity". El conflicto se produjo en la base de datos "SQLGraphDB", tabla "dbo".
PersonaCiudad".
La instrucción se ha terminado.
290|Mejorando la experiencia del desarrollador

Tú también puedesalteraruna tabla existente para agregar una restricción. Si la restricción


existe, primero debe eliminarla. Si hay varias restricciones, se deben cumplir todas las
restricciones al insertar datos:
modificar la tabla PersonCity agregar restricción Conexión EdgeConstraint_PersonCity
(Persona a Ciudad);

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/.

Mejoras en la integridad de los datos de SQL Graph

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.

En SQL Server 2019, se mantendrá la integridad referencial y obtendrá un error si intenta


eliminar un registro de nodo contenido en una tabla perimetral.

Usando el ejemploPersona,Ciudad, yPersonaCiudadtablas de antes, intente eliminar una


entrada delPersonatabla contenida en elPersonaCiudadmesa de borde. Intentar realizar la
eliminación provocará un error:
eliminar de Persona donde PersonID = 1

El código anterior dará como resultado este error:

Mensaje 547, Nivel 16, Estado 0, Línea 80


La instrucción DELETE entró en conflicto con la restricción EDGE REFERENCE
"EdgeConstraint_PersonCity". El conflicto se produjo en la base de datos "SQLGraphDB",
tabla "dbo.PersonCity".
La instrucción se ha terminado

Compatibilidad con SQL Graph MATCH en MERGE

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

SQL Server 2019 ahora admite el uso de SQL GraphFÓSFOROcláusulas en unUNIRdeclaración.

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:

seleccione PersonID, PersonName de Persona


--
Declarar @PersonID int = 1
Declare @PersonName varchar(10) = 'Bobbi'

FUSIONAR Persona

USANDO (SELECCIONAR @PersonID, @PersonName)

COMO tmp (PersonID, PersonName)

ENCENDIDO (Person.PersonID = tmp.PersonID)

CUANDO COINCIDE ENTONCES

ACTUALIZAR SET PersonName = tmp.PersonName CUANDO

NO COINCIDE ENTONCES

INSERTAR (IDPersona, NombrePersona) VALORES

(tmp.IDPersona, tmp.NombrePersona);

Vea si la actualización de la fila de la tabla de nodos existente se realizó correctamente:

Seleccione PersonID, PersonName de Persona

Ahora, para probar la inserción, especifique un ID que no esté en la tabla:

Declarar @PersonID int = 3


Declare @PersonName varchar(10) = 'Marc'

FUSIONAR Persona
292|Mejorando la experiencia del desarrollador

USANDO (SELECCIONAR @PersonID, @PersonName)

COMO tmp (PersonID, PersonName)

ENCENDIDO (Person.PersonID = tmp.PersonID)

CUANDO COINCIDE ENTONCES

ACTUALIZAR SET PersonName = tmp.PersonName CUANDO

NO COINCIDE ENTONCES

INSERTAR (IDPersona, NombrePersona) VALORES

(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)

También podría ser este:

. . en PARTIDO (Persona<-(PersonaAndCiudad)-Ciudad)

Para este ejemplo, utilizamos elRecuento de nodoscampo de laPersonaYCiudadmesa de borde. Para


comenzar, limpie la mesa lateral:

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

unirse a Ciudad en tmp.CityID = Ciudad.CityID)

en COINCIDIR (Persona-(PersonCity)->Ciudad)

cuando COINCIDE entonces

conjunto de actualización NodeCount = isnull(NodeCount, 0) + 1 cuando

NO COINCIDE ENTONCES

insertar valores ($from_id, $to_id, NodeCount)


(Persona.$node_id, Ciudad.$node_id, 1);

seleccione * de PersonCity
El resultado es una fila con unRecuento de nodosde1eso se verá algo como lo siguiente:

Figura 10.3: Salida de la inserción/actualización de filas en la tabla perimetral


294|Mejorando la experiencia del desarrollador

Si ejecutas elUNIRdeclaración nuevamente, todavía habrá solo una fila, pero la Recuento
de nodosserá igual2.

Para obtener más información sobre SQL GraphFÓSFOROapoyo en elUNIRdeclaración,


ver https://blogs.msdn.microsoft.com/sqlserverstorageengine/2018/07/16/
matchsupport-in-merge-dml-for-graph-tables/ .

Usar una tabla o vista derivada en una consulta MATCH de gráfico

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.

soltar tabla si existe PersonCity

soltar tabla si existe IsInCity soltar


vista si existe PersonCompany

eliminar tabla si existe Persona


eliminar tabla si existe Empresa
eliminar tabla si existe Ciudad

crear tabla Persona (PersonID int, PersonName varchar(20), CityName


varchar(20)) como Nodo
crear tabla Empresa (CompanyID int, CompanyName varchar(20), CityName
varchar(20)) como Nodo
crear tabla Ciudad (CityID int, CityName varchar(20)) como Nodo

crear tabla IsInCity como Edge

ir

insertar en valores de persona (1,'Amy', 'Atlanta')


Base de datos de gráficos SQL |295

insertar en valores de persona (2,'Bob', 'Boston')

insertar en valores de la empresa(1,'Acme', 'Atlanta')


insertar en valores de la empresa(2,'Beta', 'Boston')

insertar en valores de ciudad(1,'Atlanta')


insertar en valores de ciudad(2,'Boston')

seleccione * de Persona, Empresa, Ciudad

insertar en IsInCity ($from_id, $to_id)


valores (
(seleccione $node_id de Persona donde CityName = 'Atlanta'),
(seleccione $node_id de Ciudad donde CityName = 'Atlanta'))

insertar en IsInCity ($from_id, $to_id)


valores (
(seleccione $node_id de la empresa donde CityName = 'Boston'),
(seleccione $node_id de la ciudad donde CityName = 'Boston'))

seleccione * de IsInCity

crear Ver PersonaEmpresa como


seleccione PersonID como ID, PersonName como [PCName], CityName de Person
union all
296|Mejorando la experiencia del desarrollador

seleccione CompanyID como id, CompanyName, CityName de la empresa

seleccione * de PersonaEmpresa

seleccione pc.id, pc.PCName, pc.CityName


de PersonCompany PC,
Ciudad,

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.

Extensiones del lenguaje Java


SQL Server 2016 introdujo un marco de extensibilidad para ejecutar scripts externos
como R y Python.

Este marco de extensibilidad se expone utilizando elsp_execute_external_scriptprocedimiento almacenado


del sistema. SQL Server 2019 es compatible con Java tanto en Windows como en Linux.

La instalación de Windows se trata en este libro y aquí:https://docs.microsoft. com/en-us/


sql/language-extensions/install/install-sql-server-language-extensionson-windows?
view=sqlallproducts-allversions#java-jre-jdk

Las instrucciones de instalación de Linux se pueden encontrar enhttps://docs.microsoft.com/en-us/


sql/linux/sql-server-linux-setup-language-extensions?view=sqlallproducts-allversions

¿Por qué extensiones de idiomas?

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.

A partir de SQL Server 2005, huboTiempo de ejecución de lenguaje común (CLR )


Integración. Esta característica no fue muy utilizada, algo engorrosa y no recomendada en
la mayoría de los casos.
Extensiones de lenguaje Java |297

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:

Figura 10.4: La pantalla de instalación de funciones de SQL Server en Windows


298|Mejorando la experiencia del desarrollador

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.

Figura 10.5: El diálogo de instalación de Java

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í:

Figura 10.6: Agregar/editar tablas de entorno

Si no instaló elJDKoJREen la ubicación predeterminada enArchivos de programa,


debe otorgar permiso de lectura y ejecución a SQL.

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:

exec sp_configure 'scripts externos habilitados', 1


RECONFIGURAR CON OVERRIDE
300|Mejorando la experiencia del desarrollador

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.

Ahora necesitas crear un idioma externo.javaextension.dllestá en elBINNdirectorio en elinstalar


directorio del servidor SQL después de instalar las extensiones. Tome este archivo, póngalo en un
CREMALLERAarchivo y consúltelo. Puse elCREMALLERAarchivo en mi directorio de desarrollo. Hay
más información disponible en los documentos de Microsoft:https://docs.microsoft.com/en-us/ sql/t-
sql/statements/create-external-language-transact-sql?view=sqlallproductsallversions .

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í:

- - Crear bibliotecas externas CREAR

SDK DE BIBLIOTECA EXTERNA

DESDE (CONTENIDO = 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL20191600\


MSSQL\Binn\mssql-java-lang-extension.jar')
CON (IDIOMA = 'Java'); IR

Programa de muestra

Usando el compilador de línea de comandos de Java, crearemos una extensión y compilaremos y


cargaremos la biblioteca en SQL Server.

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.

Cree una base de datos y una tabla para realizar pruebas:

CREAR BASE DE DATOS SQL2019Java

GO
Extensiones de lenguaje Java |301

UTILIZAR SQL2019Java

IR
CREAR TABLA TestJava (
identificación int NO NULA,

Nombre completo nvarchar(100) NO NULO

)
IR

Inserta algunos datos:

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

Copie el siguiente código en un archivo llamadoNombreSplit.java:

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.*;

la clase pública NameSplit extiende AbstractSqlServerExtensionExecutor {


patrón privado expr;

nombre público dividido() {

// Configura la versión de extensión esperada y la clase que se usará para el conjunto de


datos de entrada y salida

executorExtensionVersion = SQLSERVER_JAVA_LANG_EXTENSION_V1;
executorInputDatasetClassName = PrimitiveDataset.class.getName();
302|Mejorando la experiencia del desarrollador

executorOutputDatasetClassName = PrimitiveDataset.class.getName();
}

ejecución pública de PrimitiveDataset (entrada de PrimitiveDataset,


LinkedHashMap<String, Object> parámetros) {

// Validar los parámetros de entrada y el esquema de la columna de

entrada validarInput(input, params);

int[] inIds = input.getIntColumn(0); Cadena[]


inValues = input.getStringColumn(1); int
rowCount = inValues.length;

String delimchar = (String)params.get("delimchar"); //


expr = Pattern.compile(regexExpr);

System.out.println("delimitador: " + delimchar);

// Listas para almacenar los datos de salida LinkedList<Integer>


outIds = nueva ListaEnlazada<Integer>(); Lista enlazada<String>
outVal1 = nueva ListaEnlazada<String>(); Lista enlazada<String>
outVal2 = nueva ListaEnlazada<String>();

// Evaluar cada fila


para(int i = 0; i < rowCount; i++) {
outIds.add(inIds[i]);
if(inValues[i].contiene(delimchar)) {
String[] vals = inValues[i].split(Pattern.quote(delimchar));
outVal1.add(vals[0]);
outVal2.add(vals[1]);
}
demás {

outVal1.add(inValues[i]); // simplemente genera la cadena de entrada en


Extensiones de lenguaje Java |303

valor1

outVal2.add("");
}

int salidaRowCount = outIds.size();

int[] idOutputCol = nuevo int[outputRowCount]; Cadena[]


val1OutputCol = nueva Cadena[outputRowCount]; Cadena[]
val2OutputCol = nueva Cadena[outputRowCount];

// Convierte la lista de columnas de salida en matrices


outVal1.toArray(val1OutputCol);
outVal2.toArray(val2OutputCol);

ListIterator<Integer> it = outIds.listIterator(0); int ID de


fila = 0;

System.out.println("Datos de salida:");

mientras (it.hasNext()) {
idOutputCol[rowId] = it.next().intValue();

System.out.println("ID: " + idOutputCol[rowId] + " Val1: " +


val1OutputCol[rowId] + " Val2: " + val2OutputCol[filaId]);
ID de fila++;

// Construir el conjunto de datos de salida


PrimitiveDataset salida = new PrimitiveDataset();
304|Mejorando la experiencia del desarrollador

salida.addColumnMetadata(0, "ID", java.sql.Types.INTEGER, 0, 0);


salida.addColumnMetadata(1, "P1", java.sql.Types.NVARCHAR, 0, 0);
salida.addColumnMetadata(2, "P2", java.sql.Types.NVARCHAR, 0, 0);

salida.addIntColumn(0, idOutputCol, nulo);


salida.addStringColumn(1, val1OutputCol);
salida.addStringColumn(2, val2OutputCol);

salida de retorno;

Private void validarInput (entrada PrimitiveDataset, LinkedHashMap<String, Object>


parámetros) {
// Verifique el parámetro de entrada de la expresión
regular if (params.get("delimchar") == null) {
throw new IllegalArgumentException("Parámetro de entrada "delimchar"
no se encuentra ");

}
else if (params.get("delimchar").toString().length() != 1) {

throw new IllegalArgumentException("Parámetro de entrada "delimchar"


debe ser un solo carácter");
}

// El esquema de entrada esperado debe tener al menos 2 columnas (INTEGER,


CADENA)

si (input.getColumnCount() < 2) {
throw new IllegalArgumentException("Esquema de entrada inesperado,
el esquema debe ser (INTEGER, NVARCHAR o VARCHAR)");
}

// Compruebe que los tipos de columnas de entrada sean los esperados

if (input.getColumnType(0) != java.sql.Types.INTEGER &&


Extensiones de lenguaje Java |305

(input.getColumnType(1) != java.sql.Types.VARCHAR && entrada.


getColumnType(1) == java.sql.Types.NVARCHAR )) {
throw new IllegalArgumentException("Esquema de entrada inesperado,
el esquema debe ser (INTEGER, NVARCHAR o VARCHAR)");
}
}

verificación booleana privada (texto de cadena) {

Emparejador m = expr.matcher(texto);

devolver m.find();
}
}
Puedes compilar esto usando eljavaccomando con elTARRO SDKarchivo de la siguiente manera:

javac -cp mssql-java-lang-extension.jar NombreSplit.java

Crea un directorio llamadopaquetey copiar el compiladoNombreDividir.clasearchiva allí.

ElfrascoEl comando empaquetará la clase que se cargará en SQL Server. El archivo


resultante esNombreSplit.jar:
jar -cf NameSplit.jar paquete\NameSplit.clase

Ahora crea unEXTERNObiblioteca de su programa:


CREAR división de nombres de BIBLIOTECA EXTERNA

DESDE (CONTENIDO = 'C:\Projects\SQL2019Java\namesplit.jar')


CON (IDIOMA = 'Java');
IR

Si la biblioteca ya existe, puede eliminarla conSOLTAR división de nombres de la BIBLIOTECA EXTERNA.

Accederemos a la biblioteca mediante un procedimiento almacenado:

CREAR O ALTERAR EL PROCEDIMIENTO [dbo].[java_namesplit]

@delim nvarchar(1),

@querynvarchar(400)
COMO
COMENZAR
306|Mejorando la experiencia del desarrollador

- - El método invocado en Java, el método "ejecutar" método


EXEC sp_execute_external_script
@idioma = N'Java'
, @script = N'pkg.NameSplit
, @input_data_1 = @consulta
, @params = N'@delimchar nvarchar(1)'
, @regexExpr = @expr
con conjuntos de resultados ((ID int, P1 nvarchar(100), P2 nvarchar(100)));
FIN
IR

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

Deberías obtener esto:

Figura 10.7: Datos de nuestra tabla de prueba

Éste es un repaso rápido de cómo crear unJavaextensión. Otro ejemplo se puede


encontrar enhttps://docs.microsoft.com/en-us/sql/language-extensions/tutorials/search-
forstring-using-regular-expressions-in-java?view=sqlallproducts-allversions .
JSON |307

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.

¿Por qué utilizar 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',

sensor1 int '$.devicedata.sensor1',


sensor2 int '$.devicedata.sensor2', fecha
del evento fecha y hora '$.eventdate'
)
Ahora,crearuna tabla SQL e inserte los datos JSON analizados en la tabla:
crear tabla IOTData (ID de dispositivo int, sensor1 int, sensor2 int, fecha y hora del
evento)

insertar en IOTData
seleccionar *

de OpenJson (@DeviceJson)
Soporte UTF-8 |309

con (id de dispositivo int '$.id de dispositivo',

sensor1 int '$.devicedata.sensor1',


sensor2 int '$.devicedata.sensor2', fecha
del evento fecha y hora '$.eventdate'
)
Finalmente, lea los datos SQL y conviértalos a JSON usando elPARA JSONfunción:
seleccione ID de dispositivo, sensor1 como "datos del dispositivo.sensor1", sensor2 como "datos del dispositivo".
sensor2", fecha del evento

de IOTData
PARA LA RUTA JSON

Si reformatea un poco el resultado, es idéntico a los datos originales:


[
{"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"}

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.

¿Por qué UTF-8?

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.

Por ejemplo,CREARaMESAcon unvarcharcampo:


CREAR TABLA [dbo].[TestUTF8](
[id] [int] IDENTIDAD(1,1) NO NULO,
[utfdata] [varchar](50) NULO
) EN [PRIMARIO]
IR
ElvarcharEl campo se crea con un<valor predeterminado de la base de datos>colación.
SQL_Latin1_General_CP1_CI_ASes la intercalación predeterminada de la base de datos si no se cambia.

Ahora puede modificar una columna y establecer su intercalación en UTF-8 con unalterardeclaración como
esta:

ALTER TABLE TestUTF8 ALTER COLUMN utfdata varchar(50) COLLATE Latin1_


General_100_CI_AS_SC_UTF8

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.

Puede encontrar más información aquí:https://docs.microsoft.com/en-us/sql/relacional-


databases/collations/collation-and-unicode-support?view=sqlallproductsallversions .

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:

Figura 10.8: Estructura de la tabla temporal

¿Por qué tablas temporales?

Algunos casos de uso de tablas temporales son los siguientes:

• Registro de auditoría: mantenga un registro completo de los cambios en la tabla.

• 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.

• Detectar cambios: compare los datos actuales y anteriores más fácilmente.

Ejemplo de tabla temporal

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

Como ejemplo, el siguiente script creamiTablaTemporal:


CREAR TABLA miTablaTemporal (

id int no nulo, myText


varchar(50) nulo,

SysStartTime datetime2(7) GENERADO SIEMPRE COMO FILA INICIO NO NULO,

SysEndTime datetime2(7) GENERADO SIEMPRE COMO FINAL DE FILA NO NULO,

PERIODO PARA SYSTEM_TIME(SysStartTime,SysEndTime),

RESTRICCIÓN PK_myTemporalTable CLAVE PRIMARIA (id)

)
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.

HISTORIAL_TABLEes la tabla nueva o existente que contendrá datos históricos

DATA_CONSISTENCY_CHECK = ACTIVADOrealiza varias comprobaciones para asegurarse de que los datos y


la estructura de la tabla de historial sean correctos y coherentes tanto en el momento de la creación como en
el tiempo de ejecución. Más información se puede encontrar enhttps://docs.microsoft.com/en-us/sql/
relationaldatabases/tables/temporal-table-system-consistency-checks?view=sql-server-2017 .

Ahora, si inserta algunos datos, espere un momento y luego actualice el valor.


Tablas temporales |313

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>

• DESDE <start_date_time> PARA <end_date_time>


• ENTRE <start_date_time> Y <end_date_time>
• CONTENIDO EN (<start_date_time> , <end_date_time>)
• TODO

Por ejemplo, para recuperar todos los datos históricos, utilice esta declaración:

seleccione * de myTemporalTable para system_time todo

Para recuperar datos de un momento específico, puede utilizar una consulta como esta:

seleccione * de myTemporalTable para system_time a partir de '2019-05-17 23:35'


314|Mejorando la experiencia del desarrollador

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:

Figura 10.9: La tabla temporal ampliada

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!

Para obtener más información, vaya ahttps://docs.microsoft.com/en-us/sql/


relationaldatabases/tables/temporal-tables?view=sqlallproducts-allversions .

Tipos de datos espaciales

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

¿Por qué tipos de datos espaciales?

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.

El identificador espacial que utilice dependerá de su ubicación y sus necesidades. Cada


identificador especifica la forma del sistema de coordenadas espaciales.

Para obtener una lista completa de identificadores en su sistema, utilice esta consulta:

seleccione * de sys.spatial_reference_systems

El identificador especial que usaremos,4326, tiene esta definición:

GEOGCS["WGS 84", DATUM["Sistema Geodésico Mundial 1984", ELLIPSOID["WGS 84",


6378137, 298.257223563]], PRIMEM["Greenwich", 0], UNIDAD["Grado",
0.017453292519 9433 ]]

Ejemplo de localizador de distribuidores

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.

Crear unDistribuidorestabla y complete la latitud y longitud. Tenga en cuenta que elDistribuidorGeoEl


campo es delgeografíatipo:

crear tabla de distribuidores (DealerName nvarchar(50), latitud flotante, longitud flotante,


geografía DealerGeo)

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)

('Distribuidor en Deerfield Beach FL', 26.3109,-80.1005),


('Distribuidor en Watertown, MA', 42.3702,-71.1777)
316|Mejorando la experiencia del desarrollador

A continuación actualizamos elDistribuidorGeocampo basado en lalatitudylongitud. Esto almacena un


geografía"punto" en elDealerGeo GEOGRAFÍAcampo:

actualizar Distribuidores establecer DealerGeo = geografía::STGeomFromText('POINT(' +


CAST(longitud AS VARCHAR(20)) + ' ' + CAST(latitud AS VARCHAR(20)) + ')', 4326)

donde la longitud no es nula y la latitud no es nula y dealergeo es nulo Si echas un


vistazo aDistribuidoresEn la tabla se puede ver el formato del punto geográfico:
seleccione * de Distribuidores

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:

- - Definir un cliente potencial en Connecticut


Declarar la geografía @customerPoint
establecer @customerPoint = geografía::STGeomFromText('PUNTO(-72.6791 41.8596)',
4326)

La consulta utiliza el espacio.STDistanciaFunción y convierte de metros a millas. El resultado


es una lista de distribuidores con sus distancias al usuario:
seleccione la ronda de 10 mejores (@customerPoint.STDistance(dealergeo)/1609.344,1) como Distancia
en millas, Nombre del distribuidor

de distribuidores

ordenar por @customerPoint.STDistance(dealergeo)/1609.344


Tipos de datos espaciales |317

ElseleccionarLa consulta SQL anterior dará como resultado el siguiente resultado:

Figura 10.10: Salida de la consulta SQL seleccionada

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 .

Si desea probar alguna de las técnicas que se muestran en este libro,


empezar con unPrueba gratuita de 180 días de SQL Server 2019
Almacenamiento de datos
11
SQL Server lleva muchos años ofreciendo capacidades líderes en la industria para la carga de trabajo del
almacén de datos moderno. Las funciones de seguridad de misión crítica integradas en cada edición de SQL
Server, como seguridad a nivel de fila, Always Encrypted, enmascaramiento de datos y otras, garantizan que sus
datos estén seguros en todo momento. Los análisis avanzados integrados que utilizan R y Python le permiten
poner en funcionamiento sus modelos de ciencia de datos de una manera segura y eficaz. SQL Server también
ofrece un rendimiento líder en la industria basado en los puntos de referencia TPC-E y TPC-H para cargas de
trabajo de almacenamiento de datos de 3 TB y 10 TB (https://cloudblogs.microsoft.com/sqlserver/2019/05/16/
sql-server-2017-achieves-toptpc-benchmarks-for-oltp-and-dw-on-linux-and-windows/ ). Por todo esto, SQL
Server es un líder indiscutible y una plataforma confiable para organizaciones de todo el mundo para cargas de
trabajo de almacenamiento de datos tanto en las instalaciones como en la nube.
320|Almacenamiento de datos

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.

Soluciones de extracción, transformación y carga con SQL Server Integration

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

Mejores prácticas para cargar su almacén de datos con SSIS

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

• Evite utilizar la transformación del comando OLE DB para cargar dimensiones: La


transformación del comando OLE DB se usa comúnmente en escenarios de carga de almacenes de
datos para manejar dimensiones que cambian lentamente. Sin embargo, se recomienda evitar el
uso de la transformación del comando OLE DB, ya que la transformación del comando OLE DB
ejecuta una instrucción SQL para cada fila del búfer. Esto significa que si su tarea de flujo de datos
actualiza 100 000 filas en una tabla de dimensiones, su transformación de comando OLE DB
ejecutará la instrucción SQL incorporada 100 000 veces, lo que puede degradar drásticamente el
rendimiento del paquete e impactar negativamente el registro de transacciones de la fuente de
datos. Un mejor patrón es usar la tarea de flujo de datos para cargar los datos en una tabla
provisional y luego usar una tarea de ejecución SQL para realizar la actualización de la tabla de
dimensiones.

Índices de almacén de columnas agrupados

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

de datos sin comprimir.

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

beneficios del índice del almacén de columnas incluyen los siguientes:

• 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:

CREAR TABLA T1(

ProductKey [int] NO NULO,

OrderDateKey [int] NO NULO,

DueDateKey [int] NO NULO,

ShipDateKey [int] NO NULL);

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

al mismo tiempo que simplifica el mantenimiento de grandes volúmenes 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 .

Consulte el siguiente artículo para aprender cómo crear funciones de partición y


esquemas de partición y luego aplicarlos a una tabla e índice:https://docs.microsoft.
com/en-us/sql/relational-databases/partitions/create-partitioned-tables-andindexes?
view=sql-server-ver15 .

Gestión de índices en línea


SQL Server 2019 introduce la creación de índices en línea reanudables además de la reconstrucción. La opción en
línea admite el acceso simultáneo de usuarios a la tabla subyacente o a los datos del índice durante las operaciones
de índice en línea. Las operaciones de índice en línea se recomiendan para entornos empresariales que requieren
actividad simultánea de los usuarios durante las operaciones de índice para cargas de trabajo que están en línea las
24 horas del día y los 7 días de la semana.
326|Almacenamiento de datos

ElEN LÍNEALa opción está disponible en las siguientes declaraciones T-SQL:

• CREAR ÍNDICE
• ALTERAR ÍNDICE

• ÍNDICE DE CAÍDA

• ALTERAR TABLA(para agregar o quitarÚNICOoCLAVE PRIMARIArestricciones con elAgrupado opción


de índice)

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.

Habilitar el procesamiento DML en línea

Para realizar operaciones de indexación en línea, el usuario requiereALTERARpermiso en la mesa o vista.

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.

2. Ampliar elÍndicescarpeta debajo de la tabla en la que necesita habilitar las operaciones de


índice en línea.

3. Ampliar elÍndicescarpeta y haga clic derecho en el índice deseado. Hacer clicPropiedades.

4. En Seleccionar una página, seleccioneOpciones.

5. SeleccionePermitirprocesamiento DML en línea y luego seleccioneVerdadero.


Gestión de índices en línea |327

6. Haga clicDE ACUERDO:

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

ALTERAR ÍNDICE [cci_FactResellerSales] ON [dbo].[FactResellerSales]


RECONSTRUIR PARTICIÓN = TODO CON (EN LÍNEA = ON)

Reanudar la creación o reconstrucción del índice en línea

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.

• Una base de datos se queda sin espacio en disco.

• 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.

ElRESUMIBLEEl argumento se especifica en el DDL de la instrucción de creación o reconstrucción del índice en


lugar de en los metadatos del índice deseado, como se muestra en el siguiente ejemplo. Para especificar una
operación DDL como reanudable, elEN LÍNEAEl argumento también debe establecerse enEN:

USAR [AdventureWorks2017] IR

CREAR ÍNDICE ÚNICO NO CLUSTERADO [AK_Employee_LoginID] EN [HumanResources].


[Empleado]
(
[ID de inicio de sesión] ASC

) CON (EN LÍNEA = ACTIVADO, REANUDABLE = ACTIVADO) EN [PRIMARIO]

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

ALTERAR ÍNDICE [AK_Employee_LoginID] ON

[Recursos Humanos].[Empleado] PAUSA


Gestión de índices en línea |329

Reejecutando el originalCREARoRECONSTRUIRLa declaración reanuda automáticamente una operación de


creación de índice pausada.

Para cancelar la operación de índice, utilice elABORTARdominio.

Cree y reconstruya índices de almacén de columnas agrupados en línea

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

CREAR ÍNDICE DE COLUMNSTORE AGRUPADO


cci_FactResellerSales EN [dbo].[FactResellerSales]
CON (EN LÍNEA = ENCENDIDO);

USAR [AdventureWorksDW2017]

IR

ALTERAR ÍNDICE cci_FactResellerSales


ON [dbo].[FactResellerSales]
RECONSTRUIR CON (EN LÍNEA = ON);

Uso de ALTERAR LA CONFIGURACIÓN DEL ALCANCE DE LA BASE DE DATOS

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.

UsarALTERAR LA CONFIGURACIÓN DEL ALCANCE DE LA BASE DE DATOSpara establecer el comportamiento predeterminado

para operaciones en línea y reanudables enAPAGADO,FAIL_UNSUPPORTED, oCUANDO_SOPORTADO.


330|Almacenamiento de datos

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

ALTERAR LA CONFIGURACIÓN DEL ALCANCE DE LA BASE DE DATOS SET ELEVATE_ONLINE = WHEN_SUPPORTED

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

ALTERAR LA CONFIGURACIÓN DEL ALCANCE DE LA BASE DE DATOS SET ELEVATE_RESUMABLE = FAIL_UNSUPPORTED

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 .

Crear y mantener estadísticas.


El Optimizador de consultas de SQL Server utiliza estadísticas para crear planes de consultas que mejoran el
rendimiento de las consultas. Las estadísticas contienen información estadística sobre la distribución de valores
en una o más columnas de una tabla o vista indexada. El Optimizador de consultas utiliza información estadística
para determinar el número de filas en el resultado de una consulta, lo que permite al Optimizador de consultas
determinar un plan de consulta óptimo. Como tal, las estadísticas actualizadas son cruciales para generar un
plan de consulta óptimo y garantizar un rendimiento excelente.
Creación y mantenimiento de estadísticas |331

Gestionar estadísticas automáticamente

El Optimizador de consultas de SQL Server creará estadísticas automáticamente de dos maneras diferentes:

• Cuando se crea un índice, el Optimizador de consultas creará estadísticas sobre las


columnas clave del índice.

• El Optimizador de consultas creará estadísticas en los predicados de consulta cuando elAUTO_


CREATE_STATISTICSLa opción está configurada enEN.

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

Cuando elAUTO_CREATE_STATISTICSLa opción está configurada enEN, el optimizador de consultas crea


estadísticas para columnas individuales en predicados de consulta para mejorar los planes y el rendimiento de
las consultas. Esto sucede cuando Query Optimizer compila una consulta.

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

ElAUTO_UPDATE_STATISTICS_ASYNCLa opción determina si Query Optimizer utiliza actualizaciones de


estadísticas sincrónicas o asincrónicas. Esta opción se aplica a objetos de estadísticas creados para
índices, columnas individuales en predicados de consulta y estadísticas creadas con elCREAR
ESTADÍSTICASdeclaración. El valor predeterminado para elAUTO_UPDATE_STATISTICS_ASYNCla opción
esAPAGADO, lo que significa que Query Optimizer actualiza las estadísticas de forma asincrónica.

Nota
Para configurarAUTO_UPDATE_STASTICS_ASYNCaEN, ambosAUTO_CREATE_STATISTICS
yAUTO_UPDATE_STATISTICSLas opciones deben configurarse enEN.
332|Almacenamiento de datos

Estadísticas para índices de almacén de columnas

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.

• Considere la posibilidad de utilizar estadísticas sincrónicas si el proceso ETL de su almacén de datos


incluye tablas truncadas o actualizaciones masivas de un gran porcentaje de filas. Esto garantizará que
las estadísticas estén actualizadas antes de ejecutar consultas.

Patrones de almacén de datos modernos en Azure


En el mundo actual, las empresas modernas han reconocido que todos los datos representan un valor
oculto que espera ser desbloqueado por su organización. Los datos existen en todas las formas, tamaños
y formatos y, a menudo, el factor diferenciador entre las empresas más eficientes y exitosas y las menos
exitosas es qué tan bien esas empresas utilizan los datos para impulsar decisiones inteligentes. Cada vez
más empresas reconocen que los datos y la inteligencia tienen poco valor si no podemos gestionarlos
adecuadamente.

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

Introducción al almacén de datos SQL de Azure


Azure SQL Data Warehouse se democratizaprocesamiento masivamente paralelo (MPP) capacidades y
permite a organizaciones de todos los tamaños aprovechar el procesamiento del almacén de datos a escala de
petabytes bajo demanda. SQL Data Warehouse es un almacén de datos empresarial basado en la nube
específicamente creado y optimizado para cargas de trabajo de almacenamiento de datos para sistemas con
cantidades de datos pequeñas o muy grandes. Debido a que SQL Data Warehouse aprovecha los recursos
informáticos y de almacenamiento distribuidos, SQL Data Warehouse permite que las consultas se amplíen y
aprovechen el procesamiento paralelo para consultas analíticas grandes y complejas.

Azure SQL Data Warehouse incluye cuatro componentes que conforman la arquitectura, como se
muestra enFigura 11.3:

Figura 11.3: SQL Data Warehouse incluye cuatro componentes principales

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.

El SLO es una configuración de escalabilidad que determina el costo y el nivel de rendimiento de su


instancia de Azure SQL Data Warehouse. Los niveles de servicio de Azure SQL Data Warehouse Gen 1 se
miden enunidades de almacenamiento de datos (DWU s) y los niveles de servicio de SQL Data
Warehouse Gen 2 se miden encalcular unidades de almacenamiento de datos (cDWU s). Las DWU y las
cDWU representan una forma abstracta y normalizada de medir la CPU, las E/S y la memoria. Cambiar el
SLO de su instancia de SQL Data Warehouse representa un cambio en la DWU o cDWU del almacén de
datos, lo que altera el rendimiento y el costo del 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.

Servicios de movimiento de datos (DMS)

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.

Mejores prácticas para trabajar con Azure SQL Data Warehouse


Seguir las prácticas recomendadas para trabajar con Azure SQL Data Warehouse
garantizará que sus aplicaciones experimenten un rendimiento excelente y que sus
usuarios tengan una experiencia positiva.
Mejores prácticas para trabajar con Azure SQL Data Warehouse |335

Reduzca los costos escalando hacia arriba y hacia abajo

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 .

Utilice PolyBase para cargar datos rápidamente

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

Gestionar las distribuciones de datos.

Una distribución es la unidad básica de almacenamiento y procesamiento de consultas paralelas que se


ejecutan en datos distribuidos. Cuando SQL Data Warehouse ejecuta una consulta, el trabajo se divide en 60
consultas más pequeñas que se ejecutan en paralelo para acceder a los datos, que se distribuyen mediante uno
de tres métodos:

• 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 .

No particionar demasiado los datos

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 .

Usando la fábrica de datos de Azure

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.

Nuevas capacidades en ADF

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.

Diseño sin código

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.

Desarrollo iterativo de tuberías

El entorno de diseño de ADF también incluye la capacidad de desarrollar canalizaciones de forma


iterativa y depurarlas de forma interactiva con la depuración iterativa incorporada.

Horarios flexibles

Programe canalizaciones en un programador de reloj de pared o activadores basados en eventos, o con programaciones de
ventana cambiantes.

Levante y transfiera paquetes SSIS al ADF

ADF proporciona soporte de tiempo de ejecución de integración que le permite elevar y


trasladar sus paquetes SSIS locales existentes a la nube mediante ADF. Allí podrá ejecutar,
programar y monitorear las ejecuciones de sus paquetes SSIS en la nube.

HDInsight Spark bajo demanda y Azure Databricks

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.

Entendiendo el alimentador automático de documentos

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

Copiar datos a Azure SQL Data Warehouse


Para copiar datos desde almacenes de datos locales a Azure, podemos usar Copiar actividad. Copy
Activity admite una amplia variedad de fuentes de datos, incluidos SQL Server, Oracle, MySQL,
Salesforce y archivos.

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.

8. Con la plantilla ahora creada, simplemente necesitamos actualizar Datasets, Datasource1 y


DataDestination1, que se pueden encontrar en la hoja Recursos de fábrica en Conjuntos de datos
. Hacer clicFuente de datos1para seleccionar el conjunto de datos. Ve a laConexiónen
DataSource1 y use la lista desplegable junto a Tabla y seleccione la tabla que desea copiar a Azure
SQL Data Warehouse. Luego ve alEsquemay haga clic en Importar esquema para completar las
columnas y los tipos de datos que se encuentran en la tabla.

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
.

Alojamiento de paquetes SSIS en ADF

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:

• Cómo implementar paquetes SSIS en Azure,https://docs.microsoft.com/en-us/azure/data-


factory/tutorial-create-azure-ssis-runtime-portal : este artículo proporciona instrucciones paso
a paso para crear un IR de Azure-SSIS y utiliza una base de datos de Azure SQL para hospedar
el catálogo de SSIS.

• Cómo crear un entorno de ejecución de integración Azure-SSIS,https://docs.microsoft.com/


en-us/azure/data-factory/create-azure-ssis-integration-runtime : este artículo amplía el
tutorial y proporciona instrucciones sobre cómo usar la instancia administrada de Azure
SQL Database y cómo unirse al IR a una red virtual.

• Cómo monitorear un IR Azure-SSIS,https://docs.microsoft.com/en-us/azure/data-


factory/monitor-integration-runtime#azure-ssis-integration-runtime : este
artículo le muestra cómo recuperar información sobre un IR de Azure-SSIS y
descripciones de los estados en la información devuelta.

• Cómo administrar un IR Azure-SSIS,https://docs.microsoft.com/en-us/azure/datafactory/


manage-azure-ssis-integration-runtime : este artículo le muestra cómo detener, iniciar o
eliminar un IR de Azure-SSIS.

• Cómo unir un IR Azure-SSIS a una red virtual,https://docs.microsoft.com/en-us/azure/


data-factory/join-azure-ssis-integration-runtime-virtual-network : este artículo
proporciona información conceptual sobre cómo unir un IR de Azure-SSIS a una red
virtual de Azure.

Almacenamiento de lago de datos de Azure

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.

Características clave de Azure Data Lake Storage Gen2

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.

Acceso compatible con Hadoop

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.

Un superconjunto de permisos POSIX

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 mediante Azure Databrickshttps://docs.


microsoft.com/en-us/azure/azure-databricks/databricks-extract-load-sql-
datawarehouse

Cómo acceder a Data Lake Storage con Databricks usando Spark,https://docs.


microsoft.com/en-us/azure/storage/blobs/data-lake-storage-use-databricks-spark

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

Ladrillos de datos de Azure

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:

• Realizar operaciones ETL con el fin de limpiar y cargar el almacén de datos.

• Integrar canales de aprendizaje automático en su proceso ETL

• Exploración de datos ad hoc y análisis del almacén de datos.

• 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

Analice datos de transmisión casi en tiempo real con Azure Databricks.https://docs.


microsoft.com/en-us/azure/azure-databricks/databricks-stream-from-eventhubs

Trabajar con datos de streaming en Azure Stream Analytics


Azure Stream Analytics es un motor de procesamiento de eventos que le permite analizar grandes volúmenes de datos
en streaming en tránsito. Se pueden identificar patrones y relaciones en la información extraída de una variedad de
fuentes de entrada, incluidos dispositivos, sensores, sitios web, fuentes de redes sociales y aplicaciones. Los
conocimientos descubiertos se pueden utilizar para desencadenar otras acciones como parte de un flujo de trabajo,
incluida la creación de alertas, la alimentación de información a una herramienta de informes o el almacenamiento de
datos transformados para su uso posterior.
348|Almacenamiento de datos

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

Azure Stream Analytics y partición de salida de blobs personalizada,https://docs.


microsoft.com/en-us/azure/stream-analytics/stream-analytics-custom-
pathpatterns-blob-storage-output

Analizar datos de llamadas telefónicas con Stream Analytics y visualizar resultados en


Power BI,https://docs.microsoft.com/en-us/azure/stream-analytics/stream-
analyticsmanage-job
Análisis de datos mediante Power BI e introducción a Power BI |349

Análisis de datos mediante Power BI e introducción a Power BI


Power BI es un servicio de análisis basado en la nube que le permite conectarse rápida y fácilmente a
sus datos dondequiera que existan. Una vez conectado a sus datos, puede usar Power BI para definir
reglas y lógica para transformar y limpiar sus datos de forma automatizada. Power BI le permite
crear potentes modelos de datos para centralizar relaciones, jerarquías, indicadores clave de
rendimiento, cálculos, roles de seguridad y particiones. Luego, sus usuarios y desarrolladores podrán
crear paneles potentes, flexibles y dinámicos para facilitar un análisis profundo con capacidades
sorprendentes, como consultas en lenguaje natural, aprendizaje automático y visualizaciones
personalizadas.

Comprender el ecosistema de Power BI


Escritorio Power BI

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

Power BI Premium es un complemento de Power BI y proporciona recursos dedicados y mejorados


para ejecutar el servicio Power BI para su organización. Power BI Premium proporciona una
infraestructura dedicada para sus cargas de trabajo de Power BI, lo que proporciona mayor escala y
rendimiento, licencias flexibles basadas en capacidad, compatibilidad con la residencia de datos por
geografía, unificación de autoservicio y BI empresarial, y BI local con Power BI Report. Servidor.

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 .

Puerta de enlace de Power BI

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

Aplicaciones móviles de Power BI

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
.

Servidor de informes de Power BI

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

Conexión de Power BI al almacén de datos SQL de Azure

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

Introducción a los modelos tabulares.

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

Introducción a los modelos multidimensionales.


Los modelos multidimensionales de SQL Server Analysis Services utilizan estructuras cúbicas para analizar y
explorar datos en todas las dimensiones. El modo multidimensional es el modo de servidor predeterminado
para SQL Server Analysis Services e incluye un motor de consulta y cálculo paraprocesamiento analítico en
línea (OLAP ) datos con múltiples modos de almacenamiento para equilibrar el rendimiento con los requisitos
de escalabilidad de los datos:

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

Los usuarios normalmente consultarán un modelo multidimensional utilizando herramientas de 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.

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 .

Mejoras en modo tabular


SQL Server 2019 Analysis Services y AAS incluyen nuevas características y capacidades para
soportar mejor los requisitos empresariales. En esta sección, revisaremos las siguientes
mejoras y capacidades incluidas en la última versión de Analysis Services para ayudarlo a crear
mejores soluciones de análisis:

• Configuración de memoria para la gestión de recursos

• Grupos de cálculo

• Cadenas de formato dinámico

• Consulta directa

• Filtrado cruzado bidireccional

• Relaciones de muchos a muchos

• Intercalado de consultas con sesgo de consulta corta

• Configuración de gobernanza para actualizaciones de caché de Power BI

• Adjuntar en línea
360|Servicios de análisis

Intercalado de consultas con sesgo de consulta corta

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 .

Configuración de memoria para la gobernanza de recursos

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:

• Memoria\QueryMemoryLimit: ElLímite de memoria de consultaLa propiedad es una propiedad


avanzada que se utiliza para controlar cuánta memoria pueden utilizar los resultados temporales
durante una consulta. Esto solo se aplica a consultas y medidas DAX y no tiene en cuenta las
asignaciones de memoria generales utilizadas por la consulta. El valor predeterminado para esta
propiedad es 0, lo que indica que no se ha especificado ningún límite. Un valor especificado entre 1 y
100 indica un porcentaje de memoria. Los números mayores que 100 se interpretan como números de
bytes. Esta propiedad se puede configurar utilizando la última versión deSSMSpara acceder al cuadro
de diálogo Propiedades del servidor de análisis.

• 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:

Proveedor=MSOLAP.8;Seguridad integrada=SSPI;Información de seguridad persistente=True;Catálogo


inicial=Adventure Works;Fuente de datos=localhost;Propiedades
extendidas="DbpropMsmdRequestMemoryLimit=10000";Compatibilidad MDX=1;Opciones de
seguridad=2;Falta MDX Modo de miembro=Error;Actualizar nivel de aislamiento=2
Mejoras en modo tabular |361

• OLAP\Query\RowsetSerializationLimit: La propiedad del servidor RowsetSerializationLimit


limita el número de filas devueltas en un conjunto de filas a los clientes. Esta propiedad se aplica
tanto a DAX como a MDX y se puede utilizar para proteger los recursos del servidor del uso
extensivo de exportación de datos. El valor predeterminado para esta propiedad es -1, lo que
indica que no se aplica ningún límite. Cuando se envía una consulta que excede el valor definido
para RowsetSerializationLimit, la consulta se cancela y se devuelve un error. Esta propiedad se
puede configurar utilizando la última versión de SSMS para acceder al cuadro de diálogo
Propiedades del servidor.

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:

Tabla 12.3: Nuevas funciones DAX


362|Servicios de análisis

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 .

Cadenas de formato dinámico

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:

Tabla 12.4: La función DAX agregada

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.

• La seguridad se puede gestionar en el RDBMS.

• Analysis Services puede realizar optimización para fórmulas complejas para


garantizar que el plan de consulta ejecutado en el RDBMS sea lo más eficiente
posible.

En SQL Server 2019, las siguientes fuentes de datos son compatibles con DirectQuery:

• SQL Server 2008 y posteriores

• Base de datos SQL de Azure

• Almacén de datos SQL de Azure

•Microsoft SQLSistema de plataforma de análisis (APS )

• Bases de datos relacionales Oracle 9i y posteriores

• Teradata V2R6 y bases de datos relacionales posteriores


364|Servicios de análisis

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 de DirectQuery tienen las siguientes restricciones funcionales:

• 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.

• Las tablas calculadas no son compatibles con los modelos DirectQuery.

• 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, Analysis Services convierte fórmulas DAX y definiciones de medidas


calculadas en declaraciones SQL. Las fórmulas DAX que contienen elementos que no se pueden
convertir a sintaxis SQL devolverán errores de validación en el modelo. Esto podría dar lugar a
que sea necesario reescribir algunas fórmulas de cálculo para utilizar una función diferente o
para solucionar la limitación mediante el uso de una columna derivada.
Mejoras en modo tabular |365

• 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.

Considere las siguientes limitaciones de MDX:

• Todos los nombres de objetos deben estar completamente calificados.

• No se admiten declaraciones MDX con ámbito de sesión, aunque sí se admiten


construcciones con ámbito de consulta.

• No hay jerarquías definidas por el usuario.

• No se admiten consultas SQL nativas.

• No hay tuplas con miembros de diferentes niveles en cláusulas de subselección MDX.

Considere las siguientes recomendaciones y mejores prácticas:

• 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.

• Habilitar elConfíe en la integridad referencialopción sobre relaciones en un modelo usando


DirectQuery. Esto garantizará que las consultas generadas por Analysis Services utilicen una
combinación interna en lugar de una combinación externa.

• 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

• Revise siempre los beneficios y limitaciones de DirectQuery mencionados anteriormente


antes de tomar la decisión de utilizar el modo DirectQuery. Revise la siguiente
documentación para obtener más información sobre el modo DirectQuery:https://
docs.microsoft. com/en-us/sql/analysis-services/tabular-models/directquery-mode-
ssastabular?view=sql-server-ver15 .

• Lea la siguiente documentación para comprender los problemas de compatibilidad de


fórmulas DAX en el modo DirectQuery:https://docs.microsoft.com/en-us/sql/
analysisservices/tabular-models/dax-formula-compatibility-in-directquery-mode-
ssas-2016?view=sql-server-ver15 .

Filtrado cruzado bidireccional

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.

El filtrado cruzado bidireccional permite que los contextos de filtrado se propaguen de


una tabla a otra en el lado opuesto de una relación complementaria:

Figura 12.6: Filtrado cruzado bidireccional


Mejoras en modo tabular |367

Para habilitar el filtrado cruzado bidireccional, configure elDirección del filtropropiedad a<<A ambas
tablas>>:

Figura 12.7: Configuración de la propiedad de dirección del filtro

Relaciones de muchos a muchos

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

Configuración de gobernanza para actualizaciones de caché de Power BI

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

actualizaciones de caché en segundo plano, especifique0para esta configuración.

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.

• Formato: Puede conservar pestañas y varias líneas presionandoAlt.+Ingresaren su expresión para


mejorar la legibilidad. También puedes incluir una línea de comentario escribiendo// como prefijo
de tu comentario.

• 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.

• Conservación de fórmula incompleta: En un modelo configurado en el nivel de compatibilidad


1200 o superior, puede ingresar una fórmula incompleta, guardar y cerrar el modelo y luego
regresar a su trabajo más adelante.
370|Servicios de análisis

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.

Para crear un cálculo básico utilizando elSUMA,AVG,CONTAR,CUENTA DISTINTA,MÁXIMO, o MÍNIMO


funciones, primero seleccione la columna que desea agregar. Luego, haga clic en elColumna menú,
seleccioneAutosumay luego seleccione el método de agregación que desea utilizar, como se muestra en
la siguiente captura de pantalla:

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:

=CALCULAR(SUM('Ventas por Internet'[Monto de ventas]),DATESYTD('Fecha'[Fecha]))


Traducido del inglés al español - www.onlinedoctranslator.com

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 ver un ejemplo de cómo crear un KPI, consulte el siguiente artículo:https://docs.


microsoft.com/en-us/sql/analysis-services/tabular-models/create-and-managekpis-
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 una tabla de fechas personalizada usando elCALENDARIO()oCALENDARAUTO()funciones

• Crear tablas separadas basadas en una sola tabla como una tabla de dimensiones de juego de roles

• Crear un conjunto de filas filtrado con un subconjunto o superconjunto de columnas de tablas


existentes
Presentamos DAX |373

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:

=SUMMARIZECOLUMNS(Geografía[Nombre de la provincia del

estado], 'Fecha'[Año calendario]

, "Cantidad de ventas" , SUM('Ventas por Internet'[Importe de ventas])

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

a los miembros del rol


Presentamos DAX |375

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 .

Mejores prácticas de cálculo DAX

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.

• Si experimenta un rendimiento deficiente al desarrollar cálculos en Visual Studio, puede


beneficiarse configurando el modo de recálculo en manual para evitar que los cálculos se
vuelvan a calcular automáticamente durante el desarrollo. Para configurar el modo de
recálculo en manual en Visual Studio, navegue hasta la páginaModelomenú, seleccione
Opciones de cálculoy luego seleccioneCálculo manual.

• 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

Escribir consultas DAX


Una vez que el modelo tabular se ha implementado en el servidor, el modelo puede ponerse a disposición de los
usuarios para su uso con aplicaciones de herramientas cliente. Los usuarios que se conectarán a la base de datos
tabular deben ser miembros de un rol de seguridad que tenga acceso de lectura.

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

En el siguiente ejemplo, se conectará a una base de datos tabular de Analysis Services


mediante SSMS y luego emitirá varias consultas:

1. AbiertoSSMS. En elConectar al servidorcuadro de diálogo, seleccioneServicios de análisis para


el tipo de servidore ingrese el nombre para Nombre del servidor. Si se conecta a SQL Server
Analysis Services, seleccioneAutenticación de Windows para el método de autenticación. Si
se conecta a Azure Analysis Services, seleccioneActive Directory – Contraseña o Active
Directory – Universal con soporte MFA. Hacer clicConectar.
Escribir consultas DAX |377

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:

Figura 12.12: Escribir una consulta DAX usando SSMS

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:

Figura 12.13: La función Evaluar devuelve una tabla


378|Servicios de análisis

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(

'Ventas por Internet'[Número de pedido de venta],


'Ventas por Internet'[Fecha del pedido],
"Margen de beneficio",[Margen de beneficio], "Relación de margen de

beneficio",[Relación de margen de beneficio])

)
ORDENAR POR 'Ventas por Internet'[Número de pedido de venta]
Usando variables en DAX |379

Debería obtener el siguiente resultado:

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 .

Usando variables en DAX


Las expresiones DAX de Analysis Services también admiten el uso de variables para simplificar expresiones
complejas separando una sola expresión en una serie de expresiones más fáciles de entender. Como se
mencionó anteriormente, las variables también permiten que una expresión DAX determinada reutilice la
lógica dentro de la misma expresión, lo que podría mejorar el rendimiento de las consultas.

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:

NOMBRE DE LA VARIABLE = VALOR DEVUELTO


380|Servicios de análisis

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()

Introducción a los servicios de análisis de Azure

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.

Seleccionar el nivel correcto

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

Ampliar, reducir, pausar, reanudar y ampliar


Además de las características empresariales mencionadas anteriormente, AAS también le brinda la
posibilidad de ampliar, reducir o incluso pausar su servidor de Analysis Services mediante el portal
de Azure o sobre la marcha con PowerShell, lo que significa que solo paga por lo que usa. . La
capacidad de ampliar, reducir, pausar y reanudar brinda a los clientes la flexibilidad de escalar según
la demanda del usuario y obtener el nivel correcto de recursos en el nivel apropiado cuando sea
necesario.

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 .

Conexión a sus datos donde viven


AAS admite una amplia variedad de fuentes de datos. AAS puede conectarse directamente a fuentes de
datos de Azure, como Azure SQL Database, Azure SQL Data Warehouse, Azure Blob Storage y Azure
Cosmos DB. Para admitir la conectividad a orígenes de datos locales u otros orígenes de datos
protegidos en Azure con una red virtual de Azure, se requiere una puerta de enlace de datos local para
facilitar la conectividad detrás del firewall. Los tipos de orígenes de datos admitidos dependen de
factores como el nivel de compatibilidad del modelo, los conectores de datos disponibles, el tipo de
autenticación, los proveedores y la compatibilidad con la puerta de enlace de datos local.

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

Asegurando sus datos

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 .

Usando herramientas familiares

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

Monitoreo y diagnóstico integrados


Una parte importante de cualquier solución de Analysis Services es monitorear el rendimiento de sus servidores.
Con los registros de diagnóstico de Azure, puede monitorear y enviar registros a Azure Storage, transmitir
registros a Azure Event Hubs y exportar registros a Azure Monitor. Usando Eventos extendidos (xEventos ),
todos los eventos de Analysis Services se pueden capturar y dirigir a consumidores específicos.

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 .

Consulte el siguiente artículo y tutorial para comprender cómo configurar el registro de


diagnóstico para AAS:https://docs.microsoft.com/en-us/azure/analysis-services/analysisservices-
logging .

Aprovisionamiento de un servidor de Azure Analysis Services e implementación de un modelo tabular

En este ejemplo, explicaremos la configuración de un servidor AAS mediante Azure Portal y la


implementación de una base de datos de Analysis Services mediante Visual Studio:

1. Inicie sesión en el portal de Azure usandohttps://portal.azure.com .

2. Haga clic en elCrear un recursobotón en la parte superior izquierda. BuscarServicios de análisis


y haga clicCrear.

3 enServicios de análisis, complete el campo requerido y haga clicCrear. Normalmente, solo


lleva uno o dos minutos crear el servidor AAS:

Nombre del servidor: un nombre único utilizado para hacer referencia a su servidor de Analysis Services.

Suscripción: la suscripción de Azure a la que se asociará el servidor.

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.

Nivel de precios: seleccione el nivel de precios y el plan.

Administrador: Defina el administrador del servidor mediante Azure Active Directory.


Introducción a los servicios de análisis de Azure |385

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.

Caducidad de la clave de almacenamiento: Opcionalmente, especifique un período de vencimiento de la clave de almacenamiento:

Figura 12.15: Utilice Azure Portal para crear un servidor AAS


386|Servicios de análisis

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:

Figura 12.16: Copie el nombre del servidor a su portapapeles

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

propiedades. Hacer clicDE ACUERDO:

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.

SSRS versus servidor de informes Power BI


Si bien SSRS se introdujo con el lanzamiento de SQL Server 2005, la primera versión de Power BI
Report Server estuvo disponible de forma general en junio de 2017. Power BI Report Server incluye
un superconjunto de características de SSRS. Esto significa que todo lo que puede hacer en SSRS se
puede hacer con Power BI Report Server más la capacidad adicional de distribuir informes
interactivos tipo panel a través del portal web de informes.
390|Servidor de informes de Power BI

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:

1.Power BI Premium: Power BI Premium, tratado anteriormente enCapítulo 11,


Almacenamiento de datos, de este libro, incluye capacidad dedicada para ejecutar su carga
de trabajo de Power BI en la nube. Al comprar Power BI Premium, una organización obtiene
automáticamente los derechos para implementar Power BI Report Server en una cantidad
equivalente de núcleos locales o en Azure.

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

Informar tipos de contenido

Power BI Report Server incluye los siguientes tipos de contenido de informes:

• 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

Migración de informes paginados existentes a Power BI Report Server


Debido a que Power BI Report Server incluye un superconjunto de capacidades de SSRS,
migrar de SSRS a Power BI Report Server es una excelente opción para permitir que una
organización modernice su entorno SSRS. Hay varios motivos por los que puede optar por
migrar sus entornos SSRS a Power BI Report Server:

• Desea aprovechar la funcionalidad exclusiva de Power BI Report Server, incluidos


informes de Power BI interactivos y flexibles.
Migración de informes paginados existentes a Power BI Report Server |393

• Debe migrar desde una versión heredada de SSRS a Power BI Report Server para garantizar
que su aplicación sea compatible.

• Le gustaría aprovechar el ciclo de lanzamiento frecuente de Power BI Report Server para


aprovechar las nuevas características.

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.

No hay ninguna actualización local de SSRS a Power BI Report Server. Sólo se


admite una migración.
394|Servidor de informes de Power BI

Para migrar de SSRS (modo nativo) a Power BI Report Server, complete los siguientes
pasos.

1. Haga una copia de seguridad delServidor de informesyReportServerTempdbbases de datos.

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.

• Máquina.configpara ASP.NET si lo modificó para las operaciones 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.

4. Mueva elServidor de informesyReportServerTempDbbases de datos a la nueva instancia del motor


de base de datos.

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

5. Instale el servidor de informes de Power BI.

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 .

6. Configure el servidor de informes utilizando el Administrador de configuración del servidor de informes y


conéctese a la base de datos clonada.

7. Realice cualquier limpieza necesaria para la instancia de SSRS (modo nativo).

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 .

Explorando nuevas capacidades

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

Con el Analizador de rendimiento de Power BI Desktop, puede descubrir rápida y fácilmente el


rendimiento de cada uno de los elementos del informe, como visualizaciones y fórmulas DAX. El
Analizador de rendimiento inspecciona y muestra el tiempo de procesamiento necesario para
actualizar y refrescar todos los elementos visuales que inicia una interacción del usuario y presenta la
información para que pueda ver, profundizar y exportar los resultados. Esto significa que puede
identificar rápidamente el impacto en el rendimiento de elementos visuales específicos.

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

dentro de su informe de Power BI

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.

La información de registro incluye la duración de las siguientes tareas:

• 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 de Modelado

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 para modelos de datos de Power BI

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 .

Tematización del informe

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",

"dataColors": ["#990011", "#cc1144", "#ee7799", "#eebbcc", "#cc4477",


"#cc5555", "#882222", " #A30E33"],
"fondo":"#FFFFFF", "primer
plano": "#ee7799", "tableAccent": "#990011"
}
Gestionar diseños de parámetros |401

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 .

Administrar diseños de parámetros

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 mover un parámetro a una nueva ubicación en elParámetrospanel, simplemente arrastre


el parámetro a una celda diferente en el panel.
402|Servidor de informes de Power BI

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:

1. Primero, abreGenerador de informes.

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:

Figura 13.10: Creación de KPI directamente en el portal de Power BI Report Server

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:

Figura 13.11: Creación de un nuevo KPI mediante Power BI Report Server


Publicación de informes |405

8. Haga clic enCrearcuando hayas terminado.

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.

Gestión del acceso y la seguridad de los informes

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

La siguiente tabla describe el alcance predefinido de los roles:

Tabla 13.14: Roles y sus descripciones

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 .

Se pueden proteger los siguientes elementos en Power BI Report Server:

• Carpetas

• Informes (incluidos informes de Power BI, informes paginados e informes móviles)

• Modelos de informes

• Recursos

• Fuentes de datos compartidas

• Conjuntos de datos compartidos

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.

2. Seleccione... (puntos suspensivos) en un elemento.

3. SeleccioneAdministrar.

4. Seleccione elSeguridadpestaña.

5. SeleccionePersonalizar la seguridadluego seleccioneAgregar grupo o usuario.

6. Ingrese la cuenta de usuario o grupo enGrupo o usuario(por ejemplo, dominio\usuario o


dominio\grupo).

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

Publicar informes móviles


Una vez que haya desarrollado un informe móvil utilizando SQL Server Mobile Report Publisher, haga clic
en elGuardar informe móvil comobotón en elNavegaciónpanel:

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.

Ver informes en navegadores modernos


El portal web de Power BI Report Server es una experiencia basada en web. En el portal, puede ver
informes de Power BI, informes paginados, informes móviles y KPI. El portal web también se utiliza para
administrar una instancia del servidor de informes.

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

• Informes de escritorio de Power BI


410|Servidor de informes de Power BI

• 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:

Tabla 13.18: Navegadores compatibles

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

Ver informes en dispositivos móviles


La aplicación móvil Power BI ofrece acceso táctil en vivo a su servidor de informes Power BI local.
Puede conectar hasta cinco instancias diferentes de Power BI Report Server a la vez mediante la
aplicación móvil de Power BI. La aplicación móvil Power BI se puede usar para entregar tres tipos
diferentes de contenido a dispositivos móviles con Power BI Report Server:

• 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

y también se puede optimizar para su visualización a través de dispositivos móviles

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:

Figura 13.21: Informes móviles alojados en Power BI Report Server


se puede ver mediante la aplicación móvil Power BI
414|Servidor de informes de Power BI

• 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

Explorando informes de Power BI

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

en el informe que desea ver

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

Usando el panel FILTROS

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

Resaltado cruzado y filtrado cruzado


En un informe de Power BI, las visualizaciones están diseñadas para interactuar entre sí de forma
predeterminada. Al seleccionar uno o más valores en una visualización, otras visualizaciones que
usan el mismo valor cambiarán según la selección. Este comportamiento se denomina resaltado
cruzado y filtrado cruzado.
Explorando informes de Power BI |417

Ordenar una visualización

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.

Mostrar los datos subyacentes de una visualización

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

esquina de una visualización


418|Servidor de informes de Power BI

Profundizar en una visualización

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 .

Automatizar la entrega de informes con suscripciones


Power BI Report Server le permite crear suscripciones a informes. Una suscripción es una solicitud permanente para
entregar un informe en un formato de archivo de aplicación específico en un momento específico o en respuesta a
un evento. A diferencia del acceso a un informe a pedido, las suscripciones se utilizan para programar y automatizar
la entrega de un informe. Los informes se pueden enviar a una bandeja de entrada de correo electrónico o a un
archivo compartido.

Hay dos tipos de suscripciones en Power BI Report Server:

• 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

• Suscripciones basadas en datos

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.

Las suscripciones se pueden entregar en los siguientes formatos:

• Archivo XML con datos del informe

• Archivo CSV

• Archivo PDF

• Archivo MHTML

• Archivo Microsoft Excel

• Archivo TIFF

• Archivo de Microsoft Word

Nota
Si planea entregar su informe como una suscripción, pruebe la suscripción al principio del
proceso de diseño.

Además, si debe entregar el informe en un formato específico, pruebe el formato de exportación al


principio del proceso de diseño. La compatibilidad con funciones varía según el renderizador que
elija.
420|Servidor de informes de Power BI

En la siguiente tabla, puede encontrar algunos casos de uso relacionados con las suscripciones a Power BI
Report Server:

Tabla 13.27: Casos de uso relacionados con 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 obtener más información sobre las suscripciones y la automatización de la entrega de


informes, revise la siguiente documentación:https://docs.microsoft.com/en-us/sql/reporting-
services/working-with-subscriptions-web-portal?view=sql-server-ver15 .

Anclar elementos de informe al servicio Power BI


Con Power BI Report Server, los elementos de informes paginados se pueden anclar al servicio Power
BI en la nube como un nuevo icono. Esta capacidad le permite integrar elementos de informes, como
gráficos, indicadores o mapas, con paneles de Power BI que haya implementado en la nube.

Para habilitar la fijación de elementos de informes paginados al servicio Power BI, primero debe
completar los siguientes pasos:

1. Configure Power BI Report Server para la integración de Power BI mediante el Administrador de


configuración del servidor de informes.

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

para anclar a Power BI

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 plataforma de datos SQL en Azure


Azure no se trata solo de servicios o de actuar comoPlataforma como servicio (PaaS ). Las ofertas de
plataforma de datos SQL de Azure ayudan a quienes desean realizar la transición a la nube pero pueden
tener requisitos críticos que les causen dudas al considerar las bases de datos de Azure.

Instancia administrada de Azure SQL Database

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:

• 1.000 bases de datos de usuarios

• 4 TB de almacenamiento

• Una red virtual para el aislamiento

• Agente SQL Server y trabajos de agente

• Servidores vinculados, para aquellos que utilizan uniones entre bases de datos

• Integración de Azure Active Directory

• Correo de base de datos

• Tiempo de ejecución de lenguaje común (CLR )

• 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.

Implementación de una instancia administrada en Azure

Hay una serie de requisitos para implementar una instancia administrada:

• Un grupo de recursos nuevo o existente

• Una VNet nueva o existente

• Una subred dedicada

• Una tabla de enrutamiento con al menos 16 direcciones IP dedicadas


426|Modernización a la nube de Azure

Instancia administrada a través del portal de Azure

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:

Figura 14.1: Ingresar los requisitos para 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

Instancia administrada mediante plantillas

Para simplificar la implementación de instancias administradas, puede utilizar plantillas prediseñadas


disponibles en Azure. El siguiente comando crea unEstudio de administración de SQL Server (SSMS )
cuadro de salto para facilitar la administración, junto con la instancia administrada. Si se requiere un
nuevo grupo de recursos, un comando simple puede crear uno:

Potencia Shell:

Nuevo-AzResourceGroup -Nombre <nombre-grupo-de-recursos> -Ubicación <ubicación del grupo


de recursos>

CLI de bash:

az group create --name <nombre-grupo-de-recursos> --ubicación <ubicación del


grupo de recursos>

También puede crear la instancia administrada desde la línea de comando con dirección a la
plantilla de GitHub disponible:

Potencia Shell:

Nueva implementación de grupo de recursos de Az: nombre de grupo de recursos <nombre-grupo-


de-recursos> -PlantillaUri https://raw.githubusercontent.com/Azure/azure-
plantillas de inicio rápido/master/201-sqlmi-new-vnet-w-jumpbox/azuredeploy.json

CLI de bash:

implementación de grupo az crear --resource-group <mi-grupo-de-recursos> --templateuri


https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-sqlmi-
new-vnet-w-jumpbox/azuredeploy.json

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:

az sql mi create -n $nombre de instancia -u $nombre de usuario -p $contraseña \


- g $nombredelgrupo -l "$zona" \

- - nombre-vnet $vnet --subred $snet


428|Modernización a la nube de Azure

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:

Nueva implementación de AzResourceGroup '

- Nombre Mi implementación -ResourceGroupName $resourceGroup '

- Archivo de plantilla './create-managed-instance.json' '


- instancia $nombre -usuario $usuario -contraseña $secpasswd -subnetId $subnetId

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 segura"


},
"ID de subred": {

"tipo": "cadena"
}
},
Implementación de una instancia administrada en Azure |429

"recursos": [
{
"nombre": "[parámetros ('instancia')]",

"ubicación": "centro oeste de EE. UU.",

"etiquetas": {

"Descripción":"Instancia GP con intercalación de instancias personalizada -

Serbio_cirílico_100_CS_AS"
},
"sku": {
"nombre": "GP_Gen4",

"Nivel": "Propósito general"


},
"propiedades": {
"administratorLogin": "[parámetros('usuario')]",
"administratorLoginPassword": "[parámetros('contraseña')]",
"subnetId" : "[parámetros('subnetId')]",
"tamaño de almacenamiento en GB":

256, "vCores": 8,

"Tipo de licencia": "Licencia incluida",


"Familia de hardware": "Gen4",
"cotejo": "Serbian_Cyrillic_100_CS_AS"
},
"tipo": "Microsoft.Sql/managedInstances",
"identidad": {
"tipo": "Asignado al sistema"
},
"apiVersion": "2015-05-01-preview"
}
]
}
430|Modernización a la nube de Azure

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.

Migrar SQL Server a una instancia administrada


Microsoft ofrece numerosas opciones al migrar bases de datos a Instancia administrada de
base de datos Azure SQL. Un proyecto de migración puede resultar abrumador. Como tal, es
importante elegir el modelo y el nivel de servicio correctos. Hay algunos, y su elección
dependerá del caso de uso de su instancia administrada:

• Uniones entre bases de datos

• CLR

• Trabajos del Agente SQL Server

• Envío de registros

• Tablas temporales globales

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:

• Motor de base de datos

• 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:

• Servicio de migración de bases de datos de Azure (DMS)

• Asistente de Migración de Datos (DMA)

• Replicación transaccional

• Carga masiva

Servicio de migración de bases de datos de Azure (DMS)

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.

Requisitos para el DMS


Para utilizar el servicio de migración de datos de Azure, es necesario configurar una instancia de
Azure Database en un grupo de recursos secundario de la red virtual que haya configurado para
trabajar con DMS. Esta base de datos de Azure debe tener los permisos de CONTROL DE BASE DE
DATOS para poder usar el DMS y permitirle realizar los pasos de migración.

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:

• PostgreSQL a la base de datos Azure SQL para PostgreSQL


• MySQL a Azure SQL Database para MySQL

• 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

Asistente de migración de datos

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.

Tamaño de instancia administrada

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

Monitoreo de instancia administrada

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.

Se debe seguir el mismo proceso de recopilación de memoria, CPU y latencia de IO/IOP y


compararlo con la línea de base. Se deben decidir variaciones aceptables en la puntuación y se
deben realizar revisiones periódicas con los usuarios para evitar desafíos reactivos.

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 .

Monitorear y hacer cumplir la seguridad es de suma importancia. Aunque el tema es demasiado


complejo para abordarlo en este capítulo de alto nivel, existen notas técnicas y documentos para
ayudar al administrador de bases de datos en la nube a implementar una Instancia administrada
segura. Vea la documentación aquí:https://docs.microsoft.com/bs-latn-ba/azure/sql-database/sql-
databasemanaged-instance-threat-detection y aquí:https://docs.microsoft.com/bs-latn-ba/azure/sql-
database/sql-database-advanced-data-security .

Opciones secundarias para la migración

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

SQL Server en máquinas virtuales de Azure

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:

Figura 14.3: Diferencias de gestión entre soluciones locales, IaaS y PaaS


436|Modernización a la nube de Azure

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.

Creación de una máquina virtual de Azure desde Azure Portal

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:

• Al hacer clic enGrupos de recursos, eligiendo el grupo al que implementar.

• Al hacer clic enAgregar.

• En la barra de búsqueda, escribiendomáquina virtualomáquina virtual(tenga en cuenta que hay varios


servicios y opciones que se enumerarán en el menú desplegable).

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

Figura 14.4: Solicitud de creación de una máquina virtual en Azure Portal

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 .

Opciones de almacenamiento para máquinas virtuales

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:

Figura 14.6: Rangos de IOPS en Ultra Disk SSD de Azure

Diagnóstico y opciones avanzadas.


ElAvanzadoLa pestaña te permite actualizar aDiscos de sistema operativo efímeros , que solo se guardan en el
almacenamiento de la máquina virtual local y funcionan muy bien para cargas de trabajo sin estado, ya que no se guardan en
el almacenamiento en la nube de Azure. Una vez que haya tomado estas decisiones, pasará a la creación de redes virtuales.
Luego se utiliza una VNet para conectarse a lainterfaz de red (tarjeta de red ) y la nube de Azure.

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:

• - so--suscripción, si necesita especificar la suscripción para que el inquilino implemente la


máquina virtual en una suscripción diferente a la suscripción con la que inició sesión
actualmente.

• - norteo--nombre, para el nombre de la VM.


• - gramoo--grupo, para el nombre del grupo de recursos. Esto debe existir o crearse antes
de crear la máquina virtual.
Creación de una máquina virtual con SQL Server 2019 desde la línea de comandos en Azure |441

• - - imagenespecifica la imagen del sistema operativo.


• - - ubicación, para la ubicación/zona en la que residirá la VM.
• - - nombre de usuario administrador, para el inicio de sesión del administrador de la VM.
• - - clave de administrador, para obtener la contraseña para el inicio de sesión del administrador.

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:

lista de imágenes de az vm --todos \

- - editor MicrosoftSQLServer --tabla de salida


La salida, formateada como una tabla en lugar del JSON predeterminado, tiene este aspecto:

Figura 14.8: Salida del comando az vm image list

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:

az vm crear -n SQL2019vm1 -g SQL2019_grp \


- - imagen MicrosoftSQLServer:SQL2019-WS2016:SQLDEV:15.0.190813 \
- - nombre de usuario-administrador xxxx@contoso.com --contraseña-admin <contraseña> \

- - ubicación esteus --verbose


442|Modernización a la nube 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

Puede monitorear el estado de la creación de VM en Azure Portal yendo al grupo de recursos en


el que está implementando y haciendo clic enActualizarbotón en la cinta en elDescripción
general del grupo de recursoscristal.

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

Seguridad para SQL Server en una máquina virtual de Azure

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.

Copias de seguridad de instancias de Azure VM SQL Server

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

quienes aún son responsables de la infraestructura.

Seguridad integrada para máquinas virtuales de Azure

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):

Figura 14.11: Notificación por correo electrónico de evaluación de vulnerabilidades

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

Extensión del agente IaaS de SQL Server

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:

• Copias de seguridad automáticas de SQL

• Parche SQL automático

• Integración de Azure Key Vault

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:

$vm = Get-AzVM -Nombre <vm_name> -Nombre del grupo de recursos <nombre_del_grupo_de_recursos>

Una vez realizado esto, PowerShell puede instalar la extensión en el host de VM:
Nuevo-AzResource -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

- Ubicación $vm.Ubicación '


- Tipo de recurso Microsoft.SqlVirtualMachine/SqlVirtualMachines '
- Propiedades @{virtualMachineResourceId=$vm.
Id;sqlServerLicenseType='AHUB';sqlManagement='LightWeight'}
Tenga en cuenta que cada carro de retorno está marcado con un'símbolo. Sin este delimitador, la llamada
de ejecución fallará debido a los argumentos requeridos.

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

<nombre_del_grupo_de_recursos> $sqlvm = Get-AzResource -Nombre $vm.Nombre

-ResourceGroupName $vm. Nombre del grupo de recursos -Tipo de recurso

Microsoft.SqlVirtualMachine/ SqlVirtualMachines

$sqlvm.Properties.sqlManagement
Entorno de recuperación ante desastres en la nube |447

Entorno de recuperación ante desastres en la nube


Uno de los desafíos más comunes al migrar a la nube es la frecuencia con la que es necesario repensar
la forma en que la empresa pudo haber realizado tareas o diseñado soluciones. Recuperación de
desastres (DR ) no es diferente.

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

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

respaldar una variedad de necesidades de recuperación ante desastres de IaaS.

Soporte ampliado para SQL 2008 y 2008 R2


En julio de 2019, SQL Server 2008 y 2008 R2 llegaron al final de su ciclo de vida de soporte. Esto debería
indicar a cualquier empresa que actualice a una versión más nueva para lograr sostenibilidad. Sin
embargo, en algunos casos, debido a requisitos de los proveedores, alejarse del año 2008 no es una
opción.

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

ackles: 280 azul-ssis: 343-344 blogs en la nube: 152, 319


adaptador: 348 nubeera:203
basado en publicidad: 76

agregar puerto: 158


B grupo: 74, 83-90, 94,
96, 102-104, 107, 126,
dirección: 45, 51, 54, 61, ancho de banda: 432 152-153, 180-182, 202,
64, 73, 75, 78, 84, 88, línea de base: 53, 242-243, 221, 253-266, 270,
107-108, 179, 186-187, 433-434 272-281, 339, 343, 427 base
214, 261, 263, 275, 279, bashrc: 151, 160 de código: 126
285, 297, 315, 361, 406, binarios: 63, 252 codificadob: 116-117
409, 431-432, 439, 446 binario: 222-223, 237-239, sin código: 338
alojado en adf: 343 245, 251-252 índice de colin: 5

administrador-cli: 151 cadena de bloques: 234 colación: 180, 198,


algoritmo: 57-58, 61, 115, tamaño de bloque: 117 309-310, 426, 429-430
220-222, 244-245 marcadores: 415 columna: 3, 20, 33, 39,
asignando: 439 booleano: 305, 374 41-42, 46-48, 60-62,
asignación: 168 datos de dólares: 280 64, 67, 198, 231-232,
alteración: 19 búfer: 2, 24-25, 236, 238, 288, 302, 304,
analítica: 2-3, 5, 188-189, 155-157, 321-322 310, 321, 325, 331-332,
202, 230, 319-320, 332, administrador masivo: 54 336, 361, 364, 369-371,
346-349, 355-356, paquete: 172, 272 373, 376, 378, 401
359, 363, 443-444 código de bytes: 235 columnar: 189, 322, 356
anómalo:78 nombre de columna: 65
apache: 186, 269,
277, 345-346
C columnas: 3, 14, 40-41, 48,
50, 61-62, 64-65, 164,
apiversión:429 persona que llama: 232 189, 198-199, 222, 232,
número de solicitudes: 84 centos: 143, 145, 303-304, 310-311, 314,
apto-obtener: 151, 156, 150, 160, 164 321-323, 325, 330-332,
163, 206-207 hoja de referencia: 261 342, 367, 369-372, 375,
clave-apt:207 casilla de verificación: 396, 401 377-378, 398, 401
arbitrario: 256, 297 comprobardb:126 ID de empresa: 294, 296
área de ayuda: 68-69 lista de verificación: 11, 211 compilador: 143, 300
matrices: 303 punto de control: 156 compiladores: 234, 298
artefactos: 202 suma de comprobación: 116 concurrente: 325, 360
montaje: 334 cifra: 73 nombre de configuración: 208, 214

asimétrico:60 ID de ciudad: 288-289, 293-294 conector: 204


atlanta: 288, 294-296 Nombre de ciudad: 288, 294-296 construir: 88, 303, 417
atributos: 46, 417 ruta de clase: 237, 240 contoso: 100-101, 441
controlador: 24, 210, ID de base de datos: 39 directorio: 75, 84, 86,
261, 279-280 centro de datos: 105, 259, 384 99, 103, 160-161, 163,
contador: 321 colores de datos: 400 165-168, 206, 235, 267,
credencial: 112-113, archivos de datos: 118, 157 269, 275, 277, 279-280,
116, 119-120, 123, lector de datos: 76 299-300, 305, 376,
191-192, 195-196 conjunto de datos: 188, 220, 383-384, 400, 424, 444
crédito: 64 236-237, 244, 301, 303, acoplador: 144, 152, 154,
acumulado: 92 339, 342, 363, 368, 163, 173-176, 178-181,
curación:190 391-392, 403-404, 417 202, 206-208, 216,
cursores: 25, 29 Fechas: 371 252-253, 283, 435
corte: 434 fecha y hora: 19, 199, archivo acoplable: 206-207
transición: 88 308-309, 311-312 herrero:166
cirílico: 429 nombrebd:157 dtcreado: 19-20
servidor db:158 clave de fecha vencida: 323

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,

275, 368, 421, 444 decodificación: 307 417 elipsoide: 315

base de datos: 2, 5, 7, 16-18, desacoplado: 334 emulador: 167


21-22, 24-26, 28-36, descifrado: 55, 58, 60 enclaves: 46, 61-63
39, 41, 45-49, 51, 54-62, delimchar: 302, 304, 306 codificaciones: 197
66-67, 71-72, 74-79, delimitador: 267, 300, cifrado: 45, 55-62,
81-84, 88, 91-93, 95, 97, 302, 306, 446 64, 67, 73-74, 191, 228,
112, 116-119, 121-124, deltas: 243 242, 383, 394, 433, 444
126-129, 133, 138, despliegue: 111, 152-154, cifrador: 58
141, 143-145, 151-159, 166, 173-174, 182, 204, cifra: 55
161-163, 165-166, 168, 208-210, 245-246, punto final: 75, 86, 92, 126,
171, 177, 180, 186, 189, 258-261, 269, 278-279, 151, 157, 175, 261, 267,
191-197, 199-200, 202, 364, 386, 395, 425, 272, 280, 343, 425
215, 220, 223, 230, 232, 427-428, 430-431, efímero: 174, 177, 438
237, 239, 241-242, 245, 436, 438, 441-442 equi-unión: 325
249, 251, 260, 265-266, devdax:156 uniones equi: 325
269, 273, 277, 285, 287, datos del dispositivo: 308-309 ejecutor:277
289-290, 300, 307, 310, ID del dispositivo: 308-309 extensibles: 60, 232,
315, 320, 324, 328-331, dispositivojson:308 284, 320
333, 339, 341-344, devops: 145, 166, 173, extensión: 112, 223, 226,
346, 352, 356-358, 283, 427, 439, 442 235, 262, 297, 300-301,
363-365, 368, 376, 382, directiva:19 306, 344, 364, 383,
384-385, 387, 394-395, 392, 401, 446, 449-450
423-424, 426, 430-436,
438-440, 444, 446, 450
F híbrido: 2-3, 24-25, 83,
111-112, 118, 125, 155-157,
k-medias: 222, 238, 244
kubeadm: 259-260
basado en archivos: 186, 189 188, 246, 265, 447, 450 kubectl: 254, 261, 264,
grupo de archivos: 16-18 hiper-v: 174 266, 269, 273-275
grupos de archivos: 324, 424 hipervisor: 62-63, Kubernetes: 150, 152-154,
crecimiento de archivos: 17 82, 172, 250 171, 173, 180-182, 209,
ID de archivo: 39 hipótesis: 219 253-256, 258-261, 273
nombre de archivo: 17, 121,

124, 157, 163


ruta de archivo: 71
I l
lectura de archivo: 230 basado en iaas: 108 biblioteca: 63, 234, 237,
secuencia de archivos: 122 inteligencia: 269, 272 240-241, 300, 305, 369
sistema de archivos: 266, 345 intranodo: 104 lista enlazada: 236, 301-302
cortafuegos: 75, 149, 157-158, intrínseco: 186 linux-: 83, 89, 91
162, 196-197, 212, valor int:303 servidor local: 157, 179, 360 ID de

342, 382-383, 444 datos de iot: 308-309 inicio de sesión: 328

marco: 219, 223, iptables:168


226-227, 229-230, iterativo: 338
METRO
242, 244, 249, 272,
283, 296-297, 332
j margen: 378
mariadb:194
javajars:237 tamaño máximo: 17, 71
GRAMO
javascript:307 megabytes: 175
codificación geográfica: 397 jenkins: 166 memoria:155
geodesia:314 basado en unión:61 memoptdb: 17, 19
geodésico:315 jre-casa:225 metadatos: 14, 21-22, 46,
geogcs:315 jj-sql:214 49, 155, 192, 328, 333
get-azvm: 446 caja de salto: 433 minikubo: 259-260
obtener fecha: 124, 313 jupyter: 150, 262, módulos: 21, 240
obtener nombre: 301-302 269-270, 286 mongodb: 193, 432
grafana:275 msprod:149
granfana:275
comprimido: 160
k mssql-cli: 163-164
mssql-conf: 83, 99,
Kerberos: 191, 280 147, 158, 180

h núcleo: 165-167, 172,


262, 269-271
multilínea: 165
mimemoración:5
hadoop: 144, 190, 193, tabla de claves: 280 mi paquete: 241
203-204, 209, 250, valor clave: 193 mitabla: 95, 97
255, 279, 332, 339, 345 palabra clave: 378-380 mi texto: 312-313
jerarquía: 24, 56-57, kibana:276 mywsfc:84
60, 166, 418 kilobytes: 360
petabytes: 255 revolución: 230
norte
texto sin formato: 61 revocador: 238-239
espacio de nombres: 156 polibase: 144, 190-191, Rohrer:221
división de nombres: 301, 305-306 196, 198, 201-214, enrutador: 104

n-gramos: 234 216, 255, 266-267, ruta: 89, 97-98,


notime:156 335, 342, 345, 348 100-101, 272, 425
recuento de nodos: 288-289, postgres: 194-195, 199 número de filas: 302

293-294 postgresql: 192, grupo de filas: 3-4


sinapellido:301 194-197, 432 guía de filas: 199
no-sql:1 post-sql: 92 nivel de fila: 45, 67, 319,
nostats:36 power-bi: 350-352, 390, 365, 375, 381, 383,
nvarchar: 20, 198, 395, 397-398, 400-401, 398, 400, 444
265, 301, 304-306, 410, 412, 414, 418 conjunto de filas: 361

308-309, 315 powershell: 83, 103-105, almacén de filas: 323

154, 165-166, 338, informe: 157-158

oh 382-383, 427-428, 446


imprimir: 302-303
arsenal:207
rxpredecir: 239, 245
compensación: 188 clave de producto: 323

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

PAG 222-223, 225, 229-230,


232-235, 237-242, 245,
firma: 112, 114-116, 120
chispaml: 223, 273
marcapasos: 84-85, 87, 250-252, 260-261, chispa: 223, 269-270
89-90, 180-181 264, 272-273, 283, espacial: 314-316
paquete: 146, 151, 163, 206, 296-297, 319, 338, 346 admin:55
225, 235, 237, 240-241, agente cuadrado: 99

255, 301, 305, 321-322,


338, 343-344, 445
q auditoría SQL: 72

copias de seguridad sql: 114,

relleno:64 almacén de consultas: 35-36 116-117 sqlbigdata: 266

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

nombre del sistema: 68

control del sistema: 99, 148,


W.
156, 158, 206 envoltorio: 181
basado en wsfc: 84

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

datos utf: 310

También podría gustarte