Usuario:GeriReshef/SQL Server

De Wikipedia, la enciclopedia libre

Microsoft SQL Server (pronunciación, "ese cu ele sérver" o "sícuel sérver") es un sistema de manejo de bases de datos del modelo relacional, desarrollado por la empresa Microsoft.

El lenguaje de desarollo utilizado (por línea de comandos o mediante la interfaz gráfica de magnament studio) es Transact-SQL (TSQL), una implementación del estandard ANSI del lenguaje SQL, utilizado para manipular y recuperar datos (DML), crear tablas y definir relaciones entre ellas (DDL).

Los competidores principales de SQL Server, en el mercado de las bases de datos relacionales, son productos como Oracle, MariaDB, MySQL etc.; SQL Server solo está disponible para sistemas operativos de Windows de Microsoft.

Puede ser instalado utilizando varias instancias en el mismo servidor físico, la primera instalación lleva generalmente el nombre del servidor, y las siguientes - nombres specíficos (con un guión invertido entre el nombre del servidor y el nombre de la instalción).

Versiones[editar]

Historia de versiones
Versión Año Nombre de la versión Nombre clave
1.0
(OS/2)
1989 SQL Server 1-0 SQL
4.21
(WinNT)
1993 SQL Server 4.21 SEQUEL
6.0 1995 SQL Server 6.0 SQL95
6.5 1996 SQL Server 6.5 Hydra
7.0 1998 SQL Server 7.0 [1] Sphinx
- 1999 SQL Server 7.0
OLAP Tools
Plato
8.0 2000 SQL Server 2000 [2]
8.0 2003 SQL Server 2000
64-bit Edition
Liberty
9.0 2005 SQL Server 2005 [3] Yukon
10.0 2008 SQL Server 2008 [4] Katmai
10.25 2010 SQL Azure DB CloudDatabase
10.50 2010 SQL Server 2008 R2 [5] Kilimanjaro
11.0 2012 SQL Server 2012 [6] Denali
12.0 2014 SQL Server 2014 [7] SQL14 (antes Hekaton)

El código original de SQL Server que fue utilizado en las versiones previas a la versión 7.0 habría sido comprado de Sybase, pero fue actualizado en las versiones 7.0 y 2000, y reescrito en la versión 2005. Generalmente, cada 2-3 años, una nueva versión es publicada. Entre dichas publicaciones, se proponen service packes con mejoras y correcciones de bugs, y hotfixes por problemas urgentes en el sistema de seguridad o bugues críticos.

Ediciones y servicios[editar]

Cada versión de SQL Server posee distintas versiones con distintos costos (para cada versión) que dependen también en la configuración física del servidor. [8]​ A continuación se presentan las versiones principales:

Enterprise[editar]

Contempla todas las caracteristicas (deshabilitadas en otras ediciones).

Developer[editar]

Una edición con las mismas caracteristicas como la Enterprise, con el fin de ser instalada solamente en ambiente de desarollo y no en producción. Claro que en el desarollo a a una edición Standard hay que tomar en cuenta las caracteristicas deshabilitadas en la producción.

Standard[editar]

Una versión limitada según la configuración del servidor y sus caracteristicas, diseñada para servidores inferiores.

Por ejemplo: en la versión 2012, la edición Enterprise soporta un número ilimitado de procesadores, y la agregación de memoria y CPUs sin interrupción del servicio o del servidor; mientras la edición Standard esta limitada a 16 procesadores y no soporta la "agregación en caliente".

Express[editar]

Una versión gratituita que posibilta la creación de bases de datos limitadas con caracteristicas basicas, con el fin de apoyar aplicaciones que necesiten una solución simple para almacenamiento de una cantidad limitada de datos, o usuarios que sus recursos y nececidades son limitados.

En la versión 2012, esta edición puede utilizar un maximo de 1 GB de memoria, y almacenar no más de 10GB, funciona en servidores con un número maximo de 4 procesadores.


03/05/2015


SQL Azure[editar]

Es una versión de SQL Server en la nube, que permitía pagar mensualmente por el servicio sin la necesidad de mantener un servidor físico (On Premise). La empresa paga solo por el servicio, y el servicio es manejado a traves de torres de servidores en distintos lugares en el mundo.

Con SQL Azure no es necesario instalar, mantener o actualizar un servidor físico; a pesar que este servicio depende de aspectos relacionados a problemas de seguridad con respecto a su presencia fuera de la empresa y a la disponibilidad de conexion a Internet.

Durante un tiempo, el servicio fue amplificado con opciones para crear un servidor virtual por la red, e instalar SQL Server tanto como uno de los servicios compatidores, y manejar el servidor virtual como si fuera un servidor físico local (aunque físicamente no esta accesible); y se puede difernciar entre la opción original que esta denominada PAAS (Platforma as a Service, El Platforma como un Servicio) y la nueva opción de los servidores virtuales denominada IAAS (Infrastructure as a Service, Infrastructura como un Servicio).

Este servicio esta otorgado por Microsoft desde 2009 y se une a servicios similares de empresas de third-party.

Interfaz de usuario[editar]

SQL Server proporciona unos interfazes que han sido cambiado durante los años, de los cuales los más conocidos son los interfazes gráficos que están utilizados como herramienta de desarrollo estándar a los desarolladores y administradores.

El interfaz gráfico hasta 2005 incluyó el Enterprise Manager con una vista de árbol de los distintos objetos y con la capacidad de manejarlos; y el Query analyzer como interfaz textual para ejecutar comandos de TSQL.

En la versión 2005 las dos herramientas se unificaron a una - el SQL Server Management Studio (SSMS), y a partir de 2008 fue incluida la opción de trabajar con el Visual Studio - el inrefaz estándar de desarrollo de Microsoft (a los distintos lenguajes, BI etc.). Otro interfaz opcional es la utilización de Línea de comandos, con herramientas como SQLCmd, ISQL, OSQL que posibilita la ejecución de scripts y procesamiento por lotes. Desde 2008 se puede desarollar con SQLCmd (SQL Command) a través del SSMS sin interconectarse al interfaz textual de Windows. Otra opción en el ámbito de scripts es la utilización del lenguaje de scripts Powershell de Microsoft.

Aparte de los intefazes estándares de SQL Server, se puede ejecutar comandos de TSQL con herramientas de conexion como ODBC y OLE-DB [9]​.

Servicios[editar]

A contrario de sistemas de bases de datos como Microsoft Access que son "pasivas" y contienen un archivo a cual hay que conectar y la ejecución de los comandos se lleva a cabo en el cliente (la computadora de usuario), en SQL Server hay número de servicios, softwares que estan ejecutadas en la memoria del servidor por parte del sistema, y por lo tanto aprovechan las capacidades del servidor que es mas potente que los clientes, previenen congestión en la red, y pueden programar tareas que corran aun el cliente no esta conectado.

Los servicios principales:

  • SQL Server - El "motor" del sistema
  • SQL Agent - Ejecución de tarreas (Jobs, scripts programados) y envió de advertencias en caso de carga pesada e irregulares en el sistema
  • Full-Text Filter Daemon Launcher - La utilización en los indexes especiales del "Full text search" por busqueda textual avanzada
  • SQL Browser - El "oyente" dedicado a comandos enviados y redigir los a su destino
  • SSIS Server - La operació del SSIS (la herramienta de ETL)
  • SSAS Server - La operación del SSAS (la herramienta de OLAP)
  • SSRS Server - La operación del SSRS (la herramienta de informes)

Capacidades y herramientas basicas[editar]

Bases de datos[editar]

En cada instalación de SQL Server hay 4 bases de datos de sistema, y la capacidad de crear nuevas bases de datos por el usuario, en los cuales los datos estan almacenados en tablas.

Estas bases de datos, creadas por parte de los usuarios, incluyen básicamente un archivo de datos (con el sufijo mdf) con las tablas y los distintos objetos a nivel de la base de datos; y un archivo de registro (con el sufijo ldf) con las transacciones abiertas, y transacciones cerradas, Sujeto al modelo de recuperación seleccionado (se puede acumular en el archivo de registro todos los cambios en la base de datos desde el último respaldo). Se puede crrear un conjunto de archivos de datos además del principal (con el sufijo ndf) por consideraciones de eficiencia, partición de carga de trabajo entre los discos rígidos, etc.

Las bases de datos del sistema:

  • master - Todos los procedimientos, funciones y tablas del sistema que están utilizadas por parte de todas las bases de datos y que estan instalads automáticamente, tanto como las que han sido creado por parte de los administradores del sistema. Además, todas las definiciones en respecto a la seguridad a nivel del servidor, están almacenadas en esta base de datos.
  • msdb - Almacenamiento de las tarreas del agente, los códigos de CLR combinados en el sistema, los paquetes de SSIS, y otros más.
  • model - El molde de las bases de datos. Cada nueva base de datos se crea como una copia de esta base de datos, menos que algo más estaba definido explícitamente.
  • tempdb - Base de datos temporal que se crea de nuevo cada vez que el servicio reinicia. Se utiliza para almacenar tablas temporales creadas por parte de los usuarios o el sistema (por ejemplo en ordenaciones complejos).

11/05/2015


Tablas fijas y temporales[editar]

Desde la perspectiva lógica, los datos almacenados en las bases de datos en tablas, que mediante ellas se implementa la teoria de las bases de datos relacionales. La tabla se divide en filas y columnas (A veces se les conoce como registros y campos). Las tablas pueden ser fijas o temporales, mientras que en el segundo caso existen físicamente en la base de datos tempdb, y se borran automáticamente en caso de desconexión de la sesión o de la conexión al servidor, depende en el tipo de la tabla temporal.

Desde la perspectiva física, el sistema divida los archivos de la base datos en Extents de 64KB, y cada cual a 8 páginas de 8KB. Generalmente, Cada Extent se asigna a una tabla o un índice, menos las tablas pequeñas; y cada página se asigna siempre a una tabla específica. El sistema es responsable del aumento de los archivos, de acuerdo con los ajustes del usuario, y de asignar Extents y páginas a las tablas.

A las tablas se puede crear índices. Los índices se almacenan junto a la tabla (Non Clustered Index) o son la tabla en sí (Clustered Index). Los índices asistan en la busqueda de datos en las tablas (como los ficheros en las librerias), en ordenarlas, y la definición de claves primarias.

Entre las tablas se puede crear relación de uno a muchos.

Aparte de las tablas de los usuarios, hay tablas que almacenan meta data: datos sobre el sistema misma, los diferentes objetos, los derechos, estadisticas sobre el rendimiento del sistema (DMV), etc.

Tipos de datos[editar]

Para cada columna en una tabla y a cada variable o parámetro, se define un tipo de datos que sean almacenados en él, entre ellos:

  1. Numeros: Numeros enteros y no enteros en distintos tamaños, y en diferentes niveles de precisión; y auto incremento opcional.
  2. Textos: Cadenas de distintos longitudes, y distintas capacidades de apoyar distintas lenguas.
  3. Fechas: Fechas en distintos niveles de precisión, desde dias completos hasta fracciones menores de un segundo, que apoyan fechas a partir del principio del siglo 20 o del calendario gregoriano, y la capacidad de diferenciar entre distintos husos horarios.
  4. XML: Datos textuales (cadenas) que representan conjuntos estandartes de datos (estandar SGML).
  5. Datos binarios: Datos almacenados como datos binarios (bits y bytes), que posibilitan el almacenamiento de archivos gráficos, etc.
  6. Geography: Representación estandar de información geográfica, tal como estados, zonas geográficas, localidades; y las calculos como distancias.
  7. Geometry: Representación estandar de puntas, líneas, superficies en el plano; y las relaciones entre ellas.
  8. Hierarchid: Representación estandar de información jerárquica como lista de materiales, relaciones de subordinación entre empleados, etc.

Vistas[editar]

Las vistas representan generalmente comandos de extracción de datos, que se almacenan sin los datos (que están almacenados en las tablas). Esta opción nos posibilita crear extracciones complejos o estandares, almacenarlas como vistas, y utilizar las vistas sin la necesidad de escribir de nuevo los comandos o mantener los códigos donde ellas aparecen. Adicionalmente, es un medio muy importante para otorgar derechos selectivos de lectura (en caso que queremos posibilitar a un usuario contemplar parcialmente las columnas o las filas de una tabla).

Procedimientos almacenados[editar]

Los procedimientos son scripts de comandos de TSQL, que pueden ser ejecutados con distintos parámetros. Por ejemplo, procedimiento que obtiene número de año como parámetro, y actualiza una tabla de resumen de ventas, con las ventas de los agentes en el dicho año, basada en la tabla de registro de ventas.

Funciones definidas por el usuario[editar]

Las funciones es un objeto que combina algunas capacidades de las vistas, con otras de los procedimientos. Como las vistas, pueden extraer datos y ejecutar cálculos, y devuelven un resultado al usuario o al programa que les ejecuto. Tanto como los procedimientos, incluyen codigos de TSQL, y pueden ser ejecutados con parámetros.

Las funciones devuelven un valor o un conjunto de valores.

Transacciones[editar]

Una transacción es un conjunto de comandos, que se está completamente ejecutado o no ejecutado en absoluto: todo o nada. Por ejemplo, si una suma de dinero fue trasladada de una cuenta bancaria a otra, y hay que actualizar ambas cuentas sobre el depósito y la retirada; es obligatorio que ambas cuentas se actualizan juntas, o ninguna (en caso que una de las actualizaciones falla); para evitar consecuencias inconsistentes de un deposito sin ninguna retirada, o vice versa.

SQL Server tiene una capacidad limitada de anidar transacciones.

El optimizador[editar]

El optimizador es un parte del software que "toma la decisión" como cada comando se ejecutará, tanto que la ejecución será lo más eficiente, o por lo menos bastante eficiente (es decir, bastante eficiente para evitar seguir buscando otra solución, que aúnque sea más eficiente, el precio de la busqueda adicional "costara" más que el ahorro de recursos).

SQL es un lenguaje declarativo, en el cual el desarollador declara que quiere extraer o actualizar sin la necesidad de indicar como (a contrario de los lenguajes imperativos, y por lo tanto el optimizador juega un papel protagónico, que de acuerdo con las estadisticas que el sistema almacena sobre las distribuciones de los datos en las tablas, los indexes, y reglas internas; toma la decision adecuada.

privilegios y seguridad de datos[editar]

Para conectarse al SQL Server, se necesita un Login (usuario a nivel del servidor). Cuando la politica de seguridad se define como Windows Authentication y el servidor se combina con las definiciones del Domain, los Logins se definen en el Active Directory. Cuando la definicion es SQL Server Authentication los logins (usuario y contraseña) se definen en el SQL Server mismo. Consecuentemente, en el primer caso hay que identificarse con nombre y contraseña solamente al conectarse a la red, y luego se conecta automáticamente al todos los servidores que son Windows Authentication (con el Login global); y en el segundo caso hay que identificarse al conectarse a cada servidor de SQL Server Authentication (cada vez con un Login local).

A nivel de la base de datos, el usuario se identifica como un User que está relacionado generalmente al Login (que es a nivel del servidor), y los privilegios al User existen solamente en el ambito de la base de datos (además a los privilegios al Login). Para otorgar derechos generales se puede asistirse con listas de Server Roles (roles a nivel del servidor) o Database Roles (roles a nivel de la base de datos especifico), cada cual con privilegios especificos a un rol especifico; y cada usuario asociado con uno de estos Roles obtiene los privilegios asociados con el. Además, el administrador puede otorgar derechos specificos, y crear otros Database Roles (no se puede crear Server Roles).

Los privilegios a nivel de servidor incluyen la capacidad de crear bases de datos, utilizar las tareas (Jobs), crear respaldos de bases de datos y restaurarlos, modificar las definiciones del servidor, etc. Los privilegios a nivel de la base de datos posibilitan extraer y actualizar datos, crear objetos como procedimientos y tablas, utilizar dichos objetos, etc. Com regla general se puede otorgar derechos (Grant), revocar privilegios existentes (Revoke), y denegar privilegios aun no existen (Deny).

Otras herramientas de servicio[editar]

adicionalmente a sus capacidades elementarios como herramienta de gestión de bases de datos relacionales (crear tablas, definir las relaciones entre ellas, gestión de transacciones, crear indices etc, SQL Server apoya una lista que aumenta de otras herramientas de servicio; aparte de herramientas de terceros que cambia o que completa lo que existe.

Respaldos y recuperaciones[editar]

Aparte de soluciones de alternativas a nivel del sistema operativo (respaldo de los archivos de la base de datos), hay una herramienta integrada en el SQL Server que posibilita un respaldo completo o diferencial, de acuerdo con el modelo de recuperación (Recovery Model) predefinido a la base de datos; y una recuperación completa o a un punto de tiempo. Aparte de un respaldo de la base de datos se puede respaldarlos através de un script (con o sin los datos). A partir de 2008, se puede comprimir los archivos de respaldo.

compresión[editar]

A partir de 2008 se añadió la opción de compresión que posibilita comprimir el tamaño físico de las tablas y los índices, y utilizar más eficientemente el volumen de los discos rigidos y reducir operaciones de IO (lo que aumenta la carga del CPU). Como ya ha sido mencionado, se puede comprimir también los archivos de respaldo.

Replicación, alta disponibilidad, y recuperación de desastres[editar]

Algunas herramientas posibilitan crear replicas parciales o completos de las bases de datos, mejorar la disponibilidad, y recuperar de desastres; aparte de la opción de respaldar y recuperar las bases de datos, una opción que se supone que es muy lenta.

Las copias creadas por estas herramientas, pueden ser utilizadas como un respaldo disponible imediatamente en caso de que el sistema falla, tanto como una replica en una subsistema, independiente del sistema de origen, para equilibrio de carga; y que las actualizaciones se ejecuten en la base de datos, y las recuperaciones para los reportajes se ejecuten en la replica.

Entre dichas herramientas se puede mencionar la replicación que posibilita crear una replica sincronizada de la base de datos, el Mirroring que ejecuta en el servidor de espejo cada actualización que se ejecuta en el servidor de origen, Log Shipping que posibilita almacenar una copia sincronizada através de archivos de registro (Log) con todas las actualizaciones en el servidor de origen, y las herramientas de alta disponibilidad y recuperación de desastres (HADR, desde 2012) que solucionan problemas de Mirroring en relación con el tiempo de reacción de los fallos técnicos y la disponsabilidad de las copias en tiempos de paz.

El agente y la programación de tareas[editar]

El agente es el servicio encargado de la programación de tareas, y se encarga de ejecutarlas independientemente. Generalmente el ejecuta tareas de mantenimiento, tareas complejas de ETL, respaldos, etc.

Mantenimiento[editar]

Con el fin de mejorar el rendimiento del sistema hay que mantener las estadisticas, utilizadas por el optimizador, organizar los archivos físicos, etc; y se utilizan herramientas dedicadas para estos propósitos, que se ejecutan periodicamente por tareas programadas, y de una manera coordinada con las tareas de ETL y de respaldo.

Service Broker[editar]

Una tecnología que fue agregada en 2005 que implementa arquitectura orientada a servicios, y que posibilita ejecuciones asincronos: primero que nada para enviar mensajes entre distintas aplicaciones que se ejecutan simultaneamente, pero también para ejecutar procedimientos asincronamente, en la manera de dispara y olvida - un procedimiento se ejecuta en una sesión diferente de la sesión que lo inicio, y ambos procedimientos siguen ejecutado independientemente uno del otro.

Enviar Correos Electrónicos[editar]

SQL Server tiene la capacidad de enviar correos electrónicos a través del código. Esta capacidad se utiliza generalmente para enviar alertas sobre problemas en el sistema (por ejemplo si el CPU aumento a un umbral predefinido o si el proceso ETL falló), pero también cuando el proceso termino exitosamente.

Full Text Search[editar]

Una herramienta que posibilita indexar columnas textuales como textos y no solo como cadenas; y ejecutar busquedas complejas dependientes en el sentido de texto y en el idioma. Por ejemplo, buscamos un verbo, y queremos obtener todas las ocurrencias de sus conjugaciones.

Una herramienta que posibilita indexar columnas textuales como textos y no solo como cadenas; y ejecutar busquedas complejas que dependen en el sentido del texto y en el idioma. Por ejemplo, buscamos un verbo, y queremos obtener todas las apariciones de sus conjugaciones.

Enviar Correos Electrónicos[editar]

SQL Server tiene la capacidad de enviar correos electrónicos a través del código. Esta capacidad se utiliza generalmente para enviar alertas sobre problemas en el sistema (por ejemplo si el CPU aumento a un umbral predefinido o si el proceso ETL falló), pero también cuando el proceso termino exitosamente.

Full Text Search[editar]

Una herramienta que posibilita indexar columnas textuales como textos y no solo como cadenas; y ejecutar busquedas complejas dependientes en el sentido del texto y en el idioma. Por ejemplo, buscamos un verbo, y queremos obtener todas las ocurrencias de sus conjugaciones.

Una herramienta que posibilita indexar columnas textuales como textos y no solo como cadenas; y ejecutar busquedas complejas que dependen en el sentido del texto y en el idioma. Por ejemplo, buscamos un verbo, y queremos obtener todas las apariciones de sus conjugaciones.

Rastrear[editar]

Estas herramientas incluyen el Trace que posibilita rastrear actividades con el fin de mantener cargas y fallos, y seguridad de datos (recuperación no permitida de datos), el Profiler que posibilita rastrear los commandos que se ejecutan y los eventos que se ocurren en el servidor, y el Extended Events que fue agregado en 2008 y cambia el profiler gracias a su baja signatura (la consumpción de recursos y la influencia sobre el rendimiento del servidor).

Aparte de estos, se puede utilizar 2 tipos de Trigers para rastrear los cambios y las actividades: DML Trigers pre definidos sobre las tablas y las vistas y que se inician por instucciones de actualización de datos (Select / Update / Delete), y DDL Triggers que se inician por cambios en los objetos mismos (y no en los datos), en el nivel de la base de datos o del servidor.

Combinación de CLR[editar]

A partir de 2005 se puede combinar facilmente en SQL Server procedimientos, funciones, y funciones de agregado desarolladas en CLR. Hay que desarollar el código en una de las herramientas de desarollo de .NET, crear un archivo DLL, y combinarlo en el sistema. La ventaja de de esta tecnología es sus capacidades en problemas que no son exclusivamente de bases de datos (manipulación de datos), e incluyen calculos complejos o manipulaciones textuales de cadenas.

Herramientas de Inteligencia empresarial[editar]

Una instalación típica incluye también las herramientas de BI (Inteligencia empresarial):

SSIS (SQL Server Integration Services)[editar]

Una herramienta de ETL que posibilita la extracción de datos de distintos orígenes (no solo SQL Server), la transformación de dichos datos, y la carga (generalmente pero no obligatoriamente a almacén de datos).

SSAS (SQL Server Analysis Services)[editar]

Una herramienta para crear Bases de Datos Multidimensionales (no relacionales), que se puede explorarlos mediante extracciones de datos en distintos niveles de agrupación, profundización (Drill Down) de una suma a sus detalles, y utilización de MDX (un lenguaje parecido a SQL, adaptado a bases de datos multidimensionales).

SSRS (SQL Server Reporting Services)[editar]

Una herramienta para crear y dar formato a informes, otorgar derechos de contemplación en ellos, y su distribución. Se puede contemplarlos con un Navegador web, y se puede exportarlos a archivos de Excel, PDF, etc. los datos se extraen generalmente del almacén de datos o del OLAP.

Referencias[editar]