Está en la página 1de 20

SQL Server 101

Qu es SQL Server
y cmo funciona?
Tibor Karaszi
Asesor, experto en SQL Server

SQL Server 101 Qu es SQL Server y cmo funciona?

El propsito del presente informe es ofrecerle informacin sobre SQL Server. Explicaremos qu
es SQL Server, de dnde proviene, su arquitectura y sus elementos fundamentales.

Sistema de gestin de bases


de datos relacionales, RDBMS
Un sistema de gestin de bases de datos relacionales (Relational Database Management System,
RDBMS) representa los datos en lo que normalmente denominamos tablas. Existen tambin trminos
formales, pero no los emplearemos en este informe. Una tabla tiene un nombre y es una estructura que
contiene una o ms columnas; cada columna tambin tiene un nombre. Los datos estn representados
en filas. Una fila tiene un valor para cada columna (o NULL (NULO), que significa que falta el valor).
Se supone que una fila representa una entidad (un pedido, un cliente, etc.). Mientras que una tabla
representa un conjunto de entidades (pedidos o clientes). Una base de datos es una coleccin de tablas.
Cuando usted opera con los datos (obtener datos, por ejemplo), trabaja con conjuntos. Por ejemplo, con
el lenguaje SQL, la instruccin SELECT (SELECCIONAR) retorna una cantidad de filas (0, 1 o ms).

SQL, el lenguaje
En la dcada de 1970, se desarroll un lenguaje para un prototipo de un Sistema de gestin de bases
de datos relacionales. Este lenguaje se denomin ms tarde SQL. Algunos afirman que SQL significa
Lenguaje de consulta estructurado (Structured Query Language), mientras que otros consideran
que son simplemente tres letras al azar. El lenguaje SQL consiste en varios comandos (en trminos
generales) que nos permiten crear, asegurar, gestionar y operar los datos de nuestras tablas. A veces
vemos una categorizacin de comandos en el lenguaje SQL:
DDL, Lenguaje de Definicin de Datos
Esta categora estaba destinada inicialmente a incluir los comandos con los cuales creamos la base
de datos. Por ejemplo, el comando CREATE TABLE (CREAR TABLA). Y tambin DROP TABLE (ELIMINAR
TABLA) y ALTER TABLE (MODIFICAR TABLA) (nos permite agregar una columna, por ejemplo). Con
el tiempo, la categora DDL paso a incluir todo tipo de comandos como CREATE (CREAR), ALTER
(MODIFICAR) y DROP (ELIMINAR) (DATABASE (BASE DE DATOS), LOGIN (INICIO DE SESIN), USER
(USUARIO), VIEW (VISTA), PRODECURE (PROCEDIMIENTO), etc.).
DCL, Lenguaje de Control de Datos
Aqu tenemos los comandos con los cuales definimos los permisos. Quin tiene permitido hacer qu,
en forma opcional con los datos. En esta categora tenemos los comandos GRANT (OTORGAR),
DENY (DENEGAR) y REVOKE (REVOCAR). Algunos ejemplos:
GRANT CREATE TABLE TO (OTORGAR CREAR TABLA A) Sue
GRANT SELECT ON Customers TO (OTORGAR SELECCIONAR EN Clientes A) Joe

2016 Veeam Software

SQL Server 101 Qu es SQL Server y cmo funciona?

DML, Lenguaje de Manipulacin de Datos


Estos son los comandos que utilizamos para agregar, quitar, modificar y leer las filas de las tablas.
Los comandos (tambin llamados instrucciones) son INSERT (INSERTAR), DELETE (ELIMINAR),
UPDATE (ACTUALIZAR) y SELECT (SELECCIONAR). Estos son los comandos enviados por sus aplicaciones
a SQL Server cuando utiliza su aplicacin para agregar pedidos, ver clientes, etc.
Adems hay otros comandos en el lenguaje SQL que no estn incluidos en la categorizacin anterior.
Por ejemplo, hay un comando para iniciar una transaccin o para verificar que una base de datos
est libre de corrupciones.
SQL era inicialmente una norma de la industria, pero ANSI, ISO, etc. lo estandarizaron formalmente muy
rpido. La norma se revisa cada tanto, para agregar nuevos elementos del lenguaje o incluso para quitar
elementos antiguos. Cada producto tiene su propio dialecto en el lenguaje SQL, donde implementa
partes de la norma SQL (que es enorme) y agrega sus propios elementos del lenguaje. Se pueden agregar
elementos para que el producto sea ms competitivo, o incluso solo para que sea utilizable. Por ejemplo,
la norma no estipula nada sobre los ndices, que es una estructura de rendimiento importante.
Hay una gran cantidad de crticas sobre el lenguaje SQL, ya que algunos consideran que fue una
implementacin rpida y desprolija de un lenguaje para un sistema de bases de datos relacionales. Muchos
consideran que SQL no es ni siquiera un lenguaje relacional. Se puede decir que el lenguaje SQL, en ciertos
aspectos, no le hace justicia al modelo relacional, ya que no permite explorar todo el potencial de un
sistema de bases de datos relacionales. Pero SQL, defectuoso o no, sin dudas demostr ser muy til.

Antecedentes e historia de SQL Server


En la dcada de 1980, Sybase tena un RDBMS llamado SQL Server para el entorno Unix. Las PC eran cada
vez ms populares y ellos queran entrar en el mercado de las PC. As que trabajaron junto con AshtonTate (Dbase) y Microsoft para orientar y lanzar el producto para la arquitectura de la PC. En ese momento,
el sistema operativo para los servidores de PC era OS/2. Se lanzaron las versiones 1.0, 1.1 y 4.2 para OS/2.
Luego lleg Windows NT (lo que hoy llamamos Windows) entonces el producto se orient hacia este
nuevo y popular sistema operativo. En 1992, poco despus del lanzamiento de Windows NT, Microsoft
tambin lanz SQL Server 4.2 para Windows NT. Microsoft luego se separ de Sybase y desarroll SQL
Server por su cuenta. Ms adelante, se lanzaron las versiones 6.0 y 6.5 sin grandes cambios o adiciones.
Luego, Microsoft reescribi todo el producto, a lo que podemos referirnos como la nueva arquitectura. Esto
fue hace un tiempo: SQL Server 7.0 se lanz en 1998. El objetivo fue una estructura de almacenamiento que
pudiera durar dos o tres dcadas y, teniendo en cuenta que todava estamos utilizando esta arquitectura,
se puede decir que la nueva arquitectura del producto fue un xito. En 7.0, tambin hubo adiciones fuera
del motor de la base de datos. Microsoft agreg el OLAP Server para cubos y DTS para la exportacin e
importacin de datos. Con SQL Server 2000, tambin obtuvimos el Reporting Services.

2016 Veeam Software

SQL Server 101 Qu es SQL Server y cmo funciona?

SQL Server 2005 present cambios bastante significativos al producto, pero no fueron tan grandes como
los de 7.0. Por ejemplo, 2005 fue cuando se lanz SQL Server Management Studio. Todos los que hayan
trabajado con SQL Server durante la ltima dcada probablemente hayan utilizado esta herramienta.
Otro cambio significativo fue una estructura de metadatos totalmente nueva donde Microsoft cambi
por completo la estructura de la tabla del sistema, por ejemplo, de sysobjects (que era una tabla fsica)
a sys.tables (que es una vista, la tabla fsica est oculta). En cuanto a los dems componentes, OLAP Server
pas a llamarse Analysis Services y DTS pas a llamarse SQL Server Integration Services (SSIS), ambos
reescritos. Este informe se centra en el motor de la base de datos, o el el motor SQL.
Las versiones ms recientes de SQL Server son 2008, 2008 R2, 2012 y 2014. Por supuesto que cada una
de ellas puede haber agregado complementos potencialmente significativos al producto, pero me
gustara considerarlos ms como evoluciones del producto. El hecho es que, si trabaj con 2005,
lo ms probable es que se sienta a gusto con 2014.

Arquitectura de SQL Server,


el motor de la base de datos
Tenga en cuenta que de aqu en adelante, cuando hablemos de SQL Server, nos estaremos refiriendo
al motor de la base de datos (a menos que se especifique lo contrario).
SQL Server es un proceso, visto desde el punto de vista del sistema operativo. La memoria asignada
desde el sistema operativo es propiedad del proceso y lo mismo sucede con los archivos que se
abren, y el proceso tiene una cantidad de subprocesos que el sistema operativo puede programar
para su ejecucin. SQL Server comenz como un servicio. Si selecciona Servicios en su sistema
operativo, podr ver varios servicios cuyos nombres descriptivos comienzan con SQL. A continuacin
se presentan los servicios de SQL Server ms comunes. Tenga en cuenta que las explicaciones no
pretenden ser exhaustivas, sino ms bien una idea de lo que conlleva cada servicio.
SQL Server
Este es el motor de la base de datos.
SQL Server Agent
Lo llamaremos simplemente Agente. El Agente le permite programar tareas de ejecucin en tiempos o
intervalos especificados. Un trabajo consiste en uno o ms comandos que se han de ejecutar, los cuales
pueden ser comandos de SQL, comandos del sistema operativo, un script de VB o PowerShell, etc. El
Agente tambin tiene capacidades de alerta. Puede definir que el Agente enve un correo electrnico
o ejecute un trabajo cuando se renan ciertas condiciones. Estas condiciones, por ejemplo, pueden ser
un error escrito por el motor de la base de datos al registro de eventos de Windows, o que un indicador
de monitoreo del rendimiento de SQL Server alcance un valor especfico.

2016 Veeam Software

SQL Server 101 Qu es SQL Server y cmo funciona?

SQL Server Analysis Services


SQL Server Analysis Services tambin es conocido como SSAS y le permite construir cubos de datos
en un almacn de datos o, a partir de SQL Server 2012, utilizar el modelo tabular en lugar de los cubos.
SSAS tambin tiene la funcin de minera de datos, que le permite trabajar con grandes cantidades
de datos, utilizando distintos algoritmos para encontrar patrones y tendencias que existen en los datos.
SQL Server Browser
Esto se definir y ampliar ms adelante en el texto.
SQL Server Integration Services
Este servicio interviene en la ejecucin de paquetes de SSIS, es decir, al realizar la transferencia
de datos y operaciones similares.
SQL Server Reporting Services
Reporting Service le permite utilizar una herramienta para disear informes y cargarlos al servicio
Reporting Services. Este servicio almacena los informes en una base de datos y los publica ya sea
a travs de un sitio web o un sitio SharePoint.
SQL Server VSS Writer
Este componente le permite a algunos software congelar la E/S en una o ms bases de datos de
modo que el software pueda tomar los datos del archivo de la base de datos en un estado congruente
y producir una instantnea de los datos de su SQL Server. Veeam es un ejemplo de un software que
puede utilizar VSS para producir dicha instantnea.

Instancias
Para algunos de los componentes anteriores (servicios), puede tener ms de uno instalado en un sistema
operativo. Cada componente instalado se denomina una instancia. Los componentes en cuestin son el
motor de la base de datos, Analysis Services y Reporting Services. Se puede ver en el nombre del servicio
si es un componente que nos permite tener varias instancias; hay un parntesis y un nombre de instancia
despus del nombre descriptivo del servicio. Una instancia puede ser una instancia predeterminada
(donde aparece MSSQLSERVER entre parntesis) y puede haber varias instancias nombradas para las
cuales el nombre de la instancia se especifica cuando se instala dicha instancia.
Cada instancia est separada de las dems, a menos que se alojen en el mismo sistema operativo.
Cada instancia tambin tiene su propia estructura de carpeta, por ejemplo, donde se almacena
el archivo exe. Esto les permite tener diferentes nmeros de versin y compilacin. Puede haber
configuraciones totalmente diferentes en el nivel de la instancia y tambin configuraciones de
seguridad diferentes (inclusive quines son sper administradores, sysadmin, etc.).

2016 Veeam Software

SQL Server 101 Qu es SQL Server y cmo funciona?

Estructuras de base de datos y


almacenamiento
Cada instancia de SQL Server contiene varias bases de datos. Una base de datos se crea utilizando
el comando CREATE DATABASE (CREAR BASE DE DATOS) (o utilizando Nueva base de datos en SSMS,
que a su vez utiliza el comando CREATE DATABASE (CREAR BASE DE DATOS)). Sin embargo, hay cinco
bases de datos en SQL Server desde el principio:
maestra
La base de datos maestra es la base de datos raz, por as decirlo. Hay determinada informacin
de configuracin que es comn a toda la instancia que se almacena en la base de datos maestra.
Algunos ejemplos son las conexiones (sys.logins), los ajustes de configuracin (sys.configurations)
y los servidores vinculados (sys.servers). La base de datos maestra es especial tambin desde otro
punto de vista: el del inicio o arranque. Cuando inicia su SQL Server, este lee parmetros de lnea
de comandos desde el registro. Algunos de esos parmetros son el nombre y ruta de acceso completos
a los dos archivos que conforman la base de datos maestra (master.mdf y mastlog.ldf ).
msdb
La base de datos msdb es utilizada principalmente por un SQL Server Agent. En esta base de datos hay tablas
diseadas para almacenar las tareas programadas, alertas, operadores y cualquier otra cosa con la que trabaje
el Agente. Sin embargo, es un error comn creer que la msdb es utilizada solamente por el Agente. El motor
de la base de datos tambin utiliza la msdb. Por ejemplo, cada vez que realiza un backup o una restauracin,
la informacin sobre dicha operacin se escribe en una serie de tablas en la base de datos msdb.
modelo
Cuando crea una base de datos, SQL Server utiliza una plantilla para dicha base de datos. Esta plantilla
incluye elementos tales como los ajustes de las opciones de la base de datos. Y s, lo adivin: esta
plantilla de base de datos es, por supuesto, la base de datos modelo.
tempdb
Tal como implica el nombre, esta base de datos se utiliza para almacenamiento temporal. Hay una serie
de elementos que utilizan tempdb, que incluyen:
Tablas de trabajo utilizadas durante la ejecucin de una consulta de SQL
Tablas temporales creadas explcitamente (tablas que comienzas con #) y las variables de las tablas
V
ersiones de filas, donde una transaccin puede llegar al valor anterior para una fila que est siendo
modificada por otra persona, en lugar de bloquearse o hacer una lectura errnea
Las tablas insertadas y eliminadas que tiene disponibles en un disparador que se activa con INSERT
(INSERTAR), UPDATE (ACTUALIZAR) o DELETE (ELIMINAR)

2016 Veeam Software

SQL Server 101 Qu es SQL Server y cmo funciona?

La base de datos tempdb se vuelve a crear cada vez que inicia su SQL Server. La estructura de archivo
de la base de datos (cantidad de archivos de la base de datos, tamao y ruta de acceso) no se obtiene
de la base de datos modelo; sin embargo, est basada en una tabla de sistema, que se puede visualizar
utilizando master.sys.master_files.
La base de datos de recursos
Esta base de datos de recursos, de hecho, est oculta. No podemos ver esta base de datos en el Object
Explorer de SQL Server Management Studio ni tampoco aparece en sys.databases. Est oculta porque
se supone que no debe ser modificada. Una vez escuch a alguien de Microsoft sugerir que hay que
considerarlo como si fuera un archivo DLL. Solamente contiene cdigos, no datos. Pero se preguntar,
qu cdigo? El cdigo que es el procedimiento almacenado del sistema (como sp_detach_db, sp_
help, etc.) y tambin las vistas del sistema (sys.databases, sys.tables, etc.) se incluyen en la base de datos
de recursos. Esto le permite a Microsoft reemplazar estos archivos cuando repara su SQL Server en lugar
de ejecutar archivos de script para recrear estos objetos en la base de datos maestra (como tenamos
en SQL Server 2000 y las versiones anteriores).
Archivos de bases de datos
Cada base de datos se almacena en un conjunto de archivos. Los archivos estn enumerados internamente
desde el archivo uno en adelante (ver por ejemplo sys.database_files). Tenemos al menos dos archivos para
cada base de datos; un archivo de datos (.mdf) y un archivo de registro de transacciones (ldf). Podemos tener
ms de un archivo de datos (.ndf) y tambin ms de un archivo de registro de transacciones (ldf).
Un archivo de datos pertenece a un grupo de archivos. Hay un mnimo de un grupo de archivos
para cada base de datos: el grupo de archivos PRIMARIO. Cuando crea una tabla o un ndice, puede
especificar qu grupo de archivos se utilizarn en el comando CREATE (CREAR). Siempre hay un
grupo de archivos predeterminado, que ser el PRIMARIO a menos que cambie el grupo de archivos
predeterminado. Si no especifica en qu grupo de archivos se debe crear la tabla o ndice, entonces
se crear en el grupo de archivos predeterminado.
Puede tener ms de un archivo de datos para cada base de datos. El primario (.mdf ) siempre pertenece
al grupo de archivos PRIMARIO. Cada grupo de archivos puede tener ms de un archivo de datos.
Si tiene ms de un archivo en el mismo grupo de archivos, entonces los archivos se completarn
de manera proporcional a sus tamaos.
Al final, el concepto del grupo de archivos le permite especificar en qu archivo, o archivos,
se almacenar una tabla, en el caso de que tenga una tabla para la cual sepa que tendr un acceso
altamente configurado. La tabla tiene un tamao moderado, lo suficientemente grande como para no
caber en RAM segn el mecanismo de cach estndar en SQL Server. Pero tambin tiene muchos otros
datos en la base de datos. Adems, digamos que tiene un disco rpido (SSD) de tamao moderado que
puede utilizar en este servidor. Cree un grupo de archivos, agregue un archivo a este disco SSD y cree
su tabla de acceso intensivo en este disco SSD (el grupo de archivos que contiene el archivo que est
en este disco SSD). Este es solo un ejemplo que demuestra para qu puede utilizar varios grupos de
archivos, y otro es el backup a nivel del grupo de archivos, o realizar verificaciones de la congruencia de

2016 Veeam Software

SQL Server 101 Qu es SQL Server y cmo funciona?

la base de datos al nivel del grupo de archivos (DBCC CHECKFILEGROUP en lugar de DBCC CHECKDB).
Sin embargo, la amplia mayora de las bases de datos tienen solo un grupo de archivos e incluso un
solo archivo de datos (el archivo .mdf ). Y, en la mayora de los casos, eso es perfectamente suficiente.
Creo fervientemente en el concepto KISS (mantener las cosas simples) y si ms de un grupo de archivos
no le brinda ventajas, entonces por qu debera tenerlo?
Arquitectura del archivo de datos
Cada archivo de datos est dividido en un conjunto de pginas, de 8 kB de tamao. Las pginas estn
numeradas internamente desde la pgina 0 en adelante. Puede haber una pgina sin uso, es decir, una
pgina libre. Las pginas estn agrupadas en ocho pginas consecutivas; a esto se denomina extensin.
Tambin puede haber una extensin no utilizada si ninguna de las pginas de la extensin est en uso.
A veces nos referimos a este tipo de extensin como no asignada (en contraposicin a asignada).
Una extensin asignada se puede asignar de dos maneras. Ya sea como una extensin compartida (o mixta).
En una extensin compartida, hay pginas de diferentes tablas e ndices, de all el nombre compartida
(o mixta). Adems, una extensin puede bsicamente pertenecer a una tabla o ndice determinados,
lo que llamamos una extensin uniforme. Las primeras ocho pginas de cada tabla o ndice provienen
de extensiones compartidas y las pginas subsiguientes provienen de extensiones uniformes.
Aqu tomamos dos tipos de asignaciones, datos e ndices. Adems hay otros tipos, tales como
asignaciones LOB, por ejemplo, pero las pginas de datos e ndices bastan para ilustrar el principio
de la pgina y la asignacin de la extensin en SQL Server.
Arquitectura del ndice y la tabla
Lgicamente, una tabla est definida por una cantidad de columnas. Cada columna tiene un nombre
y corresponde a un determinado tipo de dato.
Desde una perspectiva fsica, una tabla tiene filas almacenadas en pginas. Sin embargo,
la tabla (los datos) se pueden estructurar de dos maneras diferentes:
Una tabla sin ndices (Heap Table)
Una tabla sin ndices es una tabla para la cual no creamos un ndice agrupado. SQL Server no almacena
las filas en ningn orden particular. Las filas y las pginas se almacenan bsicamente donde haya
espacio libre. De ms est decir que SQL Server trata de ser conservador y no utilizar ms pginas que
las necesarias y tratar de tener la mayor cantidad de filas en cada pgina, dentro de lmites razonables.
Una tabla con ndices agrupados (Clustered Table)
Una tabla con ndices agrupados es una tabla para la cual creamos un ndice agrupado. Es posible que el
ndice se haya creado automticamente ya que SQL Server crear de manera predeterminada un ndice
agrupado en la Clave primaria (columna); sin embargo, esto se puede sobrescribir. O puede crear el ndice
agrupado explcitamente utilizando el comando CREATE CLUSTERED INDEX (CREAR NDICE AGRUPADO).

2016 Veeam Software

SQL Server 101 Qu es SQL Server y cmo funciona?

Ahora bien, esto lleva a plantear la pregunta: qu es un ndice?


Analicmoslo primero desde el punto de vista del ndice agrupado. Un ndice clasifica los datos.
Por ejemplo, supongamos que representamos personas en una tabla, con columnas tales como
nombre, apellido, ciudad, etc. Adems, supongamos que definimos el ndice agrupado en la columna
del apellido (el apellido sera la clave de ndice). Las filas ahora se almacenan por orden de apellido.
Imaginemos un conjunto de pginas (para este ndice) y en el encabezado de la primera pgina
est la direccin (nmero de pgina) a la pgina siguiente. Luego esto se repite hasta la ltima pgina.
Una pgina tambin apunta a la pgina anterior. Esto es lo que llamamos una lista doblemente
vinculada. La fila con el ltimo apellido ser la primera fila de la pgina siguiente y viceversa. En otras
palabras, se puede seguir la lista vinculada desde el principio hasta el final y habremos ledo a las
personas en el orden de los apellidos. Lo que describimos aqu es el nivel por hoja del ndice.
Tambin tenemos una estructura de rbol por encima de este nivel. Tomemos el primer valor de la clave
de ndice (apellido) de la primera pgina y lo mismo para la segunda pgina, etc. Almacenmoslos en otro
conjunto de pginas, junto con el nmero de pgina a la que sealan. Ahora tiene el nivel superior
al nivel por hoja. Si una pgina no es suficiente para este nivel, entonces tiene que seguir armando niveles
superiores hasta tener exactamente una pgina raz. As es como SQL Server arma el ndice de rbol.
ndices no agrupados
La descripcin anterior describe un ndice agrupado. Como ya sabemos, una tabla puede tener un
ndice agrupado, o puede ser que no lo tenga (en cuyo caso es una tabla sin ndices). Sea cual fuere,
tambin podemos tener una serie de ndices no agrupados para la tabla. Un ndice no agrupado
tambin se define en una o ms columnas (digamos el apellido, al igual que el ejemplo anterior).
SQL Server arma el ndice no agrupado prcticamente de la misma manera que el ndice agrupado,
pero en el nivel de la hoja de ndice no tenemos todas las columnas de la fila (los datos). En cambio,
solo tenemos la(s) columna(s) de la clave de ndice, que en nuestro ejemplo es la columna del nombre
junto con un indicador a la fila de datos. Si la tabla es una tabla sin ndices, tendremos para la fila los
datos del archivo, la pgina y el nmero de fila. Si la tabla es una tabla agrupada, tendremos en cambio
los valores de las columnas clave agrupadas.
Se dar cuenta que hay mucho ms que podemos decir sobre este tema, ahondando en las estructuras
del ndice y profundizando en las opciones del ndice. Sin embargo, la descripcin anterior es suficiente
para comprender cules son los datos de las tablas que se utilizan y el hecho de que podemos crear un
ndice que SQL Server puede utilizar para buscar datos. Imagnese si SQL Server tuviera que leer todas
las pginas que utiliza la tabla, solamente para encontrar las filas que est buscando!

El optimizador y los planes de ejecucin


El lenguaje SQL, un comando SELECT (SELECCIONAR) por ejemplo, opera a nivel lgico. Usted
especifica qu quiere, no cmo se debera realizar. Por ejemplo, en trminos generales, mostrar todas
las filas con el apellido Johnson. Queremos que SQL Server lo ejecute de la manera ms rpida y
eficiente posible. Para esto, tenemos un optimizador.

2016 Veeam Software

SQL Server 101 Qu es SQL Server y cmo funciona?

El optimizador es responsable de crear un plan de ejecucin. El plan de ejecucin define cmo


se debera ejecutar la consulta, como por ejemplo, qu ndice se debera utilizar para encontrar las filas
que estamos buscando. Tambin ayuda a determinar en qu orden realizar una interseccin entre las
tablas, si la consulta combina datos de ms de una tabla. O cmo se debera realizar la interseccin
o las intersecciones; hay distintas maneras en las que se pueden realizar las intersecciones, tales como
hash join, loop join y merge join. Y as infinitamente. El plan de ejecucin consiste en una serie de
operadores. Imaginemos una consulta bastante simple en la cual el operador ms interno lee datos
de la tabla o ndice y pasa las filas al prximo operador externo, que por ejemplo podra clasificar
los datos si imaginamos un ORDER BY (ORDENAR POR) en la consulta.
Hay distintas maneras de obtener una representacin de este plan de ejecucin. Por ejemplo,
hay opciones para ver una representacin grfica del plan de ejecucin en SQL Server Management
Studio (Mostrar el plan de ejecucin estimado y Mostrar el plan de ejecucin real). Cuando se trabaja
con la optimizacin del rendimiento, el inters est en los planes de ejecucin, la manera en que se
ejecuta la consulta: qu ndices se utilizan, etc., y si se puede de alguna manera hacer que SQL Server
ejecute una consulta rpidamente, por ejemplo utilizando menos recursos del sistema.
Mantener un registro del espacio libre y del espacio utilizado
SQL Server mantiene un registro de las extensiones utilizadas y libres en cada archivo de datos.
La tercera pgina, o la pgina dos (los nmeros de pgina empiezan en 0), del archivo es un pgina de mapa
de asignacin global (Global Allocation Map, GAM), y tiene un bit para cada extensin en los siguientes 4 GB
aproximadamente del archivo de la base de datos. El GAM mantiene un registro de si la extensin est en
uso (como compartida o uniforme) con 0 para la extensin, o si est libre (no asignada) con el valor 1.
La cuarta pgina (pgina nmero tres) es la pgina de mapa de asignacin global secundario (Secondary
Global Allocation Map, SGAM). El SGAM entra en juego cuando pensamos en extensiones compartidas.
Una extensin asignada como extensin mixta con pginas libres tiene 1 en el SGAM, y 0 en lo dems.
Esto le facilita a SQL Server encontrar almacenamiento libre. Imaginemos que SQL Server necesita una
extensin libre (no asignada). SQL Server escanea la pgina GAM y encuentra una extensin que tiene
1. O bien, imaginemos que SQL Server necesita una pgina de una extensin compartida. SQL Server
escanea la pgina SGAM y encuentra una extensin que tiene 1.
En otras palabras, una extensin puede estar representada en las combinaciones GAM y SGAM (en ese
orden) por 1, 0, los que significa que es una extensin libre, no asignada. O bien, podemos tener 0, 0 que hace
referencia a una extensin uniforme o una extensin mixta sin pginas libres. Por ltimo, podemos tener
0, 1 que hace referencia a una extensin compartida con pginas libres. La combinacin 1, 1 no se utiliza.
Como ya se mencion, las pginas GAM y SGAM representan aproximadamente 4 GB en el archivo
de la base de datos y luego tenemos otro conjunto de pginas GAM y SGAM, y as sucesivamente.
Las pginas GAM y SGAM siempre se encuentran en posiciones fijas en los archivos de la base de datos.
La cantidad de pares que haya de GAM y SGAM depende del tamao del archivo de la base de datos.

2016 Veeam Software

10

SQL Server 101 Qu es SQL Server y cmo funciona?

Pero cmo podemos saber qu pginas est usando una tabla o ndice, o ms precisamente,
un montn o un ndice? Cada montn y cada ndice tienen una pgina de mapa de asignacin
de ndices (Index Allocation Map, IAM). La pgina IAM tambin mapea aproximadamente 4 GB en
el archivo de la base de datos y tenemos una por cada extensin que utiliza este heap o ndice.
Las pginas IAM por supuesto no estn en posiciones fijas, de modo que SQL Server mantiene un
registro de la direccin (nmero de pgina) de la primera pgina IAM al nivel del heap o ndice.
Si el heap o ndice utiliza extensiones en un rea mayor a 4 GB en los archivos de la base de datos,
entonces tenemos ms pginas IAM e indicadores desde la primera pgina IAM a la siguiente.
Por ltimo, tenemos las pginas de espacio disponible en pginas(Page Free Space, PFS). Una PFS
mantiene un registro de qu tan completa est una pgina, aproximadamente. La primera PFS es la
segunda pgina (pgina nmero 1) de cada archivo de datos. El mapa de PFS es de aproximadamente
64 MB en el archivo de datos. Y se repiten para cada porcin adicional de 64 MB. Cada byte (no bit)
en el PFS representa una pgina en esa rea de 64 MB, con una aproximacin de cunto espacio libre
se incluye en esta pgina. El PFS no se mantiene para las pginas del ndice, ya que esta informacin
no es de inters en primer lugar; cuando se inserta una nueva fila en un ndice, siempre sabemos
dnde colocar dicha fila, en la posicin adecuada segn la clave de ndice.
Entonces, aqu lo tenemos; una revisin de la arquitectura de asignacin para SQL Server. Ahora, se estar
preguntando si tenemos que saber o darle importancia a estas cosas. No, en la mayora de los casos
puede simplemente administrar y programar su SQL Server sin ningn conocimiento de GAM, SGAM,
IAM ni PFS. Sin embargo, conocer del tema puede ayudar a comprender ms eficazmente algunos
mensajes de error, fragmentacin de ndices o solo desmitificar el motor sustancial del SQL Server.
Si investiga un poco ms, descubrir ms detalles. Por ejemplo:
U
n heap o ndice se puede particionar (tener ms de una particin) y ver que los IAM
se encuentran en realidad en el nivel de la particin.
E xisten ms tipos de asignaciones (de vuelta, los IAM) adems de heap e ndice. Tenemos pginas
LOB, pginas para tipos de datos tales como varchar(max), nvarchar(max), varbinary(max), text,
ntext e image. Y tambin hay asignaciones para pginas de desbordamiento de fila; podemos tener
una combinacin de tipos de datos de longitud variable para las columnas de modo que una fila
ya no quepa en una columna y aqu es cuando SQL Server almacena algunos de los valores de las
columnas en dichas pginas de desbordamiento de fila.
Si desea investigar ms a fondo en esta rea, recomiendo la documentacin de SQL Server (SQL Server
Books Online, BOL) como un buen punto de partida. Desafortunadamente, Microsoft decidi no seguir
manteniendo algunas de las secciones de arquitectura de la documentacin de productos, pero
podemos usar la versin R2 de SQL Server 2008 de BOL que todava es precisa:
https://technet.microsoft.com/en-us/library/cc280361(v=sql.105).aspx

2016 Veeam Software

11

SQL Server 101 Qu es SQL Server y cmo funciona?

Registro de transacciones
Como ya sabemos, cada base de datos tiene al menos un archivo para su registro de transacciones, el archivo
ldf. Se puede tener ms de uno, pero esto no afectar el rendimiento ya que se utilizarn uno despus de otro
en serie. Esta es una breve descripcin de lo que sucede cuando se modifican datos en SQL Server:
Cada modificacin se realiza siempre en una transaccin. Entre otras cosas, una transaccin se define
como una cantidad de modificaciones que se deberan formar todas o ninguna: una operacin
atmica. De manera predeterminada, un nico comando de modificacin, como INSERT (INSERTAR),
UPDATE (ACTUALIZAR) o DELETE (ELIMINAR), se realizar dentro de su propia transaccin; mientras
tanto, si algo falla mientras se est ejecutando el comando de modificacin, entonces se revertir
todo lo realizado hasta ese momento para ese comando de modificacin.
Tambin se pueden agrupar varios comandos de modificacin dentro de la misma transaccin,
utilizando comandos tales como BEGIN TRANSACTION (INICIAR TRANSACCIN), COMMIT
TRANSACTION (CONFIRMAR TRANSACCIN) y ROLLBACK TRANSACTION (REVERTIR TRANSACCIN).
Cuando se inicia una transaccin, ya sea en forma implcita utilizando un comando de modificacin
o en forma explcita mediante un comando BEGIN TRANSACTION, SQL Server registrar en el registro
de transacciones que la sesin actual inici una transaccin.
Para cada modificacin (una fila se inserta, actualiza, elimina o algo similar para modificaciones
del ndice, etc.), SQL Server se cerciorar de que la pgina modificada est en cach. Cada lectura y
modificacin se realiza desde el cach. Si todava no est en cach, entonces la pgina se leer desde
el disco y se pasar a cach. Se construye un registro para reflejar la modificacin y se escribe en el
registro de transacciones (no necesariamente a nivel fsico para el archivo todava). Ahora, la pgina se
puede modificar en cach. Esto sucede para cada modificacin dentro de esta transaccin. Y respecto
al final de la transaccin, como una confirmacin, SQL Server reflejar la confirmacin en el registro
de transacciones y tambin se asegurar de que todos los registros producidos hasta el momento
especfico estn escritos fsicamente en el disco (forzar escritura de registro en la confirmacin).
Es por esto que queremos tener un buen rendimiento de escritura donde se encuentra el archivo ldf,
ya que la escritura en el archivo ldf es sincrnica: la aplicacin esperar a que el sistema operativo
y el SQL Server hayan reconocido que se haya realizado la operacin de escritura.
Las pginas que se modificaron estn sucias en este punto. Se modificaron desde que se llevaron
a cach y no tienen la misma apariencia en cach que en el disco. SQL Server realiza controles de tanto
en tanto donde escribe todas las pginas modificadas (para la base de datos) en el disco y tambin
lo refleja en el registro de transacciones. Esto le brinda a SQL Server un punto de partida para la
recuperacin, por ejemplo cuando inicia SQL Server. Buscar el control ms reciente en el registro
de transacciones y lo utilizar para asegurarse de que todas las modificaciones registradas en el registro
hayan sido realizadas en las pginas de datos, pero tambin para revertir cualquier transaccin que
haya quedado incompleta cuando se detuvo SQL Server. A veces nos referimos a esto como REDO
(REHACER) o UNDO (DESHACER). Podr ver informacin acerca de este proceso de recuperacin
en el archivo errorlog de SQL Server, desde cuando inici su SQL Server.

2016 Veeam Software

12

SQL Server 101 Qu es SQL Server y cmo funciona?

Herramientas
Hay varias herramientas que lo ayudarn a administrar su SQL Server. La siguiente es una lista
de las herramientas incluidas ms importantes y ms utilizadas.
SQL Server Management Studio (SSMS)
SSMS es simplemente una interfaz de usuario grfica que le permite administrar su SQL Server.
Se puede conectar a un SQL Server (o a alguno de los otros componentes) y utilizar el Object Explorer
para ver sus bases de datos, tablas, vistas, etc. Puede hacer clic con el botn derecho en un objeto
y acceder a un men contextual que le permite realizar distintas tareas para ese objeto. Y puede abrir
ventanas de consulta, que le permiten escribir consultas y comandos de SQL y ejecutarlos y,
por supuesto, guardarlos como archivos, archivos de script.
SQL Server Configuration Manager
Esta herramienta le permite configurar su servidor y realizar cambios que en general se almacenan
fuera de SQL Server (sobre todo en Windows Registry) en lugar de adentro de SQL Server. Estas
configuraciones incluyen elementos tales como la cuenta de Windows en la que se inicia cada servicio,
los parmetros de arranque y las configuraciones de red para su SQL Server.
SQLCMD.EXE
SQLCMD es una herramienta de la lnea de comandos para ejecutar consultas en un SQL Server. Esto
se puede hacer ya sea al especificar la consulta como una opcin de la lnea de comandos, leerla desde
un archivo de entrada o utilizar la herramienta interactivamente donde aparece un aviso desde el cual
puede escribir y utilizar GO (IR) para enviar las consultas a SQL Server.
SQL Server Documentation (tambin conocido como Books Online)
Esto es exactamente lo que indica su nombre: la documentacin para SQL Server. De manera
predeterminada, ser dirigido a un sitio web para obtener la documentacin. Esto tiene varias
limitaciones. La navegacin es muy lenta en comparacin con una aplicacin de ayuda local
y la funcionalidad de bsqueda est administrada por Bing, y no est limitada solo a SQL Server.
Se puede cambiar la documentacin a una aplicacin local utilizando la herramienta Manage Help
Settings (Administrar configuraciones de ayuda). Cambie esto a local y luego descargue las partes
de mayor inters utilizando la misma herramienta.

2016 Veeam Software

13

SQL Server 101 Qu es SQL Server y cmo funciona?

API, la arquitectura de red y el cliente


En este contexto, una aplicacin cliente (cliente para abreviar) es una aplicacin que inicia sesin en su
instancia de SQL Server y enva consultas de SQL a la instancia. Por ejemplo, esto puede ser SSMS, SQLCMD
o cualquier aplicacin que utilice SQL Server para almacenar y administrar sus datos. Independientemente de
lo que sea esta aplicacin, hay algunos principios comunes, respecto de cmo se comunica con SQL Server.
Los desarrolladores que crearon y programaron esta aplicacin tenan que tener una manera de enviar
consultas de SQL desde la aplicacin a su instancia de SQL Server. Por ejemplo, supongamos que
estamos utilizando un lenguaje como C#. No podemos tener consultas de SQL en nuestro cdigo
fuente y pretender que nuestro compilador (C#) lo entienda. Tenemos que usar una biblioteca (en
trminos generales) con la que podamos enviar nuestro SQL a SQL Server y despus de ejecutarlo
leer los resultados devueltos de SQL Server. Esto se conoce comnmente como nuestra interfaz de
programacin de aplicaciones (Application Programming Interface, API) de nuestra base de datos.
Hubo varias API de base de datos a travs de los aos que incluyen la Biblioteca Db, ADO, RDO, ODBC,
OLEDB, ADO.NET y JDBC para mencionar algunas. La implementacin real de esta API puede variar,
pero es comn implementarla como uno o ms archivos DLL. Desde el punto de vista del programador,
puede ser, por ejemplo, llamadas de funcin en un DLL, o una biblioteca de clases. Algunas API pueden
tener un uso limitado en ciertos entornos de programacin. ADO.NET, por ejemplo, est disponible
nicamente en el entorno de programacin .Net.
Sea cual fuere la API que se utilice, generalmente, el DLL que implementa la API debe poder enviar
el comando de SQL desde la aplicacin cliente a su SQL Server. Esto se lleva a cabo utilizando lo que se
denomina una Biblioteca para redes (Network Library) o Netlib. Esto es necesario implementarlo tanto
en la mquina del cliente como en la mquina del servidor. Desde el punto de vista del servidor,
a veces esto se denomina un Endpoint (Extremo). En la actualidad, hay tres Netlib diferentes:
Memoria compartida (Shared Memory)
Esto se utiliza nicamente cuando la aplicacin cliente se encuentra en el mismo sistema operativo que la
instancia de SQL Server. Debido a su arquitectura (un rea de memoria compartida), es la Netlib ms rpida.
Canalizaciones con nombre (Named Pipes)
Esto es prcticamente obsoleto ya que utiliza NetBIOS. NetBIOS es algo que hemos estado tratando de
descartar de nuestros entornos durante las ltimas dos dcadas.
Sockets TCP/IP
Esto es lo que usamos normalmente. Esta es tambin la Netlib predeterminada, la que el cliente
probar primero, suponiendo que el servidor no se encuentra en la misma mquina que el cliente
(donde probar primero con el protocolo de memoria compartida).

2016 Veeam Software

14

SQL Server 101 Qu es SQL Server y cmo funciona?

Nmero de puertos (Port numbers)


Cuando le digo SQL Server y nmero de puerto a alguien, o me miran como si fuera de Marte o dicen 1433.
Una instancia predeterminada se escuchar, de manera predeterminada (se puede modificar), en el
puerto 1433. Y una aplicacin cliente, cuando se aborda la instancia SQL Server utilizando solamente
el nombre de la mquina, nombre de host o direccin de IP, probar con 1433. As es como el cliente
encuentra la instancia correcta en su mquina de servidor. Pero qu pasa si tiene varios SQL Servers?
Recuerde que podemos tener solamente una instancia predeterminada, solo una que escuche 1433.
Una instancia nombrada elegir un puerto libre al preguntarle al sistema operativo cuando arranca por
primera vez. Este nmero de puerto se guarda en el registro y cuando lo inicie la prxima vez, intentar
utilizar el mismo nmero de puerto. Podr ver qu puerto est utilizando una instancia mirando
la informacin de arranque en el archivo errorlog de SQL Server o utilizando la herramienta SQL Server
Configuration Manager, donde tambin puede modificar el nmero de puerto si lo desea.
Pero se podra decir que no nos conectamos utilizando el nmero de puerto. Nos conectamos utilizando
el nombre de instancia, como MachineName\InstanceName. Por supuesto que tenemos algo que
traduce el nombre de la instancia a un nmero de puerto. Este es el servicio SQL Server Browser. Cuando
tenemos la parte de \InstanceName en nuestra conexin, las bibliotecas cliente envan una solicitud
a la mquina del servidor utilizando el puerto 1434 (UDP) y el servicio SQL Server Browser de la mquina
del servidor le responde al cliente con el nmero de puerto en el que est escuchando la instancia.
Nos podemos conectar utilizando el nmero de puerto en lugar del nombre de la instancia mediante
MachineName,PortNumer (o nombre de host o direccin de IP en lugar del nombre de la mquina).

Seguridad y el proceso de registro


Necesitamos una manera de identificar a las personas que utilizan SQL Server y asegurarnos
de que puedan realizar lo que necesitan, pero no ms. O al menos a eso deberamos apuntar.
Para empezar, se necesita una identidad en SQL Server y una manera de autenticarse a uno mismo
con esa identidad. En pocas palabras, nos referimos a algn proceso de registro o inicio de sesin.
Hay dos tipos de inicio de sesin en SQL Server:
Inicios de sesin de SQL Server
Cuando se crea un inicio de sesin de SQL Server, hay que especificar un nombre y una contrasea.
SQL Server almacenar el nombre y un hash de la contrasea. Ya que SQL Server almacena solamente
una versin con hash de la contrasea, no hay manera de descifrar la contrasea, aunque encuentre
los bits almacenados en el disco. Cuando un cliente se conecta a una instancia de SQL Server utilizando
un inicio de sesin de SQL Server, el nombre y la contrasea de inicio de sesin siempre se envan
cifrados del cliente al servidor, cifrados por las bibliotecas del cliente. Las bibliotecas del servidor los
descifran, aplican un hash en la contrasea, se aseguran de que el nombre exista y que la contrasea
con hash enviada por el cliente coincida con el hash almacenado. Esto a veces se conoce como una

2016 Veeam Software

15

SQL Server 101 Qu es SQL Server y cmo funciona?

conexin no fiable. El inicio de sesin de SQL ms conocido es sa. Esto existe desde el principio y es
miembro del rol sysadmin. En mi opinin, nunca debemos utilizar el inicio de sesin sa; debe tener una
contrasea compleja, posiblemente renombrada y definitivamente deshabilitada. El empleado que
necesita privilegios de administrador del sistema en su SQL Server debera tener su propio inicio de
sesin para dichos fines en lugar de utilizar el inicio de sesin sa.
Inicio de sesin de Windows
Cuando se crea un inicio de sesin de Windows, hay que especificar un usuario o un grupo en el entorno
de Windows (en el dominio, probablemente). SQL Server tomar el identificador de seguridad (Security
Identifier, SID) de Windows y almacenar el nombre y el SID. Cuando se conecta utilizando el inicio de
sesin de Windows, a travs de una conexin fiable, SQL Server verifica que el SID que representa al
usuario exista como un inicio de sesin en SQL Server o cualquier de los grupos al que pertenece el
usuario. Si tiene permitido conectarse a un SQL Server utilizando un inicio de sesin de Windows que es
un grupo, todava podemos identificar el nombre de usuario de Windows dentro de SQL Server. Esto es
importante porque no perdemos la capacidad de rastrear quin est conectado o quin hizo qu.
Roles de servidor
A nivel del servidor, hay roles a los que se puede agregar un inicio de sesin como miembro. Existe el rol
pblico del cual son miembros todos los inicios de sesin. Este se puede utilizar para otorgar permisos que
se deberan aplicar a todos. Luego hay ocho roles fijos de servidor. No es posible cambiar los permisos que
vienen con un rol fijo de servidor, pero desde luego que se puede decidir quin (si se asigna a alguien)
debera ser miembro de ese rol. Probablemente, el rol de servidor ms conocido es sysadmin. Como
sysadmin, puede hacer lo que desee, en cualquier lugar, en su instancia de SQL Server. Por supuesto que
esto se debe utilizar con mucho cuidado. Considermoslo como el equivalente de SQL Server a Domain
Admin. Algunos ejemplos de otros roles fijos de servidor son dbcreator y processadmin.
A partir de SQL Server 2012, tambin podemos crear nuestros propios roles de servidor, adems
de agregar miembros y otorgar permisos al rol en lugar de a inicios de sesin individuales.
Obtener acceso a una base de datos: el usuario
Un inicio de sesin solamente le permite conectarse a la instancia. Esto es irrelevante a menos que
tambin pueda acceder a la(s) base(s) de datos que necesite. Este es el concepto del usuario. A veces
lo consideramos como si se mapeara un inicio de sesin a una base de datos o se otorgara acceso para
el inicio de sesin a la base de datos. Pero lo que en realidad estamos haciendo es crear un usuario
(con un nombre) en la base de datos que seale hacia el inicio de sesin. Esto permite que el inicio
de sesin pueda acceder a la base de datos. Luego se le puede dar permiso a este usuario para que
pueda, por ejemplo, SELECT (SELECCIONAR) desde una tabla. En la mayora de los casos, por supuesto
tenemos el mismo nombre para el usuario que para el inicio de sesin. Aunque la conexin del usuario
al inicio de sesin se efecta utilizando el SID para el inicio de sesin. Un SID de inicio de sesin de
Windows proviene de Windows y un SID de inicio de sesin de SQL Server es generado por SQL Server
cuando se crea dicho inicio de sesin. Siempre hay un usuario llamado dbo en cada base de datos.
El inicio de sesin al que pertenece una base de datos tiene el usuario dbo en esa base de datos.

2016 Veeam Software

16

SQL Server 101 Qu es SQL Server y cmo funciona?

Roles de base de datos


Al igual que los roles de servidor, tenemos los roles de base de datos. Podemos asignar un rol de base
de datos a un usuario y los permisos otorgados a estos roles de base de datos ahora tambin estn
disponibles para ese usuario. Hay un rol de base de datos pblico y cada usuario siempre tiene este rol;
se le pueden otorgar permisos si desea que los permisos se apliquen a todos los usuarios de las bases
de datos. Y tambin hay filas fijas de base de datos. Db_owner otorga los mismos privilegios que dbo.
Algunos ejemplos de otros roles fijos de base de datos son db_datareader y db_backupoperator. Tambin
podemos crear nuestros propios roles de base de datos, asignar permisos y agregar usuarios a dicho rol.
Permisos
Algunos permisos se pueden heredar de algunos de los roles fijos de servidor o base de datos. Otros
permisos se otorgan especficamente, ya sea a un rol (de servidor o base de datos, segn el tipo del
permiso) o directamente a un inicio de sesin o usuario. En general, se puede realizar una operacin
si cuenta con privilegios, a menos que haya un rechazo para esta operacin. Los privilegios otorgados
se acumulan y el siguiente prrafo es un ejemplo de ello:
Sue se conecta a SQL Server utilizando autenticacin de Windows. La cuenta de Windows de Sue existe
como inicio de sesin en SQL Server. Sue tambin es miembro del grupo Accounting Windows y ese
grupo tambin existe como inicio de sesin de Windows en su SQL Server. El inicio de sesin de Sue tiene
un usuario en la base de datos A y el inicio de sesin de Accounting tiene acceso a la base de datos B. Sue
podr acceder a ambas bases de datos, A y B. En la base de datos A, el usuario Sue tambin es miembro
de un rol de base de datos llamado X. En esta base de datos, Sue podr realizar operaciones que le
fueron otorgadas y tambin las operaciones que fueron otorgadas al rol de base de datos X. El mismo
principio se aplica a la base de datos B, por supuesto. La excepcin a esto es DENY (DENEGAR), que anula
GRANT (OTORGAR). Con DENY (DENEGAR), se sabe que un inicio de sesin o usuario no puede realizar
la operacin en cuestin. Pero tambin hay una excepcin a esto: un sysadmin puede hacer todo en la
instancia. SQL Server ni siquiera verifica DENY (DENEGAR) para alguien que es sysadmin.

Transferencia de datos, exportar


e importar datos
Pareciera que la necesidad de importar y exportar explot durante la ltima dcada aproximadamente.
Intercambiamos datos con fines comerciales, exportamos para generar informes, realizar migraciones,
desarrollar almacenes de datos, etc. Aos atrs, las herramientas para exportar e importar eran muy
simples. En cuanto se necesitaba algo ms avanzado, como comprender distintos formatos de archivo,
haba que buscar por fuera de los que vena con el producto. Se introdujo la versin 7.0 y populariz
el Data Warehousing. Necesitamos una herramienta para exportar datos desde nuestros sistemas de
produccin a nuestros almacenes de datos. La versin 7.0 introdujo servicios de transformacin de
datos (Data Transformation Services, DTS). Desde entonces, hemos visto distintas nuevas herramientas,
comandos y mejoras en esta rea.

2016 Veeam Software

17

SQL Server 101 Qu es SQL Server y cmo funciona?

Importacin de datos, carga masiva


Importar datos a una tabla tambin se conoce como cargar datos. Hay determinadas rutas de acceso
de cdigo en SQL Server para facilitar la carga de datos de la manera ms rpida y eficiente posible.
Esto es diferente a realizar el comando INSERT (INSERTAR). Hay distintos tipos de optimizacin
que tienen lugar en este escenario, como posiblemente minimizar el registro de transacciones,
optimizaciones en cmo se asigna el almacenamiento, evitar potencialmente los disparadores y las
restricciones de la base de datos, etc. Algunas herramientas y comandos diseados para cargar datos
siempre usan la funcionalidad de carga masiva en SQL Server, mientras que otros le permiten elegir si
desean cargar los datos utilizando un comando INSERT (INSERTAR) normal o como carga masiva. Las
herramientas y funcionalidades para la carga masiva de datos incluyen:
BCP.EXE, que es un comando de consola (un archivo exe de lnea de comandos). Permite exportar de
una tabla a un archivo, o viceversa. Utiliza modificadores de la lnea de comandos para especificar la
tabla, el archivo, la direccin, etc.
BULK INSERT (INSERTAR DE FORMA MASIVA) es prcticamente lo mismo que BCP, pero como un
comando T-SQL y solamente para importar. Una diferencia de arquitectura entre los dos es BULK INSERT
(INSERTAR DE FORMA MASIVA), que es el motor de la base de datos que lee el archivo a importar. Con
BCP, es el cliente (BCP.EXE) que lee (o escribe) el archivo.
SQL Server Integration Services (SSIS) es una herramienta ms avanzada para exportar e importar. A
veces nos referimos a este tipo de herramientas como herramientas para extraer, transformar y cargar
(Extract, Transform and Load, ETL). Se define la transferencia utilizando una herramienta de diseo.
Esto estaba incluido en el producto y se denomin SQL Server Business Intelligence Development
Studio en SQL Server 2008 y SQL Server Data Tools en SQL Server 2012. A partir de SQL Server 2014,
esto ya no est incluido en el producto y es una descarga aparte. Independientemente de la versin, la
herramienta de diseo es a fin de cuentas un complemento al entorno de desarrollo de Visual Studio.
Cuando crea un paquete de SSIS, agrega y configura Tareas (Tasks). Una tarea realiza una accin, como
ejecutar un archivo EXE, crear una carpeta, ejecutar un comando de SQL o enviar un correo electrnico.
Hay una serie de tareas disponibles y se conectan utilizando Restricciones de precedencia, que
bsicamente definen la secuencia para ejecutar las tareas. Un tipo especial de tarea es Data Flow Task
(Tarea de flujo de datos), donde se agregan fuentes y destinos de los datos. Y en el medio puede haber
transformaciones, que pueden hacer cosas como bsquedas, agregados y clculos, entre otros.
El paquete luego se puede ejecutar utilizando distintos mtodos. Se puede utilizar el programa Execute
Package Utility GUI, el programa DTEXEC.EXE de la lnea de comandos o un paso de trabajo de SQL Server
Agent. Hay mucha ms funcionalidad en SSIS. Adems se pueden crear paquetes de SSIS utilizando los
asistentes de importacin y exportacin, que son ms fciles de usar pero menos potentes.

2016 Veeam Software

18

SQL Server 101 Qu es SQL Server y cmo funciona?

Acerca del autor


Tibor Karaszi
Tibor vive en Estocolmo, Suecia. Trabaja con Microsoft SQL Server desde 1988.
En 1997, Tibor gan el ttulo de profesional ms valioso (MVP), como el 7.
MVP de SQL Server en el mundo. Desde entonces, fue galardonado con
el premio MVP todos los aos.
La experiencia de capacitacin en SQL Server de Tibor se remonta a 1991.
Desde entonces, dict capacitaciones internas de SQL Server para Microsoft
en Suecia y a nivel internacional.
Es coautor de varios libros sobre SQL Server y fue un colaborador habitual y editor
de la revista SQL Server Magazine. Tibor tambin dicta conferencias, seminarios
y talleres, inclusive en eventos organizados por Microsoft. Es administrador conjunto
del grupo sueco de usuarios de SQL Server, SQLUG.se, desde su concepcin.
Actualmente, Tibor se desempea como asesor, dedicado exclusivamente
a Microsoft SQL Server. Sus tareas incluyen dictar capacitaciones, revisar tanto
el cdigo como el diseo, ahondar en problemas como socio de consulta
y otras tareas de asesoramiento ms prcticas.

Acerca de Veeam Software


Veeam reconoce los nuevos desafos que enfrentan las compaas de todos los tamaos en todo
el mundo para garantizar la disponibilidad continua (Always-On Business), un negocio que debe
funcionar 24x7x365. Para solucionar esto, Veeam ha sido pionero en generar un nuevo mercado de
Disponibilidad para el Negocio Siempre Activo. A diferencia de las soluciones de backup legacy que
proporcionan un tiempo de recuperacin (RTO) y objetivos de punto de recuperacin (RPO) de horas
o das, Veeam ayuda a las organizaciones a alcanzar un tiempo de recuperacin y objetivos puntuales
(RTPO) de menos de 15 minutos para todas las aplicaciones y datos mediante un nuevo tipo de
solucin que brinda recuperacin de alta velocidad, sistema contra prdidas de datos, capacidad
de recuperacin verificada, aprovechamiento de datos y visibilidad completa. Veeam Availability
Suite, que incluye Veeam Backup & Replication, aprovecha las tecnologas de virtualizacin,
almacenamiento y de la nube que permiten que los data centers modernos ayuden a las empresas a
ahorrar tiempo, reducir riesgos y disminuir drsticamente los costos operativos y de capital.
Fundada en 2006, Veeam actualmente cuenta con 37,000 ProPartners y ms de 183,000 clientes en
todo el mundo. Su sede central se encuentra en Baar (Suiza) si bien tienen oficinas en todo el mundo.
Para ms informacin visite http://www.veeam.com/es-lat.

2016 Veeam Software

19

SQL Server 101 Qu es SQL Server y cmo funciona?

NEW Veeam
Availability

Suite v9

RTPO <15 minutes for


ALL applications and data

Learn more and preview


the upcoming v9 release
vee.am/v9

2016 Veeam Software

20