Desarrollado por | Microsoft |
---|---|
Primera versión | 24 de abril de 1989 |
Última versión | 2019 (4 de noviembre de 2019) |
Escrito en | C ++ , C y C # |
Sistema de explotación | Linux , Microsoft Windows y Windows Server |
Leer formatos | Lenguaje de definición de informes de SQL Server Reporting Services ( d ) y Lenguaje de definición de informes de SQL Server Reporting Services (UTF-8) ( d ) |
Formatos escritos | Lenguaje de definición de informes de SQL Server Reporting Services ( d ) y Lenguaje de definición de informes de SQL Server Reporting Services (UTF-8) ( d ) |
Tipo | Sistema de gestión de bases de datos relacionales ( en ) |
Licencia | Licencia propietaria y EULA |
Sitio web | www.microsoft.com/sql-server |
Microsoft SQL Server es un sistema de gestión de bases de datos (DBMS) en lenguaje SQL queincorpora, entre otras cosas, un RDBMS (DBMS relacional ) desarrollado y comercializado por la empresa Microsoft . Funciona bajo el sistema operativo Windows y Linux (desdemarzo de 2016), pero es posible ejecutarlo en Mac OS a través de Docker , porque hay una versión para descargar en el sitio de Microsoft.
Aunque originalmente fue co-desarrollado por Sybase y Microsoft, Ashton-Tate también se asoció con su primera versión, lanzada en 1989. Esta versión fue lanzada en plataformas Unix y OS / 2 . Desde entonces, Microsoft ha portado este sistema de base de datos a Windows .
Cuando se creó, Sybase SQL Server heredó los principios del motor Ingres desarrollado originalmente por la Universidad de Berkeley.
En 1994, habiéndose roto la asociación entre las dos empresas, Microsoft lanzó la versión 6.0 y luego la 6.5 sola, en la plataforma Windows NT.
Microsoft SQL Server es ahora parte de la estrategia de base de datos técnica de Microsoft. El motor MSDE, que es la base de SQL Server, debería eventualmente reemplazar al motor Jet (el que administra las bases de datos de Access ) en aplicaciones como Exchange y Active Directory .
La versión 2005 de SQL Server se publicó el3 de noviembre de 2005al mismo tiempo que Visual Studio 2005 . La compatibilidad con Windows Vista y Windows Server 2008 no se agregó hasta el Service Pack 2 (SP2). Actualmente, el Service Pack 3 está disponible. El optimizador se ha rehecho por completo, al igual que el motor de relaciones.
La versión 2008 de SQL Server (nombre en clave Katmaï) se lanzó en agosto de 2008 . La versión secundaria de 2008 R2 se lanzó en 2010.
La versión 2012 de SQL Server se lanzó en abril de 2012 .
La versión 2014 de SQL Server se lanzó el 1 st de abril de 2014 con un motor “en memoria” complementario al motor relacional.
La versión de SQL Server 2016 se lanzó el 1 st 06 2016.
Durante el desarrollo de la versión 2005, el proyecto era en ese momento uno de los proyectos de TI más grandes del mundo. Más de 1.600 desarrolladores han participado en la codificación del kernel y se estima que más de 10.000 personas más han trabajado en él directa o indirectamente ( interacciones hombre-máquina , documentación, traducción, etc.).
SQL Server se distingue de la competencia por su gran riqueza que no requiere ninguna opción de pago adicional dentro del límite de la versión elegida.
En comparación con sus competidores Oracle , MySQL o PostgreSQL , SQL Server se distingue por el hecho de que es un RDBMS (Relational Database Management System) originalmente multibase y multi esquema . Es posible realizar consultas nativas entre bases. Por ejemplo, la siguiente consulta vincula dos tablas de dos bases de datos diferentes:
SELECT * FROM BASE_A.dbo.TABLE1 AS T1 INNER JOIN BASE_B.dbo.TABLE2 AS T2 ON T1.ID = T2.ID;El optimizador puede hacer un plan de consulta perfectamente optimizado incluso si la consulta consulta datos de varias bases de datos ...
Aunque PostGreSQL es multibase y multiesquema, esta posibilidad de interrogación simultánea no es nativa y hay que pasar por el intermediario de "dblink" que prohíbe los joins y por tanto cualquier posibilidad de optimización ... Oracle con su versión 12 intenta integrar este mismo concepto de multibase (llamado multi-tenant ) pero sufre el mismo problema que PostGreSQL. MySQL es un esquema único, multibase.
La flexibilidad de la gestión de esquemas SQL es tal que es posible transferir un objeto de un esquema a otro con un solo comando ALTER SCHEMA.
Los propietarios son distintos de los esquemas y es posible transferir la propiedad de una base de datos, un esquema o un objeto de un usuario SQL a otro, a través del comando ALTER AUTHORIZATION.
SQL Server funciona de forma nativa en paralelo. Tan pronto como se estima que una consulta excede el umbral de costo en el que se puede paralelizar un plan de consulta, SQL Server reescribe el plan utilizando algoritmos de subprocesos múltiples y si se determina que el nuevo plan es menos costoso, la sustitución se realiza automáticamente. Esta característica existe en todas las ediciones y no es un módulo de pago para agregar como es el caso de Oracle.
Las operaciones físicas de lectura y escritura también se benefician del paralelismo sistemático, ya que las operaciones de E / S las realiza directamente SQL Server y no a través de la capa del sistema, como es el caso de PostGreSQL o MySQL.
En la versión Enterprise, el motor puede comprimir datos a nivel de fila o página en tablas, así como en índices. La compresión de respaldo está disponible en la edición estándar desde la versión 2008 R2.
Desde SQL Server 7 (1998), SQL Server ha hecho posible realizar copias de seguridad de la "base de datos abierta" sin interrumpir el servicio de datos y sin perturbar la actividad del usuario. Esta copia de seguridad se puede realizar de forma global, por grupo de archivos, por archivo o mediante el registro de transacciones.
En SQL Server, las restricciones de unicidad tienen en cuenta el marcador NULL como un valor y, por lo tanto, prohíben la presencia de más de un NULL en las columnas de dicha restricción. Esto no se ajusta al estándar SQL ya que al ser NULL una ausencia de valor, no surge la unicidad. Sin embargo, existe una manera fácil de solucionar este problema, que consiste en crear un índice filtrado único que se relacione con los datos valiosos.
Ejemplo, deja la mesa:
CREATE TABLE T_EMPLOYE_EMP (EMP_ID INT PRIMARY KEY, EMP_NOM VARCHAR(32) NOT NULL, EMP_MATRICULE CHAR(8));Como el número de personal debe ser único para los valores conocidos, la creación de un índice único filtrado sobre los valores expresados en la columna del número de personal permite solucionar el problema:
CREATE UNIQUE INDEX X_EMP_MATRICULE ON T_EMPLOYE_EMP(EMP_MATRICULE) WHERE EMP_MATRICULE IS NOT NULL;En los disparadores de SQL Server es posible actualizar la tabla de destino del evento en el origen de la ejecución del disparador, a diferencia de muchas bases de datos que prohíben esta posibilidad (error de "tabla mutante" en Oracle). Debe recordarse que fue Sybase quien originalmente inventó el concepto de disparador en 1986, poniendo así el código ejecutable en una base de datos relacional por primera vez.
Por ejemplo, un disparador UPDATEen una tabla puede modificar los datos que están pendientes de modificación:
CREATE TRIGGER E_U_PERSONNE ON T_PERSONNE_PRS FOR UPDATE AS IF UPDATE(PRS_NOM) UPDATE T_PERSONNE_PRS SET PRS_NOM = UPPER(PRS_NOM) WHERE PRS_ID IN (SELECT PRS_ID FROM inserted);En el ejemplo anterior, los nombres de los nombres recién insertados o modificados están en mayúscula.
Dado que la reentrada puede conducir a la recursividad, diferentes configuraciones permiten resolver este problema a nivel de base de datos, así como a nivel de instancia.
A diferencia de Oracle o PostGreSQL, donde las vistas materializadas deben actualizarse la mayor parte del tiempo antes de su uso, las vistas indexadas de SQL Server son siempre sincrónicas. Además, el optimizador es capaz de reemplazar sobre la marcha la vista indexada para toda o parte de la consulta (versión Enterprise) lo cual es muy práctico cuando el DBA no tiene acceso al código de programas cliente (caso de aplicaciones de editores) .
Para las aplicaciones diseñadas en .net y que utilizan el conector ADO, SQL Server realiza la agrupación automática. El simple hecho de distinguir dos cadenas de conexión es suficiente para crear dos pools diferentes. Para que la agrupación sea efectiva, las conexiones deben cerrarse una vez que se haya realizado el procesamiento informático.
A través de varios medios, SQL Server le permite administrar de forma centralizada un conjunto de servidores. Puede crear un servidor de administración centralizado, y agregar una lista de los servidores SQL de la empresa para lanzar consultas enviadas simultáneamente en todos los servidores o bien crear o ejecutar el mismo procedimiento en todos los servidores al mismo tiempo, esto en la herramienta SSMS (Estudio de administración de SQL Server).
Asimismo, el programador de tareas y administrador de alertas (Agente SQL) permite definir trabajos multiservidor, como realizar copias de seguridad, desfragmentar índices, recalcular estadísticas o comprobar la integridad física de los espacios.
El motor OLTP de SQL Server tiene muchas características que sería difícil enumerarlas todas. Aquí hay algunos que marcan la diferencia con DBMS más livianos como MySQL o PostGreSQL ...
SQL Server ha sido equipado con un motor "In Memory" desde la versión 2014. Las tablas e índices pueden estar totalmente en memoria (estructura y datos: datos y esquema) o persistentes a nivel de estructura (solo datos). Los procedimientos, dentro de límites bien definidos, pueden compilarse de forma nativa, en lugar de interpretarse. Las actualizaciones siguen siendo transaccionales, sin necesidad de escribir en los archivos de registro de transacciones (versionado "en memoria"), lo que permite mejoras muy significativas en el rendimiento para el procesamiento de cálculos complejos relacionados con grandes volúmenes de datos. Un ejemplo típico es el cálculo del rendimiento financiero de los precios del mercado de valores en tiempo real.
SQL Server fue el primero con la versión 2005 en introducir el operador intraunión APPLYpara facilitar la recuperación de datos encapsulados en una tabla virtual desde una columna de tabla, como es el caso cuando se usa una función de tabla en una consulta donde uno de los argumentos proviene de una de las tablas de la consulta o cuando se tabula XML. El operador APPLYdebe ir precedido de la palabra clave CROSSo OUTERpara definir su comportamiento. Con CROSSsi el argumento es NULL, las filas afectadas se eliminan del resultado mientras que con OUTERellas se conservan.
El operador APPLYes similar al operador LATERALdel estándar SQL, pero su sintaxis más extendida permite operaciones que LATERALno se pueden realizar. Oracle introdujo recientemente este operador en la versión 12.1 (2014).
SELECT top 10 * FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) OUTER APPLY sys.dm_exec_query_plan(qs.plan_handle) ORDER BY total_worker_time DESCEn este ejemplo, usamos la función de tabla sys.dm_exec_query_plan, que devuelve el plan de ejecución, del plan "handle" proporcionado por el argumento "plan_handle" que se encuentra en la vista sys.dm_exec_query_stats. Esta consulta le permite averiguar las 10 consultas que han consumido más tiempo de CPU desde que se inició la instancia.
SQL Server tiene una de las colecciones de intercalaciones más ricas (3.887 en la versión de 2014), lo que le permite controlar 101 idiomas entre los que, además del francés, ¡hay bretón y Córcega! Las intercalaciones permiten realizar búsquedas teniendo en cuenta o no las mayúsculas, minúsculas - CS / CI), acentos y otros caracteres diacríticos (acentos, cedilla, ligaduras ... - AS / AI), los caracteres de ancho (2 = 2 ? - WS) o diferentes tipos de kana (katakana e hiragana del japonés - KS), o incluso realizar comparaciones binarias teniendo en cuenta o no el código hexadecimal. Las intercalaciones son completamente independientes de los juegos de caracteres (Iso_1 sets) aunque permiten simularlos (ASCII, UNICODE, UTF16, EBCDIC ...). El soporte de clasificación se proporciona en cuatro niveles: servidor (1), base (2), columna de tabla o vista (3) y, finalmente, predicado (4), manejo de cadenas de caracteres y clasificación de columnas de texto en consultas.
SELECT * FROM T_UTILISATEUR_APPLICATIF_UTA WHERE UTA_CONNEXION = 'Éric Blüm' COLLATE French_CI_AI AND UTA_MOT_DE_PASE = 'a²E3wx+Z' COLLATE Latin1_General_CS_AS_WSEn el siguiente ejemplo, buscamos un nombre de conexión con una intercalación "suelta" (independientemente de mayúsculas y minúsculas o acentos) y la contraseña con una intercalación "ajustada" (binaria):
La lista de intercalaciones disponibles en el servidor se puede obtener mediante la consulta:
SELECT * FROM sys.fn_helpcollations()Desde la versión 2005, SQL Server admite el tipo XML (fragmento) y le permite manipular XML a través de consultas XQuery / XPath. Una columna de tipo XML se puede escribir a través de una colección de esquemas XML (XSD - Definición de esquema Xml). El siguiente ejemplo muestra la creación de una colección de esquemas XML de un solo elemento y luego la creación de una tabla con una columna XML escrita con esa colección de esquemas:
-- création d'un schéma XML pour validation des données d'une colonne XML CREATE XML SCHEMA COLLECTION XSC_DONNEES_ENTREPRISE as N' <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:company="http://www.exemple.com/entreprise" targetNamespace="http://www.exemple.com/entreprise" elementFormDefault="qualified"> <xs:element name="personnel"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element name="employe"> <xs:complexType> <xs:all> <xs:element name="nom" type="xs:string" /> </xs:all> <xs:attribute name="matricule" type="xs:ID" /> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema>'; -- création d'une table qui possède une colonne de type XML dont les données doivent se conformer au schéma ci avant CREATE TABLE T_ENTREPRISE_EMPLOIS_EEP (EEP_ID INTEGER PRIMARY KEY IDENTITY, EEP_NAME VARCHAR(12), EEP_XML_DATA XML (XSC_DONNEES_ENTREPRISE) --> création d'une colonne XML typée par XSC_DONNEES_ENTREPRISE (collection de schémas XML) );Una consulta SELECT de extracción puede generar una salida XML en lugar de un resultado tabular, a través de la cláusula "FOR XML" de Transact-SQL para la cual hay muchas opciones de presentación. El siguiente ejemplo se utiliza para presentar una jerarquía XML que enumera las restricciones de una tabla en forma de elementos XML:
SELECT TABLE_SCHEMA AS schemaSQL, TABLE_NAME AS nomTable, CONSTRAINT_NAME AS nomContrainte, CONSTRAINT_TYPE AS typeContrainte FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS contrainte WHERE TABLE_NAME = 'DepartementFrancais' FOR XML AUTO, ELEMENTS, ROOT('Contraintes');Esta consulta devolverá, por ejemplo, los siguientes datos:
<Contraintes> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>pk_DepartementFrancais</nomContrainte> <typeContrainte>PRIMARY KEY</typeContrainte> </contrainte> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>chk_DepartementFrancais_ForceSTSRid</nomContrainte> <typeContrainte>CHECK</typeContrainte> </contrainte> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>UK_DepartementFrancais_NomChefLieu</nomContrainte> <typeContrainte>UNIQUE</typeContrainte> </contrainte> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>UK_DepartementFrancais_Nom</nomContrainte> <typeContrainte>UNIQUE</typeContrainte> </contrainte> </Contraintes>Finalmente, es posible manejar directamente datos XML en rutinas (por ejemplo, provenientes de archivos), usando las funciones y procedimientos OPENXML, sp_xml_preparedocument, sp_xml_removedocument ...
Desde la versión 2008, SQL Server integra un SIG en todas las versiones. Esto permite la construcción de objetos geométricos (geometría euclidiana) o geográficos (teniendo en cuenta la curvatura espacial de la corteza terrestre) utilizando los tipos de GEOMETRÍA y GEOGRAFÍA (PUNTO, LINESTRING, POLYGON y combinaciones ...). Se basa en el estándar OGC , al igual que el complemento espacial PostGIS para PostgreSQL . la versión 2012 agregó objetos curvos (CircularStrings, CompoundCurves, CurvePolygons ...) y mejor precisión de cálculos (48 bits en lugar de 27 antes).
Los índices espaciales permiten realizar determinados métodos como STContains, STDistance, STEquals, STIntersects, STOverlaps, STTouches, STWithin ...
De acuerdo con el estándar SQL que ofrece el DATALINK, SQL Server implementa una herramienta similar llamada FileStream que permite almacenar archivos como archivos en el sistema operativo, pero bajo la responsabilidad y control del servidor de la base de datos (serialización, transacción, confiabilidad, seguridad. ..). Esto permite, entre otras cosas, una copia de seguridad integrada y sincrónica de datos relacionales y no relacionales, por ejemplo, para imágenes de productos en un sitio web, como manuales electrónicos en PDF para máquinas en una flota para mantenimiento. Esta herramienta se utiliza principalmente para EDM. Archivos electrónicos que pueden estar sujetos a indexación textual.
Además y desde la versión 2012, SQL Server ofrece el concepto de FileTable, que no es más que una tabla virtual asociada a un punto de entrada (directorio) del sistema informático, con el fin de permitir la gestión bidireccional de archivos electrónicos: los archivos manejados por los lenguajes SQL son accesibles en el sistema de archivos de Windows y viceversa: se puede insertar un archivo o un directorio en la tabla mediante una consulta SQL y este último se verá en el árbol del sistema.
La herramienta de gestión del conocimiento de Sharepoint utiliza este concepto de forma masiva para gestionar los documentos electrónicos que allí se depositan y todas las versiones transitorias.
Introducida con la versión 2008, la capacidad de crear servicios web nativos directamente en el servidor utilizando puntos finales SOAP / HTTP, se consideró obsoleta en la versión 2008 R2 y se retiró en la versión 2012. Sin embargo, SQL Server le permite crear y utilizar internamente muchos puntos finales. para servicios particulares como la creación de reflejo de la base de datos o el intermediario de servicios ...
El objeto de Service Broker es proporcionar una herramienta de mensajería de base de datos para administrar los flujos de datos entre servidores SQL de forma asíncrona, serializados y procesados a través de colas que son tablas del sistema. Esto hace posible crear SODA (Arquitectura de base de datos orientada a servicios), es decir, bases de datos de diferentes instancias que dialogan entre sí a nivel de datos y ya no a nivel de aplicación como es el caso de SOA.
Esto permite crear bases de datos distribuidas, colaborativas y distribuidas, "grid computing" o incluso WorkFlow y, por ejemplo, proporcionar una mejor superficie de ataque para accesos muy competitivos. Este sistema se diferencia de la replicación de datos, por el hecho de que la información se transmite principalmente en forma XML (encriptada), en la capa HTTP (Internet por ejemplo) mediante servicios Web y que no existe obligación para las bases de datos de origen y destino y que las tablas sean estructuralmente idénticas.
Un ejemplo interesante es reemplazar herramientas de mensajería tradicionales como la Serie MQ, por un dispositivo de este tipo, mucho más confiable ...
Service Broker se puede utilizar a través de la edición gratuita de SQL Server Express, se ha utilizado notablemente en la industria para gestionar la información de producción de muchas máquinas de la misma flota con el fin de enviar estos datos a un servidor central. Este es particularmente el caso de la cadena de producción de vacunas de un famoso instituto francés.
Además de las funciones para el desarrollador, SQL Server presenta muchas herramientas para facilitar la administración. Aquí hay algunos.
No confundir con "alta disponibilidad" que consiste en duplicar una base de datos completa, SQL Server tiene 8 modos de replicación de datos (replicación de cierta información de ciertas tablas provenientes de bases de datos a otras bases de datos en otros servidores) incluyendo transaccional, punto a punto , instantáneas o modos de fusión. La replicación desde y hacia Oracle también es compatible con la edición Enterprise.
Sitios web de venta online como Cdiscount , Fnac.com o Vente-privee.com uso de replicación, tanto a los datos se disocian de la FO (Front Office - esencialmente datos del sitio web) y el BO (Back Office - Gestión) facturas, envíos, de valores.. ..), sino también para ampliar la superficie de ataque para absorber la carga de los muchos usuarios.
La duplicación de bases de datos para establecer un sistema altamente resistente se logra a través de cuatro medios diferentes:
Es posible crear reglas comerciales y planificar su funcionamiento. Se trata de verificar un atributo de una faceta, mediante una regla que se puede verificar de diferentes formas. Algunos ejemplos:
Este proceso permite crear una nueva base de datos a partir de una base de datos existente que representa los datos en el momento en que se lanzó la "instantánea". Esta copia de solo lectura se realiza instantáneamente independientemente del volumen de la base de datos inicial. Esto permite, por ejemplo:
Presente desde la versión 2005 en la edición Enterprise, la partición permite dividir tablas e índices de acuerdo con un criterio de datos de la tabla. la solución reutilizable es muy sencilla y se basa en tres etapas:
Una vez que se completan estos pasos, la función y el esquema de partición se pueden reutilizar para otro objeto con fines de alineación de partición, como una tabla de facturas y su detalle subordinado o tabla de filas de factura.
Entonces es posible administrar las particiones (mover, fusionar, dividir ...) usando los comandos ALTER PARTITION FUNCTION ... SPLIT RANGE / MERGE RANGE y ALTER TABLE ... SWITCH PARTITION ... que procesan la mano inmediatamente y actuar a bajo nivel, en segundo plano, para operar los movimientos.
Microsoft SQL Server proporciona muchos asistentes para realizar tareas a menudo ingratas como importar / exportar datos o realizar copias de seguridad / restaurar. Pero si es útil para los principiantes, es la herramienta de gestión del plan de mantenimiento que permite en unos pocos clics realizar todas las tareas imprescindibles para la supervivencia y mantenimiento del rendimiento de una base. Esta herramienta permite, entre otras cosas, realizar las siguientes tareas de forma recurrente:
... y planificar su ejecución.
Debido a que la convivencia en pie de igualdad de todos los usuarios de una misma base puede plantear problemas rápidamente, SQL Server integra un regulador de recursos que permite asignar más o menos recursos (RAM, CPU, discos ...) a un grupo particular de usuarios. El caso clásico es la mezcla de usuarios aficionados a cuadros de mando e informes de todo tipo (por ejemplo controladores de gestión) que consumen gran cantidad de datos, penalizando la producción de datos de los usuarios que realizan entrada de unidades ...
SQL Server integra dos módulos distintos para administrar datos de calidad en las bases de datos:
Database Mail es la herramienta de administración de correo de SQL Server y se basa en Service Broker. Este sistema permite definir varios perfiles de envío de correo (por ejemplo uno para las aplicaciones y otro para la administración) con posible redundancia de los servidores SMTP. El Agente SQL utiliza principalmente el envío de correo electrónico para notificar a veces el éxito, pero a menudo fallas, de las tareas programadas (por ejemplo, que no se pudo realizar una copia de seguridad). El procedimiento msdb.dbo.sp_send_dbmail se utiliza para enviar un correo electrónico, incluso con archivos adjuntos, resultado de la consulta, contenido en texto o en forma enriquecida ...
SQL Server es rico en herramientas de auditoría, ya sea para seguridad, evolución de datos o rendimiento. Describiremos algunos de ellos.
Además de que la auditoría C2 queda obsoleta para ser reemplazada por los criterios comunes (ISO 15408 ), SQL Server ofrece la posibilidad de rastrear todo lo relacionado con la seguridad a través de la auditoría de la base de datos, y todas las acciones posibles tanto a nivel de servidor como a nivel de un base de datos particular.
Este sistema está perfeccionado hasta el punto de que es posible detener automáticamente el servidor en caso de falla del sistema de auditoría, de modo que los intrusos no aprovechen este estado de mal funcionamiento de la trazabilidad para realizar maniobras ilícitas.
SQL Server tiene dos modos que le permiten rastrear automáticamente la evolución de los datos (INSERT, UPDATE, DELETE ...):
CHANGE TRACKING obliga a que las tablas se escaneen en la base de datos, pero alivia el volumen general, mientras que CDC no consulta los datos de producción para aliviar el bloqueo.
Estos dos módulos se utilizan generalmente, uno u otro, para suministrar en modo diferencial grandes almacenes de datos .
La cantidad de la herramienta es tan abundante que muchos usuarios la ignoran, buscando en otras partes de las herramientas de terceros, a menudo pagadas, lo que ya tienen y de forma gratuita al alcance de la mano.
Vista de gestión de datos (DMV)Estos son datos del sistema que presentan estadísticas de ejecución del motor SQL que se pueden usar en forma tabular por pseudo vistas (de hecho, la mayoría de las veces, las funciones internas devuelven un estado tabular de los datos recopilados en la memoria). Esto permite establecer diferentes diagnósticos como:
Con base en el DMV, los informes explotan y presentan los datos de forma sintética. Están disponibles en diferentes niveles del árbol del Explorador de objetos de SQL Server Management Studio, principalmente en el servidor (instancia) y el nivel base.
Contadores de rendimientoSQL Server publica muchos contadores de rendimiento que se pueden consultar directamente en SQL o que se pueden analizar mediante el monitor de rendimiento (perfmon.exe). Estos contadores se pueden leer en la vista sys.dm_os_performance_counters.
AlertasSQL Server le permite configurar alertas sobre errores o métricas que cruzan un umbral a través del Agente SQL consultando los datos del contador de rendimiento o mediante WMI (Instrumental de administración de Windows). Este tipo de alerta permite por ejemplo ser informado por correo electrónico de la saturación de los logs de transacciones o el llenado de los discos del servidor.
Asesor de optimización del motor de base de datosEsta herramienta se utiliza para realizar un diagnóstico de indexación, estadísticas, particionamiento o creación de vistas indexadas cuando se le proporciona un lote de consultas.
Generación de perfiles de SQLEl generador de perfiles SQL le permite rastrear consultas antes y después de la ejecución para proporcionar métricas con fines de análisis principalmente para mejorar el rendimiento (aunque existe un modo "obsoleto" para ver el código obsoleto de algunas aplicaciones).
Estos datos se guardan en una tabla o un archivo (transferible a una tabla) y luego deben analizarse. Las diferentes plantillas permiten niveles mayores o menores de delicadeza de escaneo.
La plantilla "replay" permite capturar una carga y sus métricas que se pueden reproducir en las mismas condiciones (simulación de diferentes usuarios en paralelo) con fines de evaluación comparativa, en particular para cambios en las versiones de SQL Server, como en el hardware. Para reproducir y comparar, debe utilizar el paquete RML disponible de forma gratuita en el sitio de Microsoft.
Eventos extendidos (XE: eventos extendidos)Como complemento y futuro reemplazo del generador de perfiles, XE permite una intrusión más profunda que el generador de perfiles ya que puede escanear casi todas las métricas de operaciones en memoria, en subprocesos o en IO de disco (nivel de sistema). Esto se suma a lo que ya está haciendo el generador de perfiles.
Recolector de datosDebido a que los datos de los DMV son en principio volátiles (existen solo en la memoria, se pierden en cada reinicio) o limitados (en un anillo de memoria), se decidió crear esta herramienta que registra cíclicamente diferentes datos de diferentes fuentes (principalmente de DMV) con fines de retroalimentación mediante informes específicos. Para hacer esto, se debe crear una base de datos de colección y debe iniciar los distintos recopiladores predefinidos, o crear sus propios recopiladores.
Reproducción distribuidaEste dispositivo permite reproducir la actividad de un servidor capturada por una traza del SQL Profiler, simulando una actividad cercana a la realidad, mediante una distribución de solicitudes en diferentes estaciones de trabajo, todo orquestado por un controlador. El objetivo es, por ejemplo, comparar el cumplimiento de la ejecución de una aplicación en una nueva versión de SQL Server o durante un cambio de máquina (mejora del rendimiento).
Microsoft SQL Server ofrece varias funciones:
Para las consultas, SQL Server utiliza el lenguaje SQL en uno de los dialectos más compatibles con SQL, y Microsoft hace que sea un punto de honor corregir de una versión a otra algunos errores pasados heredados del motor Sybase. El dialecto utilizado es el T-SQL (Transact-SQL), una implementación SQL que admite procedimientos almacenados, funciones definidas por el usuario o UDF (función definida por el usuario) y desencadenadores ( disparadores ). Los lenguajes XQuery y XPath se utilizan en diferentes niveles para manipular datos XML dentro de consultas SQL.
Para las transferencias de datos, SQL Server utiliza el formato TDS (Tabular Data Stream) que ha sido implementado en otras bases de datos (especialmente en su contraparte Sybase ) y cuyas especificaciones son públicas. Una implementación de código abierto de un cliente TDS está disponible y forma la base del cliente SQL Server para el proyecto Mono : FreeTDS .
SQL Server está equipado con dos motores de base de datos, uno relacional y otro decisional, es posible realizar consultas en lenguaje MDX o DMX específico para análisis de datos para bases de decisión.
Los lenguajes R y Python se han integrado desde la versión 2016. También es posible desarrollar rutinas SQL (UDF, procedimientos, disparadores) usando un lenguaje .net como VB para .net o C #.
En el motor relacional de SQL Server, es posible definir enlaces entre tablas a través de restricciones declarativas para garantizar firmemente la integridad de los datos entre la tabla de referencia y la tabla secundaria. Estos enlaces de integridad se pueden utilizar para modificar o eliminar líneas enlazadas en la cadena y admitir reglas de evolución de tipo NO ACTION, CASCADE, SET DEFAULT y SET NULL.
SQL Server es un DBMS transaccional. Es capaz de preparar modificaciones a los datos de una base de datos y de validarlos o cancelarlos atómicamente, es decir en "todo o nada". Esto garantiza la coherencia e integridad de la información almacenada en la base de datos. Durante una transacción, los conjuntos de datos que contienen las filas de datos que esta transacción está modificando se bloquean. Los demás usuarios deberán esperar a que finalice la transacción para poder modificarlos nuevamente. Por otro lado, los usuarios concurrentes pueden opcionalmente leer los datos, incluso si han sido bloqueados para modificación por otra transacción, dependiendo del nivel de aislamiento elegido.
Nivel de aislamiento y bloqueoLos bloqueos se realizan a nivel de fila, página, extensión, tabla o base de datos. SQL Server solo bloquea los recursos que necesita (filas de forma predeterminada) y, según sea necesario, puede bloquear en un nivel superior (partición o tabla). Esto elimina la necesidad de que los usuarios esperen el final de una transacción para actualizar filas de datos que no se han visto afectados por un cambio y ayuda a reducir la cantidad de recursos consumidos. El bloqueo puede ser pesimista (los usuarios simultáneos no podrán acceder a las filas de esta transacción) u optimista, en cuyo caso los usuarios simultáneos podrán acceder a la última versión de las filas.
Para que esto funcione, SQL Server le permite controlar el nivel de aislamiento de seis formas diferentes. Los 4 niveles previstos por el estándar SQL
... que se basa en un bloqueo pesimista y dos niveles "optimistas":
Dado que el nivel de aislamiento es dinámico, puede cambiar durante la misma transacción. El nivel de aislamiento READ COMMITTED SNAPSHOT funciona igual que Oracle o PostGreSQL al anular el nivel de aislamiento READ COMMITTED con versiones de filas para un bloqueo optimista.
Registro de transaccionesSQL Server le permite reproducir transacciones de tres formas diferentes:
A diferencia de Oracle o PostGreSQL, SQL Server incluso realiza transacciones de órdenes DDL (CREATE, ALTER, DROP ...) y DCL (GRANT, REVOKE ...).
Es posible definir puntos de control de transacciones (comando SAVE TRANSACTION) para permitir una cancelación parcial (ROLLBACK ...).
Las transacciones se registran en el registro de transacciones ("registro REDO"), las modificaciones de los datos están disponibles de inmediato en la memoria y se escribirán en los archivos de datos durante los puntos de control lanzados de forma periódica y asincrónica. Sin embargo, es posible forzar un punto de control usando la instrucción CHECKPOINT.
El registro de transacciones registra los datos de forma diferente y lo hace de tres formas distintas:
En los modos de registro completo y masivo, el registro de transacciones debe guardarse periódicamente ("registro REDO"); de lo contrario, crecerá indefinidamente. Y gracias a la copia de seguridad transaccional es posible restaurar la base de datos como estaba en cualquier momento al segundo más cercano oa la transacción más cercana (sin embargo, con algunos límites para el modo de registro masivo).
Es posible anidar transacciones, pero dado que el concepto de transacción es un estado de la transacción, no es posible realizar cancelaciones parciales de esta manera. Sin embargo, existen otras formas de preservar algunos de los datos de la reversión de la transacción, incluso a través de variables de tabla.
SQL Server admite transacciones distribuidas a través del Coordinador de transacciones de base de datos (DTC), que implementa una "confirmación en dos fases" según el modelo XA.
Las bases de datos están contenidas físicamente en archivos. Los archivos suelen tener las extensiones:
Los archivos se dividen en bloques de 8196 bytes llamados páginas y se organizan en conjuntos de 8 páginas consecutivas llamadas extensiones. Hasta la versión 2000, las filas estaban limitadas a un tamaño máximo de 8060 bytes (las columnas de tipo LOB (imagen, texto, ntext) no se cuentan para este límite). Desde la versión de 2005, es posible superar con creces este límite y llegar hasta los 2 mil millones de bytes. Por otro lado, el tamaño útil de la página es de 8096 bytes .
Las bases de datos solo pueden funcionar cuando todos los archivos están presentes, pero la lectura es posible durante la restauración, a través del concepto de restauración por partes.
Los archivos de datos se agrupan lógicamente en la base de datos en grupos de archivos que constituyen el destino de los objetos de la base de datos (tabla, índice, etc.) Un grupo de archivos se considera como la unidad de almacenamiento de cualquier tabla o índice y si este grupo contiene varios archivos, luego SQL Server distribuye los datos en todos los archivos (equivalente a un RAID 0), realizándose las operaciones de lectura y escritura en paralelo en los diferentes archivos, bajo el control directo del motor de almacenamiento SQL Server. Estos archivos y grupos de archivos se pueden respaldar de forma independiente incluso si existe una interdependencia lógica entre los objetos de un archivo y otro (integridad referencial en particular).
Debido a su aspecto multibase, SQL Server tiene dos niveles de seguridad: nivel de servidor, a través de cuentas de inicio de sesión, y nivel básico, a través de usuarios de SQL.
A partir de la versión 2005, se han producido cambios de seguridad significativos en la política de SQL Server.
Además, la estrategia de seguridad también cubre la funcionalidad del servidor. Por ejemplo, el procedimiento almacenado xp_cmdshell para ejecutar comandos del sistema está deshabilitado y solo el DBA puede volver a habilitarlo . Asimismo, en cuanto se abre el servidor, todos los archivos de todas las bases de datos quedan bloqueados para lectura y escritura con el fin de evitar cualquier acceso no deseado.
Cuentas de servicioLos servicios que ejecutan cada instancia de SQL Server utilizan una cuenta de servicio (la cuenta del sistema para ejecutar el servicio de Windows). Este último debe elegirse con cuidado para evitar posibles brechas de seguridad en el servidor. Puede ser: Servicio del sistema, Servicio local (desde Windows 2003), Servicio de red (desde Windows 2003), cuenta de usuario de Windows local, cuenta de usuario de dominio. Se recomienda encarecidamente que bloquee los permisos en las cuentas de servicio. En este sentido, y a partir de la versión 2012, durante la instalación se crean cuentas específicas con autorizaciones muy limitadas para cada uno de los servicios de SQL Server (SQL Server, Agente SQL, SSAS, SSIS, SSRS, etc.).
Cuentas de inicio de sesiónLa cuenta de conexión se usa para conectarse a una instancia de SQL Server. Para estas cuentas, se deben definir los privilegios que se aplican a nivel de servidor. El privilegio mínimo es el privilegio "CONECTAR". Un ejemplo de privilegio a nivel de servidor es la capacidad de crear cualquier base de datos. En este caso, es el privilegio CREAR CUALQUIER BASE DE DATOS.
SQL Server se basa de forma predeterminada en el sistema de autenticación de Windows ( Kerberos o nativo) que permite el acceso a una instancia de SQL Server a través de un grupo de Windows o un usuario de Windows. Al conectarse a la base de datos, el usuario es identificado por su inicio de sesión de Windows. Por lo tanto, no necesita dar su contraseña durante la fase de autenticación del servidor.
Como hay casos en los que el usuario no puede ser identificado por su inicio de sesión de Windows (uso de GNU / Linux, de una página web ...) se puede implementar un método de identificación directo a SQL Server. Debe hacerlo explícitamente el administrador de la instancia. Esto supone la creación de un nombre de cuenta SQL y de una contraseña, y para esta última se puede modelar la política de conformación de la contraseña sobre la de Windows.
Al acceder a un recurso externo, el proceso de SQL Server actúa de 3 formas diferentes: por suplantación cuando la capa de Windows está correctamente configurada, el usuario solo puede acceder a los recursos a través de SQL Server, a los que tendría derecho si tuviera acceso directo; por la cuenta de servicio de la instancia, cuando el usuario es administrador de sistemas y para determinadas tareas; no permite el acceso, en todos los demás casos. En el caso de las cuentas de inicio de sesión de SQL, y para acceder a un recurso externo (por ejemplo, enviar un fax en un procedimiento almacenado), SQL Server agrega la capacidad de crear información de inicio de sesión que son cuentas de Windows registradas para este propósito. Por lo tanto, los usuarios de SQL pueden asociarse con estas cuentas de Windows para acceder a recursos externos.
Usuario de SQLUna cuenta de inicio de sesión se puede asignar a un usuario de SQL en una base de datos en particular, en varias o en todas. El nombre de la cuenta de inicio de sesión y el nombre de usuario pueden ser diferentes (y es mejor que lo sea). A un usuario de SQL en una base de datos se le pueden otorgar privilegios que le permiten ejecutar diferentes comandos en varios objetos. Los privilegios se pueden establecer directamente en un objeto de la base de datos o en un "contenedor" como el esquema SQL o la base de datos completa.
Ejemplo de concesión de diferentes privilegios de nivel de esquema SQL a un usuario llamado USR_BANQUE:
GRANT SELECT, INSERT, UPDATE, EXECUTE ON SCHEMA::FINANCE TO USR_BANQUE; RolesSQL Server tiene roles preestablecidos tanto a nivel de servidor como a nivel básico. Incluso es posible crear sus propios roles (nuevo para el nivel de servidor desde 2012). Un rol es una colección de privilegios atribuibles a una cuenta de conexión a nivel de servidor o a un usuario de SQL cuando se creó este rol para una base de datos específica.
Esquema SQLSiendo un esquema un contenedor de objetos en una base de datos, SQL Server te permite definir tantos esquemas SQL como quieras, con el fin de organizar los diferentes objetos en la base de datos y especialmente para gestionar la seguridad a nivel de esquema de forma proactiva. Así, la creación de nuevos objetos, si estos objetos se colocan en los diagramas correctos, automatiza la implementación de la seguridad por herencia. Por lo tanto, no hay ningún comando de ningún tipo para pasar desde el punto de vista de la administración de privilegios, por lo que la seguridad se aplica de inmediato.
Finalmente, y a diferencia de algunos RDBMS (Oracle por ejemplo) no existe privacidad ni confusión entre un esquema SQL y su propietario (el usuario que lo creó) lo que, por ejemplo, facilita enormemente la migración de 'un objeto de un diagrama a otro y garantiza una mayor seguridad.
Ejemplo de migración de una tabla de un esquema SQL a otro:
ALTER SCHEMA BANQUE TRANSFER dbo.T_CLIENT; CifradoSQL Server permite que los datos de la tabla se cifren mediante diferentes algoritmos integrados en SQL Server. Las claves de cifrado y los certificados se pueden importar desde un archivo externo o crearse directamente en la base de datos, siendo SQL Server su propia autoridad de certificación. Sin embargo, existe una tercera posibilidad que consiste en utilizar una caja electrónica para la generación y conservación de las claves denominada HSM ( Hardware Security Module ), destinada a garantizar la inviolabilidad de las claves. Estos dispositivos electrónicos se colocan en la red y se autodestruyen en caso de un intento de acceso ilegal, ya sea físico o lógico.
Una copia de seguridad de la base de datos incorpora todas las claves y certificados para garantizar el cifrado y el descifrado. Pero la restauración de una base de datos en un servidor diferente al original requiere descifrado seguido de nuevo cifrado. Los elementos que componen la arquitectura de cifrado son interdependientes entre sí a partir de una clave secreta que se mantiene en el nivel de la instancia. Sin embargo, para proceder con el cifrado o descifrado, es necesario abrir la clave ya sea con un certificado o dando la contraseña.
SQL Server le permite cifrar los datos de la tabla o cifrar el código de las rutinas.
Finalmente, SQL Server permite que el almacenamiento de datos esté cifrado y no más datos a través de TDE (Cifrado transparente de datos). Los archivos (registros de transacciones, datos de tablas e índices) se cifran cuando se escriben físicamente en discos y se descifran cuando se leen físicamente de los discos a la memoria. De este modo, los datos se muestran en la memoria, lo que permite mantener el rendimiento mientras se cifra toda la base de datos.
La versión 2016 agregó cifrado de extremo a extremo, es decir que el descifrado controlado por el servidor, se puede hacer a nivel de aplicación y ya no en la base de datos.
Las tablas son los objetos que realmente contienen los datos en la base de datos. Son de dos tipos:
Una tabla puede contener hasta 30 000 columnas cuya suma de tamaños no supere los 2 mil millones de bytes . Columnas de tipos de BLOB (VARCHAR (máx.), NVARCHAR (máx.), VARBINARIO (máx.)) Que se almacenan fuera de la fila.
Las tablas pueden tener una clave primaria . La clave principal siempre está indexada . Otras restricciones también están disponibles a nivel de tabla , tales como: restricciones únicas (indexadas automáticamente), valores predeterminados, restricciones de verificación, claves externas .
Una vista es una consulta con nombre de la base de datos. Se consulta de la misma forma que una tabla.
Los datos devueltos por la vista se reconstruyen a partir de los datos contenidos en las tablas cada vez que se llama a la vista (a excepción de las vistas indexadas que almacenan los resultados). SQL Server reemplaza el nombre de las vistas en la consulta que se ejecutará con sus definiciones, luego la consulta resultante es compilada, optimizada y ejecutada por el motor. El plan compilado de la consulta así obtenido se almacena para permitir su reutilización durante una próxima llamada. Dado que SQL Server tiene optimización semántica además de optimización estadística, las ramas de las combinaciones que son innecesarias para el funcionamiento de una vista se cortan sistemáticamente para la optimización, cuando es posible.
Bajo ciertas condiciones, es posible actualizar los valores en una vista. Ejemplos de estas condiciones son:
SQL Server implementa tipos especiales de vistas que son vistas particionadas y vistas indexadas (equivalentes a las vistas materializadas síncronas de Oracle).
La indexación en SQL se proporciona de cuatro formas: indexación relacional, indexación vertical, indexación textual e indexación específica para ciertos tipos de objetos.
Indexación relacionalSe relaciona con el contenido completo de las columnas. El mecanismo interno de estos índices se basa en la noción de árbol equilibrado (B-Tree).
Hay dos tipos de índices :
Solo puede haber un índice agrupado por tabla, ya que este tipo de índice es en realidad un "tipo" de tabla. Por lo tanto, las filas de la tabla están ordenadas lógicamente en el orden del índice agrupado, lo que explica por qué solo puede haber uno. En otras palabras, como el índice agrupado es un árbol b , las hojas del índice son directamente las filas de la tabla.
Un índice no agrupado no refleja el orden físico de las filas de la tabla.
Ambos tipos de índice se construyen a partir de una clave , formada por varias columnas. Le permiten encontrar rápidamente un dato de todas o parte de las columnas de esta clave.
Así, si consideramos una clave (A, B, C), podemos hacer búsquedas en los campos (A), (A, B) y (A, B, C). Los campos se consideran en el orden de la clave; por tanto, no es posible realizar una búsqueda en, por ejemplo, (B, C) o (C) con este índice. Por otro lado, una búsqueda en (A, C) se beneficiará fácilmente de la indexación de la columna A.
Una tabla puede contener 999 índices. Cada índice puede contener 16 columnas cuya suma de tamaños no supere los 900 bytes . Los índices contienen además de los datos de las columnas del índice un marcador hacia los datos de la tabla. Esto puede ser o bien un puntero a una línea, o una de las claves del índice agrupado (en Inglés: Índice clusterised ).
El optimizador de SQL Server elige qué índice usar. Es posible que no esté usando el índice que creó porque el costo de buscar en ese índice puede ser mayor que leer la tabla completa. Para realizar estas elecciones, el optimizador utiliza, entre otras cosas, las estadísticas de la tabla y la presencia o ausencia de restricciones. Sin embargo, es posible forzar al optimizador a usar un índice con la cláusula WITH (index_name), sin embargo, esta práctica no se recomienda.
El índice está organizado en árbol-b . Esto permite clasificar la información más rápidamente que si tuviera que insertarse en una tabla secuencial. Debido a que esta disposición requiere mucho almacenamiento, la versión 2005 de SQL Server le permite separar los datos de búsqueda y los datos de proceso que están integrados en el índice.
SQL Server le permite crear columnas calculadas que, si persisten (PERSISTED), se pueden indexar.
No hay otra estructura de índice que no sea el árbol b . Por ejemplo, no existe un índice de mapa de bits , lo que facilitaría las búsquedas en campos con contenido poco variado, pero basta con crear una tabla de referencia para simular un índice de mapa de bits. Asimismo, no existe un índice hash. Pero simplemente cree una columna hash calculada (función CHECKSUM) e indexe para lograr un efecto similar. Finalmente, no es posible crear un índice en una expresión, sino simplemente crear una columna calculada con dicha expresión e indexarla para lograr el mismo efecto.
Indexación verticalSQL Server le permite crear los llamados índices "verticales" (índice de almacén de columnas) en un conjunto de columnas que permiten el acceso a todas las columnas indexadas en el mismo plan. De hecho, en un índice relacional de varias columnas, el orden de cada columna en la clave de índice solo permite ciertas combinaciones de búsquedas. Este no es el caso de la indexación vertical, que permite todas las combinaciones de búsquedas. Por ejemplo, con la tecla (A, B, C), es posible buscar tanto en (A), (B) o (C), pero también en cualquier combinación de dos o tres columnas (A, B), ( B, A), (A, C), (C, A), (B, C), (C, B), (A, B, C), (A, C, B), (B, A, C), (B, C, A), (C, A, B), (C, B, A).
En la versión de 2012, estos índices son de solo lectura y, por lo tanto, están destinados principalmente a bases de datos de tipo DataWarehouse para inteligencia empresarial. En la versión de 2014, estos índices se pueden modificar.
Indexación textual y semánticaLa indexación textual (de hecho, un catálogo de indexación) permite búsquedas en texto claro ("texto completo", conforme al estándar SQL con el predicado CONTAINS) o al modo de Google usando el predicado FREETEXT. Se permite buscar diferentes palabras en un mismo documento (texto de las columnas de una tabla o documento electrónico almacenado en una tabla) por igualdad, comienzo, proximidad, pero también por forma declinada (conjugación, plural, femenino, etc.) , sinonimización, extensión (especialmente para siglas) ... así como con pesos relativos (función de tabla CONTAINSTABLE y FREETEXTTABLE).
La indexación textual puede relacionarse con cadenas de caracteres o columnas de tipo XML, pero también con archivos electrónicos, ya sea que estén almacenados directamente en una tabla (en un BLOB) o como un archivo a través de FILESTREAM o en un FILETABLE. SQL Server reconoce más de 50 formatos de archivo de forma nativa y le permite agregar muchos otros tipos de archivos electrónicos usando "ifilter".
SQL Server admite la mayoría de los idiomas y permite búsquedas combinadas multilingües. Para ello, se pueden establecer listas de "palabras negras" para cada uno de los idiomas indexados. Además, SQL Server indexa todas las palabras sin excepción, incluidas las palabras negras, donde algunos RDBMS se limitan a palabras con una longitud mínima (MySQL por ejemplo) o excluyen las palabras negras (PostgreSQL por ejemplo). Finalmente, si el caso no es importante para la indexación textual, el usuario puede elegir si quiere una indexación textual teniendo en cuenta o no los caracteres diacríticos, como acentos o ligaduras. La indexación de texto también permite buscar metadatos en archivos electrónicos, por ejemplo, el autor de un archivo de Word.
Con la versión 2012, SQL Server ha agregado la indexación semántica que, como su nombre indica, le permite realizar búsquedas semánticas. Esta funcionalidad requiere la adición de una base de datos de procesamiento semántico destinada a establecer estadísticas sobre los textos indexados. La investigación semántica se centra en el significado de los documentos. Esto permite la extracción automática de etiquetas, el descubrimiento de contenido relacionado y la navegación jerárquica a través de documentos con contenido similar al texto de referencia. Un ejemplo práctico es consultar el Índice de similitud de documentos para identificar en un lote de currículums, cuáles coinciden mejor con la descripción del trabajo.
Indexación de objetosSQL Server permite la indexación de ciertos tipos de datos de objetos, como XML (cuatro tipos de índices) o espaciales (tipos de geometría y geografía ). Como es posible agregar sus propios objetos, a condición de describirlos en formato .NET, también es posible indexarlos, a condición de que disponga que estén " ordenados por bytes " en la organización de su almacenamiento.
Es posible definir procedimientos almacenados codificados en Transact-SQL así como en .NET (SQL CLR). Un procedimiento almacenado es una serie de instrucciones que pueden modificar los datos de la base de datos y encapsular transacciones y que devuelven uno o más valores.
Los procedimientos almacenados en SQL Server pueden tomar como parámetros y / o devolver enteros, cadenas de caracteres, fechas, cursores, tablas, tablas virtuales y cualquier otro tipo definido en SQL Server por defecto o por los usuarios.
Las principales ventajas de utilizar procedimientos almacenados son:
El disparador es un código almacenado que se ejecuta después de (DESPUÉS) o en lugar de (EN LUGAR DE) una acción en particular (insertar, modificar, eliminar) en una tabla o vista. Es posible codificar tantos desencadenadores AFTER como desee en una sola acción (INSERT, UPDATE o DELETE) de la misma tabla o vista. En el caso de una pluralidad de disparos sobre la misma acción de la misma mesa, el orden de los disparadores es arbitrario, excepto los 3 primeros que pueden imponerse. INSTEAD OF triggers deben ser únicos por evento / tabla.
Se crean dos tablas virtuales para manejar datos insertados, modificados o eliminados: insertados (para inserción y modificación) y eliminados (para eliminación y modificación). No es posible modificar el contenido de estas tablas virtuales. Por el contrario, SQL Server le permite modificar la tabla de destino del desencadenador, como revertir la transacción implícita que generó el desencadenador al revertir la transacción (ROLLBACK).
El disparador particular INSTEAD OF se puede usar cuando se desea interceptar el evento, no para dejar que ocurra, sino para codificar otra acción. Este tipo de disparador se puede usar, por ejemplo, en el contexto de un mapeo relacional / de objetos donde manipulamos vistas compuestas por múltiples combinaciones donde queremos que el usuario pueda realizar actualizaciones (INSERT, UPDATE, DELETE) directamente en estas vistas. En este caso, los datos INSERTAR, ACTUALIZAR o ELIMINAR se dividen para cada una de las mesas en juego y se lanza una serie de órdenes específicas para cada mesa a visualizar mediante una transacción.
Desde SQL Server 2005, se ha agregado la capacidad de crear desencadenadores DDL. Estos desencadenadores DDL actúan después de la ocurrencia de eventos de tipo CREATE, ALTER o DROP, y estos eventos se pueden capturar en el nivel del servidor (por ejemplo, CREATE DATABASE) o en el nivel de la base de datos (por ejemplo, DROP TABLE). Para obtener detalles sobre el evento interceptado, un paquete de datos XML (obtenido por la función EVENTDATA ()) proporciona múltiples detalles sobre el origen y la naturaleza del evento. Incluso existe la consulta SQL que lo desencadenó.
Se utiliza un tipo particular de disparador para interceptar conexiones al servidor (disparador FOR LOGON).
Desde SQL Server 2000, es posible crear funciones en Transact SQL y desde 2005 en .net (SQL CLR).
Estas funciones son de 3 tipos:
Sin embargo, existen restricciones sobre la funcionalidad que se puede utilizar en el cuerpo de una función. No es posible utilizar funciones no deterministas y la función no debe modificar datos o parámetros del sistema de forma permanente o permanente. Esto prohíbe, por ejemplo, el uso de un INSERT en una tabla o el uso de la función GETDATE ().
SQL Server 2005 agregó:
A diferencia de un procedimiento almacenado, una función no puede contener:
Esto tiene sentido, porque el propósito de una función es, sobre todo, que se utilice dentro de una consulta.
Las funciones de tabla en línea, que actúan como vistas parametrizadas, pueden actualizar las tablas subyacentes.
Desde la versión 2005, SQL Server incorpora aspectos de objetos que incluyen:
Esta herramienta se incluye con las versiones pagas de SQL Server. Le permite conectar y administrar los distintos motores de SQL Server (SSRS, SSIS, SSAS y el motor relacional). Permite que el motor relacional desarrolle scripts TSQL, con la posibilidad de agruparlos todos dentro de una solución (como en Visual Studio). También se pueden guardar con Visual SourceSafe o Team Foundation Server. Para la versión Express (gratuita), la herramienta simplificada SQL Server Management Studio Express Edition (SSMSE) está disponible de forma gratuita.
Antes de 2005, esta herramienta se dividía en dos módulos llamados "Enterprise Manager" y "Query Analyzer".
Al igual que SSMS, esta herramienta viene con versiones pagas de SQL Server. Es una superposición de la herramienta de desarrollo genérica de Microsoft Visual Studio adecuada para crear proyectos de BI (Analysis Services, Integration Services o Reporting Services). Todos estos proyectos se pueden encontrar en el grupo "Proyectos de Business Intelligence".
Esta herramienta le permite capturar la actividad de una base de datos. Permite a los administradores comprobar los elementos y las consultas que consumen mucho tiempo en la base de datos. Opcionalmente, es posible reproducir la captura en un servidor de prueba. Tiende a ser reemplazado gradualmente por el sistema de "eventos extendidos" (Eventos extendidos).
De hecho, MS SQL Server es una suite compuesta por cinco servicios principales:
Se le asocian otros servicios para determinadas necesidades:
SQL Server también incluye muchas herramientas de desarrollo:
Más de cien herramientas periféricas están disponibles, ya sea durante la instalación (SQL Profiler, Database Tuning Advisor, Data Collector, etc.), o directamente en el sitio de Microsoft (SQLdiag, SQLioSim, SQL Server Best Practices Analyzer ...), oa través de el sitio de la comunidad de código abierto Codeplex (RML Utilities, PAL, Open DBDiff ...).
Una instancia de SQL Server es una instalación de algunos o todos los servicios de SQL Server en una máquina Windows y puede albergar muchas bases de datos. El mismo sistema operativo admite hasta 50 instancias diferentes (lo que no se recomienda en producción).
SQL Server 2014 no está limitado en número de núcleos o RAM, solo por la capacidad de Windows. Una base de datos está limitada a 524 peta bytes (Po), pero como SQL Server puede albergar varias bases de datos y 32760 bases en la misma instancia, la capacidad general del sistema puede manejar teóricamente 17166240 Po datos. Con 50 instancias en la misma máquina, este límite teórico se retrocede a 858312000 Po ...
SQL Server existe en diferentes ediciones: CE (Compact Edition - solución integrada para teléfonos inteligentes), Express (varias versiones - gratis), Web (en modo SPLA: Acuerdo de licencia de proveedor de servicios - con hosts web), Standard, BI y Enterprise - esto para producción. La edición Developper (equivalente a la edición Enterprise) está en desarrollo.
Este es el motor de la base de datos. Cada instancia de SQL Server tiene un servicio de Windows Sql Server correspondiente. Este servicio se puede encontrar en los servicios de Windows con los nombres MSSQL $ Instance_name para instancias con nombre y MSSQLServer para la instancia predeterminada.
Cada instancia creada tiene inicialmente de 4 a 6 bases de datos del sistema. El motor de SQL Server se basa en la base de datos del sistema maestro que contiene la definición de las otras bases de datos.
Las otras bases del sistema son:
Este es el agente de mantenimiento para la instancia de SQL Server. Cada instancia de SQL Server tiene un servicio de Agente de Windows Sql Server correspondiente. Este servicio se puede encontrar en los servicios de Windows con los nombres SQLAgent $ InstanceName para instancias con nombre y SQLAgent para la instancia predeterminada. El motor del Agente SQL Server se basa en la base de datos msdb . Este motor se utiliza para gestionar copias de seguridad, planes de mantenimiento, trabajos programados, seguimiento de bases de datos, alertas administrativas ...
El agente también tiene la función de supervisar el servicio de SQL Server y activarlo automáticamente para que se reinicie en caso de un cierre inesperado.
Índice de texto completo / motor de búsqueda.
También conocido como MS DTC, se utiliza para administrar transacciones distribuidas. Es decir, transacciones entre varios servidores de transacciones de SQL Server, entre un SQL Server y otros servidores de bases de datos, entre varias fuentes de datos diferentes, ya sean motores de base de datos o componentes simples.
El servicio que apareció en SQL Server 2000 permite consultar periódicamente la base de datos y, en función de estas solicitudes, notificar a los grupos suscritos a estos eventos. Este servicio ya no se proporciona de forma estándar desde SQL Server 2008. SQL Server, con nombre en código Denali, ofrece una funcionalidad similar en SQL Server Reporting Services y Sharepoint 2010, conocida como Alerting.
La plataforma de inteligencia empresarial SQL Server consiste en un ETL , que apareció con SQL 7, un motor multidimensional, también apareció con SQL 7, y un motor de informes, agregado en 2004 bajo SQL 2000. Con SQL Server versión 2005, un estudio de desarrollo para La inteligencia empresarial se integró en Visual Studio 2005: BI Development Studio.
SQL Server 2008 admite un nuevo tipo de datos primitivos: el tipo geográfico donde se produce la proyección (latitudes y longitudes) y el tipo geométrico sin proyección para manipular datos relacionados con puntos, líneas y polígonos. El primer software compatible con SQL Server es el software Manifold System (en) y MapInfo, GeoMedia.
Un servicio que apareció en SQL Server 2005, es el reemplazo de los Servicios de transformación de datos (DTS). El ETL se ha reconstruido por completo y compite con otras herramientas ETL profesionales del mercado.
El objetivo es la integración de la empresa a través de sus datos. SQL Server Integration Services (SSIS) es una plataforma de integración de datos completa. SSIS, no es un simple ETL. Es una plataforma de integración de datos completa, que ofrece una serie de herramientas gráficas de desarrollo y gestión, servicios, objetos programables y API (interfaces de programación de aplicaciones). SSIS contiene un motor de flujo de trabajo que admite lógica compleja y se puede utilizar para una amplia variedad de operaciones de mantenimiento de bases de datos y operaciones sofisticadas de transferencia de datos. La arquitectura SSIS se compone básicamente de dos partes: el motor de tiempo de ejecución de transformación de datos, que gestiona el flujo de control de un paquete, y el motor de flujo de datos o motor de canalización de transformación de datos, que gestiona el flujo de datos de las fuentes de datos, a través de transformaciones, ya los objetivos de destino.
SQL Server Analysis Services (SSAS) es un servicio que apareció en SQL Server 7, conocido en ese momento como OLAP Services. Te permite generar cubos OLAP , datos agregados y multidimensionales. También permite implementar algoritmos de minería de datos .
Este servicio, que apareció en SQL Server 2000, es un motor de generación de informes. Lo componen dos servicios web, uno que permite su administración, el otro la generación, la suscripción, la rendición de los informes. Las representaciones se realizan en Excel, PDF, HTML y Word (a partir de la versión 2008).
Aparecido con SQL Server 2008 R2, admitirá hasta 256 procesadores lógicos, así como virtualización ilimitada y una cantidad ilimitada de memoria.
Admite un número ilimitado de procesadores y tamaño de RAM (limitado por el sistema operativo). Existe una versión de 32 bits (x86) y 2 versiones de 64 bits (ia64 y x64, x64 solo para SQL Server 2005) y no hay límite en el tamaño de las bases de datos. Solo se puede instalar en una versión de servidor de Windows . Incluye todas las funciones del motor, incluidas las funciones de alta disponibilidad. Las funcionalidades para la inteligencia empresarial están incluidas desde la generación de informes con Reporting Services hasta el uso de cubos OLAP con Analysis Services hasta la transferencia de datos con Integration Services (SQL Server 2005) o Data Transformation Services (SQL Server 7) & 2000). . También puede operar en un clúster de hasta 8 nodos.
Esta es una edición para desarrolladores que tiene la misma funcionalidad que la edición Enterprise. Sin embargo, la licencia contiene restricciones sobre su uso. La licencia prohíbe la operación en producción. Está destinado exclusivamente para uso de prueba. Sin embargo, no existen restricciones sobre los productos disponibles.
Admite hasta 4 procesadores y un tamaño de RAM ilimitado (limitado por el sistema operativo). Existe una versión de 32 bits (x86) y 2 versiones de 64 bits (ia64 y x64, ambas solo para SQL Server 2005) y no hay límite en el tamaño de las bases de datos. Sin embargo, SQL Server 2005 permite su instalación en Windows de escritorio. Incluye todas las funciones del motor excepto algunas funciones de alta disponibilidad. Las funcionalidades para inteligencia empresarial están incluidas desde la generación de informes con Reporting Services (para SQL Server 2000, este componente debe cargarse por separado) hasta el uso de cubos OLAP con Analysis Services, incluida la transferencia de datos con Integration Services (SQL Server 2005) o Servicios de transformación de datos (SQL Server 7 y 2000). También puede operar en un clúster de hasta 2 nodos desde su versión 2005.
Apareció una nueva edición con SQL Server 2005. Admite hasta 2 procesadores y 3 GB de RAM. Por el momento, solo está disponible en una versión de 32 bits y no tiene límite en el tamaño de las bases de datos. Incluye la mayor parte de la funcionalidad del motor, incluida la capacidad de participar en una réplica como editor. La funcionalidad de inteligencia empresarial incluida se limita a la generación de informes con Reporting Services. Esta edición desaparece con la versión 2012 de SQL Server.
Apareció una nueva edición en SQL Server 2008. Cerca de la edición estándar en términos de funcionalidad, sin embargo, no es compatible ni con la duplicación ni con los componentes de toma de decisiones de SQL Server. Su licencia solo permite su uso como servidor de base de datos para un sitio web o servicio. Está disponible como suscripción mensual especialmente para hosts, además de estar disponible de manera más convencional para su compra.
Edición existente con SQL Server 7 y SQL Server 2000. Admite hasta dos procesadores y 2 GB de RAM . Solo está disponible en la versión de 32 bits y no tiene límite en el tamaño de las bases de datos. Incluye la mayor parte de la funcionalidad del motor, incluida la capacidad de participar en la replicación como suscriptor. No tiene funcionalidades para inteligencia empresarial. En términos de licencias, tener una Licencia de acceso de cliente (CAL) de SQL Server es suficiente para usar esta edición.
Similar a SQL Server Edition Express, con las limitaciones de memoria, número de procesadores y tamaño de la base de datos eliminados, sin embargo, solo se puede usar localmente y solo puede alojar bases de datos de aplicaciones de Microsoft. Productos como Sharepoint o ciertas características de Windows Active Directory lo utilizan.
Microsoft ha publicado una edición gratuita que consta únicamente del motor de base de datos relacional, limitado a 4 GB de espacio en disco (10 GB en la versión 2008 R2). Sin embargo, se puede utilizar para crear hasta 32.760 bases de datos diferentes, es decir, más de 320 TB de datos de la versión 2008 R2.
Anteriormente llamado: Pocket PC / Mobile / Everywhere Edition. Esta es una edición liviana adecuada para usar en PDA o teléfonos inteligentes equipados con Windows Mobile . La versión Compact (versión 3.5), que sucede a las ediciones Mobile, está abierta a las estaciones de trabajo clásicas basadas en Windows . Esta edición puede participar en la replicación como suscriptor.
SQL Server admite 5 sistemas de licencias:
Los tipos de licencia que se pueden considerar para usar SQL Server detrás de un front-end web son la licencia por procesador o núcleo o el modo SPLA limitado a la edición web.
Vale la pena mencionar algunas herramientas relacionadas con SQL Server ...
Solución de Microsoft para la integración de datos EAI (Enterprise Application Integration) y B2B (business-to-business).
Solución global de gestión del conocimiento empresarial (KB - Knowledge base) que permite la gestión de contenidos (vía web y foro) y documentos electrónicos compartidos, recuperación de información, así como la posibilidad de crear formularios y presentación de estadísticas de toma de decisiones como cuadros de mando, indicadores clave ( KPI - Indicador clave de rendimiento) ...
Este es el ERP (planificación de recursos empresariales) de Microsoft.
Es una fragua de software que permite la gestión de código fuente, compilaciones, seguimiento de recursos, planificación de tareas ...
Sistema de gestión, supervisión y mantenimiento centralizados del sistema informático (servidores, PC, periféricos online) y de la infraestructura de la red.
Servicio de distribución para el sistema operativo Microsoft y aplicaciones para la actualización de las distintas máquinas Windows en un parque informático (utiliza la versión Express gratuita)
StreamInsight es una plataforma diseñada para desarrollar e implementar a gran escala aplicaciones de procesamiento de eventos complejos (CEP). Se basa en dos componentes esenciales: StreamInsight Server para la gestión de flujos de datos y StreamInsight Framework para la creación de interfaces.
EDF utiliza StreamInsight para la gestión de incidentes de todos sus equipos de TI.
Muy comprometido con este movimiento, particularmente a través de Hadoop, Microsoft ofrece diferentes soluciones para administrar big data.
HDInsight (Hadoop)HDInsight es una solución de Hadoop que se ofrece en la nube de Azure o en las instalaciones (con fines de desarrollo).
Las herramientas de lenguaje Map / Reduce, Hive, Sqoop y Pig facilitan la transferencia y manipulación de datos desde SQL Server a Hadoop. Un SDK basado en .NET framework le permite escribir lotes usando Visual Studio. Una instalación local de Hadoop destinada a desarrolladores está disponible a través de HDInsight Server.
PolybasePolybase es una herramienta destinada a atacar diferentes fuentes de datos relacionales (SQL Server), decisionales (SQL Server Parallel Data Warehouse - PDW) o big data, a través de diferentes procesos como Map Reduce o MPP (Massive Parallel Processive)