Microsoft SQL Server - Microsoft SQL Server

Microsoft SQL Server
Desarrollador (es) Microsoft
Versión inicial 24 de abril de 1989 ; Hace 32 años , como SQL Server 1.0 ( 24 de abril de 1989 )
Lanzamiento estable
SQL Server 2019/4  Edita esto en Wikidata de noviembre de 2019 ; Hace 22 meses ( 4 de noviembre de 2019 )
Escrito en C , C ++
Sistema operativo Linux , Microsoft Windows Server , Microsoft Windows
Disponible en Inglés, chino, francés, alemán, italiano, japonés, coreano, portugués (Brasil), ruso, español e indonesio
Escribe Sistema de gestión de bases de datos relacionales
Licencia Software propietario
Sitio web www .microsoft .com / sql-server

Microsoft SQL Server es un sistema de administración de bases de datos relacionales desarrollado por Microsoft . Como servidor de base de datos , es un producto de software con la función principal de almacenar y recuperar datos según lo soliciten otras aplicaciones de software, que pueden ejecutarse en la misma computadora o en otra computadora a través de una red (incluida Internet). Microsoft comercializa al menos una docena de ediciones diferentes de Microsoft SQL Server, dirigidas a diferentes audiencias y para cargas de trabajo que van desde pequeñas aplicaciones de una sola máquina hasta grandes aplicaciones orientadas a Internet con muchos usuarios simultáneos .

Historia

La historia de Microsoft SQL Server comienza con el primer producto de Microsoft SQL Server, SQL Server 1.0, un servidor de 16 bits para el sistema operativo OS / 2 en 1989, y se extiende hasta la actualidad.

Hitos

  • MS SQL Server para OS / 2 comenzó como un proyecto para trasladar Sybase SQL Server a OS / 2 en 1989, por Sybase , Ashton-Tate y Microsoft .
  • SQL Server 4.2 para NT se lanzó en 1993, marcando la entrada en Windows NT .
  • SQL Server 6.0 se lanza en 1995, marcando el final de la colaboración con Sybase ; Sybase continuaría desarrollando su propia variante de SQL Server , Sybase Adaptive Server Enterprise , independientemente de Microsoft.
  • SQL Server 7.0 se lanzó en 1998, marcando la conversión del código fuente de C a C ++.
  • SQL Server 2005, lanzado en 2005, finaliza la revisión completa del antiguo código Sybase en el código de Microsoft.
  • SQL Server 2012, lanzado en 2012, agrega almacenamiento en memoria en columnas, también conocido como xVelocity.
  • SQL Server 2017, lanzado en 2017, agrega compatibilidad con Linux para estas plataformas Linux: Red Hat Enterprise Linux , SUSE Linux Enterprise Server , Ubuntu y Docker Engine .

En la actualidad

A partir de mayo de 2020, Microsoft admite las siguientes versiones:

  • SQL Server 2012
  • SQL Server 2014
  • SQL Server 2016
  • SQL Server 2017
  • SQL Server 2019

Desde SQL Server 2016 en adelante, el producto solo es compatible con procesadores x64.

La versión actual es Microsoft SQL Server 2019, lanzada el 4 de noviembre de 2019. La versión RTM es 15.0.2000.5.

Ediciones

Microsoft hace que SQL Server esté disponible en múltiples ediciones, con diferentes conjuntos de características y dirigidas a diferentes usuarios. Estas ediciones son:

Ediciones principales

Empresa
SQL Server Enterprise Edition incluye tanto el motor de base de datos central como los servicios complementarios, con una variedad de herramientas para crear y administrar un clúster de SQL Server. Puede administrar bases de datos de hasta 524 petabytes y abordar 12 terabytes de memoria y admite 640 procesadores lógicos (núcleos de CPU).
Estándar
La edición SQL Server Standard incluye el motor de base de datos central, junto con los servicios independientes. Se diferencia de la edición Enterprise en que admite menos instancias activas (número de nodos en un clúster) y no incluye algunas funciones de alta disponibilidad, como memoria de adición en caliente (lo que permite agregar memoria mientras el servidor aún se está ejecutando), y índices paralelos.
Web
SQL Server Web Edition es una opción de bajo TCO para alojamiento web.
Inteligencia de Negocio
Introducido en SQL Server 2012 y centrado en el autoservicio y la inteligencia empresarial corporativa. Incluye las capacidades de Standard Edition y las herramientas de Business Intelligence: PowerPivot, Power View, el modelo semántico de BI, Master Data Services, Data Quality Services y análisis en memoria de xVelocity.
Grupo de trabajo
SQL Server Workgroup Edition incluye la funcionalidad principal de la base de datos, pero no incluye los servicios adicionales. Tenga en cuenta que esta edición se retiró en SQL Server 2012.
Rápido
SQL Server Express Edition es una edición gratuita y reducida de SQL Server, que incluye el motor de base de datos central. Si bien no existen limitaciones en la cantidad de bases de datos o usuarios admitidos, se limita al uso de un procesador, 1 GB de memoria y archivos de base de datos de 10 GB (archivos de base de datos de 4 GB antes de SQL Server Express 2008 R2). Está pensado como un reemplazo de MSDE . Dos ediciones adicionales proporcionan un superconjunto de características que no se encuentran en la Express Edition original. El primero es SQL Server Express con herramientas , que incluye SQL Server Management Studio Basic. SQL Server Express con Advanced Services agrega capacidad de búsqueda de texto completo y servicios de informes.

Ediciones especializadas

Disco de instalación de SQL Server 2005 Developer Edition
Azur
Microsoft Azure SQL Database es la versión basada en la nube de Microsoft SQL Server, presentada como una plataforma como oferta de servicio en Microsoft Azure .
MPP de Azure
Azure SQL Data Warehouse es la versión basada en la nube de Microsoft SQL Server en una arquitectura MPP (procesamiento masivamente paralelo) para cargas de trabajo analíticas, presentada como una plataforma como oferta de servicio en Microsoft Azure .
Compacto (SQL CE)
La edición compacta es un motor de base de datos integrado. A diferencia de las otras ediciones de SQL Server, el motor SQL CE se basa en SQL Mobile (inicialmente diseñado para su uso con dispositivos portátiles) y no comparte los mismos binarios. Debido a su pequeño tamaño (1 MB de espacio en DLL), tiene un conjunto de funciones notablemente reducido en comparación con las otras ediciones. Por ejemplo, admite un subconjunto de los tipos de datos estándar, no admite procedimientos almacenados o vistas o lotes de instrucciones múltiples (entre otras limitaciones). Está limitado a un tamaño máximo de base de datos de 4 GB y no se puede ejecutar como un servicio de Windows; la aplicación que lo utiliza debe alojar Compact Edition. La versión 3.5 incluye soporte para ADO.NET Synchronization Services. SQL CE no admite la conectividad ODBC, a diferencia de SQL Server propiamente dicho.
Desarrollador
SQL Server Developer Edition incluye las mismas características que SQL Server Enterprise Edition, pero está limitado por la licencia para ser utilizado solo como un sistema de desarrollo y prueba, y no como servidor de producción. A principios de 2016, Microsoft hizo esta edición de forma gratuita para el público.
Integrado (SSEE)
SQL Server 2005 Embedded Edition es una instancia con nombre especialmente configurada del motor de base de datos de SQL Server Express a la que solo pueden acceder determinados servicios de Windows.
Evaluación
La Edición de evaluación de SQL Server, también conocida como Edición de prueba , tiene todas las características de la Edición Enterprise, pero está limitada a 180 días, después de los cuales las herramientas continuarán ejecutándose, pero los servicios del servidor se detendrán.
Vía rápida
SQL Server Fast Track es específicamente para almacenamiento de datos a escala empresarial y procesamiento de inteligencia empresarial, y se ejecuta en hardware de arquitectura de referencia optimizado para Fast Track.
LocalDB
Introducido en SQL Server Express 2012, LocalDB es una versión mínima, bajo demanda, de SQL Server diseñada para desarrolladores de aplicaciones. También se puede utilizar como base de datos incorporada.
Sistema de plataforma de análisis (APS)
Anteriormente Parallel Data Warehouse (PDW) Un dispositivo SQL Server de procesamiento masivo paralelo (MPP) optimizado para el almacenamiento de datos a gran escala , como cientos de terabytes.
Edición de dispositivo de Datawarehouse
Preinstalado y configurado como parte de un dispositivo en asociación con la base Dell y HP en la arquitectura Fast Track. Esta edición no incluye SQL Server Integration Services, Analysis Services ni Reporting Services.

Ediciones discontinuadas

MSDE
Motor de datos de Microsoft SQL Server / Desktop Engine / Desktop Edition. SQL Server 7 y SQL Server 2000. Diseñado para usarse como un componente de aplicación, no incluía herramientas de administración de GUI. Más tarde, Microsoft también puso a disposición una herramienta de administración web. Incluido con algunas versiones de Microsoft Access , herramientas de desarrollo de Microsoft y otras ediciones de SQL Server.
Edición personal
SQL Server 2000. Tenía límites de carga de trabajo o de conexión como MSDE, pero sin límite de tamaño de la base de datos. Incluye herramientas de gestión estándar. Diseñado para su uso como un proxy móvil / desconectado, con licencia para su uso con SQL Server 2000 Standard Edition.
Centro de datos
SQL Server 2008 R2 Datacenter es una edición con todas las funciones de SQL Server y está diseñada para centros de datos que necesitan altos niveles de compatibilidad y escalabilidad de aplicaciones. Admite 256 procesadores lógicos y memoria prácticamente ilimitada y viene con la edición StreamInsight Premium. La edición Datacenter se retiró en SQL Server 2012; todas sus funciones están disponibles en SQL Server 2012 Enterprise Edition.

Arquitectura

La capa de protocolo implementa la interfaz externa a SQL Server. Todas las operaciones que se pueden invocar en SQL Server se le comunican a través de un formato definido por Microsoft, llamado Tabular Data Stream (TDS). TDS es un protocolo de capa de aplicación que se utiliza para transferir datos entre un servidor de base de datos y un cliente. Inicialmente diseñados y desarrollados por Sybase Inc. para su motor de base de datos relacional Sybase SQL Server en 1984, y más tarde por Microsoft en Microsoft SQL Server, los paquetes TDS pueden incluirse en otros protocolos dependientes del transporte físico, incluidos TCP / IP , canalizaciones con nombre y compartidas. la memoria . En consecuencia, el acceso a SQL Server está disponible a través de estos protocolos. Además, la API de SQL Server también se expone a través de servicios web .

Almacenamiento de datos

El almacenamiento de datos es una base de datos , que es una colección de tablas con columnas escritas . SQL Server admite diferentes tipos de datos, incluidos tipos primitivos como Integer , Float , Decimal , Char (incluidas las cadenas de caracteres), Varchar (cadenas de caracteres de longitud variable), binario (para bloques de datos no estructurados ), Text (para datos textuales), entre otros. . El redondeo de flotantes a números enteros utiliza el redondeo aritmético simétrico o el redondeo hacia abajo simétrico ( fijo ) según los argumentos: SELECT Round(2.5, 0)da 3.

Microsoft SQL Server también permite definir y utilizar tipos compuestos definidos por el usuario (UDT). También hace que las estadísticas del servidor estén disponibles como tablas y vistas virtuales (llamadas Vistas de administración dinámica o DMV). Además de las tablas, una base de datos también puede contener otros objetos, incluidas vistas , procedimientos almacenados , índices y restricciones , junto con un registro de transacciones. Una base de datos de SQL Server puede contener un máximo de 2 31 objetos y puede abarcar varios archivos de nivel de sistema operativo con un tamaño de archivo máximo de 2 60 bytes (1 exabyte). Los datos de la base de datos se almacenan en archivos de datos primarios con extensión .mdf. Los archivos de datos secundarios, identificados con una .ndfextensión, se utilizan para permitir que los datos de una sola base de datos se distribuyan en más de un archivo y, opcionalmente, en más de un sistema de archivos. Los archivos de registro se identifican con la .ldfextensión.

El espacio de almacenamiento asignado a una base de datos se divide en páginas numeradas secuencialmente , cada una de 8 KB de tamaño. Una página es la unidad básica de E / S para las operaciones de SQL Server. Una página está marcada con un encabezado de 96 bytes que almacena metadatos sobre la página, incluido el número de página, el tipo de página, el espacio libre en la página y la identificación del objeto que la posee. El tipo de página define los datos contenidos en la página. Estos datos incluyen: datos almacenados en la base de datos, un índice, un mapa de asignación, que contiene información sobre cómo se asignan las páginas a las tablas e índices; y un mapa de cambios que contiene información sobre los cambios realizados en otras páginas desde la última copia de seguridad o registro, o contiene tipos de datos grandes, como imágenes o texto. Si bien una página es la unidad básica de una operación de E / S, el espacio en realidad se administra en términos de una extensión que consta de 8 páginas. Un objeto de base de datos puede abarcar las 8 páginas en una extensión ("extensión uniforme") o compartir una extensión con hasta 7 objetos más ("extensión mixta"). Una fila en una tabla de base de datos no puede abarcar más de una página, por lo que tiene un tamaño limitado de 8 KB. Sin embargo, si los datos superan los 8 KB y la fila contiene datos varchar o varbinary , los datos de esas columnas se mueven a una nueva página (o posiblemente a una secuencia de páginas, denominada unidad de asignación ) y se reemplazan con un puntero a los datos.

Para el almacenamiento físico de una tabla, sus filas se dividen en una serie de particiones (numeradas del 1 al n). El tamaño de la partición lo define el usuario; por defecto, todas las filas están en una sola partición. Una tabla se divide en varias particiones para distribuir una base de datos en un grupo de computadoras . Las filas de cada partición se almacenan en árbol B o estructura de montón . Si la tabla tiene un índice agrupado asociado para permitir la recuperación rápida de filas, las filas se almacenan en orden de acuerdo con sus valores de índice, con un árbol B que proporciona el índice. Los datos están en el nodo hoja de las hojas y en otros nodos que almacenan los valores de índice para los datos hoja accesibles desde los nodos respectivos. Si el índice no está agrupado, las filas no se ordenan según las claves del índice. Una vista indexada tiene la misma estructura de almacenamiento que una tabla indexada. Una tabla sin un índice agrupado se almacena en una estructura de montón desordenada. Sin embargo, la tabla puede tener índices no agrupados para permitir una rápida recuperación de filas. En algunas situaciones, la estructura del montón tiene ventajas de rendimiento sobre la estructura agrupada. Tanto los montones como los árboles B pueden abarcar varias unidades de asignación.

Gestión de búfer

SQL Server almacena las páginas en la memoria RAM para minimizar la E / S del disco. Cualquier página de 8 KB se puede almacenar en búfer en la memoria, y el conjunto de todas las páginas actualmente almacenadas en búfer se denomina caché de búfer. La cantidad de memoria disponible para SQL Server decide cuántas páginas se almacenarán en caché. El búfer de caché es administrado por el Administrador de búfer . Al leer o escribir en cualquier página, se copia en la memoria caché del búfer. Las lecturas o escrituras posteriores se redirigen a la copia en memoria, en lugar de a la versión en disco. El Administrador de búfer actualiza la página en el disco solo si no se ha hecho referencia a la caché en memoria durante algún tiempo. Al volver a escribir páginas en el disco, se utiliza la E / S asíncrona mediante el cual la operación de E / S se realiza en un subproceso en segundo plano para que otras operaciones no tengan que esperar a que se complete la operación de E / S. Cada página se escribe junto con su suma de comprobación cuando se escribe. Al volver a leer la página, su suma de comprobación se calcula de nuevo y se compara con la versión almacenada para garantizar que la página no se haya dañado o manipulado mientras tanto.

Simultaneidad y bloqueo

SQL Server permite que varios clientes utilicen la misma base de datos al mismo tiempo. Como tal, necesita controlar el acceso concurrente a los datos compartidos para garantizar la integridad de los datos, cuando varios clientes actualizan los mismos datos o cuando los clientes intentan leer datos que están en proceso de ser cambiados por otro cliente. SQL Server proporciona dos modos de control de simultaneidad: simultaneidad pesimista y simultaneidad optimista . Cuando se utiliza el control de concurrencia pesimista, SQL Server controla el acceso concurrente mediante bloqueos. Los candados pueden ser compartidos o exclusivos. El bloqueo exclusivo otorga al usuario acceso exclusivo a los datos; ningún otro usuario puede acceder a los datos mientras se mantenga el bloqueo. Los bloqueos compartidos se utilizan cuando se leen algunos datos; varios usuarios pueden leer datos bloqueados con un bloqueo compartido, pero no adquirir un bloqueo exclusivo. Este último tendría que esperar a que se liberen todos los bloqueos compartidos.

Los bloqueos se pueden aplicar en diferentes niveles de granularidad: en tablas completas, páginas o incluso en tablas por fila. Para los índices, puede estar en todo el índice o en hojas de índice. El nivel de granularidad que se utilizará lo define el administrador de la base de datos para cada base de datos. Si bien un sistema de bloqueo de grano fino permite que más usuarios usen la tabla o el índice simultáneamente, requiere más recursos, por lo que no produce automáticamente un mayor rendimiento. SQL Server también incluye dos soluciones de exclusión mutua más ligeras , pestillos y cierres giratorios, que son menos robustos que los bloqueos pero consumen menos recursos. SQL Server los usa para DMV y otros recursos que generalmente no están ocupados. SQL Server también monitorea todos los subprocesos de trabajo que adquieren bloqueos para garantizar que no terminen en interbloqueos; en caso de que lo hagan, SQL Server toma medidas correctivas, que en muchos casos son eliminar uno de los subprocesos enredados en un interbloqueo y retroceder la transacción que inició. Para implementar el bloqueo, SQL Server contiene el Administrador de bloqueo . Lock Manager mantiene una tabla en memoria que administra los objetos de la base de datos y los bloquea, si los hay, junto con otros metadatos sobre el bloqueo. El acceso a cualquier objeto compartido está mediado por el administrador de bloqueo, que otorga acceso al recurso o lo bloquea.

SQL Server también proporciona el mecanismo de control de simultaneidad optimista, que es similar al control de simultaneidad de múltiples versiones que se usa en otras bases de datos. El mecanismo permite crear una nueva versión de una fila cada vez que se actualiza la fila, en lugar de sobrescribir la fila, es decir, una fila se identifica adicionalmente por el ID de la transacción que creó la versión de la fila. Tanto la versión antigua como la nueva de la fila se almacenan y mantienen, aunque las versiones antiguas se mueven fuera de la base de datos a una base de datos del sistema identificada como Tempdb. Cuando una fila está en proceso de actualización, las demás solicitudes no se bloquean (a diferencia del bloqueo), sino que se ejecutan en la versión anterior de la fila. Si la otra solicitud es una declaración de actualización, dará como resultado dos versiones diferentes de las filas; ambas serán almacenadas por la base de datos, identificadas por sus respectivos ID de transacción.

Recuperación de datos y programabilidad

El modo principal de recuperar datos de una base de datos de SQL Server es consultarlos . La consulta se expresa utilizando una variante de SQL llamada T-SQL , un dialecto que Microsoft SQL Server comparte con Sybase SQL Server debido a su legado. La consulta especifica de forma declarativa qué se va a recuperar. Es procesado por el procesador de consultas, que calcula la secuencia de pasos que serán necesarios para recuperar los datos solicitados. La secuencia de acciones necesarias para ejecutar una consulta se denomina plan de consulta . Puede haber varias formas de procesar la misma consulta. Por ejemplo, para una consulta que contiene una instrucción de combinación y una instrucción de selección , ejecutar combinación en ambas tablas y luego ejecutar seleccionar en los resultados daría el mismo resultado que seleccionar de cada tabla y luego ejecutar la combinación, pero daría como resultado una ejecución diferente planes. En tal caso, SQL Server elige el plan que se espera que produzca los resultados en el menor tiempo posible. Esto se denomina optimización de consultas y lo realiza el propio procesador de consultas.

SQL Server incluye un optimizador de consultas basado en costos que intenta optimizar el costo, en términos de los recursos necesarios para ejecutar la consulta. Dada una consulta, el optimizador de consultas observa el esquema de la base de datos , las estadísticas de la base de datos y la carga del sistema en ese momento. Luego decide qué secuencia acceder a las tablas referidas en la consulta, qué secuencia ejecutar las operaciones y qué método de acceso se utilizará para acceder a las tablas. Por ejemplo, si la tabla tiene un índice asociado, si el índice debe usarse o no: si el índice está en una columna que no es única para la mayoría de las columnas ("selectividad" baja), puede que no valga la pena usar el índice para acceder a los datos. Finalmente, decide si ejecutar la consulta al mismo tiempo o no. Si bien una ejecución concurrente es más costosa en términos de tiempo total del procesador, debido a que la ejecución en realidad se divide en diferentes procesadores, podría significar que se ejecutará más rápido. Una vez que se genera un plan de consulta para una consulta, se almacena temporalmente en caché. Para más invocaciones de la misma consulta, se utiliza el plan almacenado en caché. Los planes no utilizados se descartan después de un tiempo.

SQL Server también permite definir procedimientos almacenados . Los procedimientos almacenados son consultas T-SQL parametrizadas, que se almacenan en el propio servidor (y no las emite la aplicación cliente como es el caso de las consultas generales). Los procedimientos almacenados pueden aceptar valores enviados por el cliente como parámetros de entrada y devolver los resultados como parámetros de salida. Pueden llamar a funciones definidas y otros procedimientos almacenados, incluido el mismo procedimiento almacenado (hasta un número determinado de veces). Se les puede proporcionar acceso selectivamente a archivos . A diferencia de otras consultas, los procedimientos almacenados tienen un nombre asociado, que se utiliza en tiempo de ejecución para resolver las consultas reales. Además, debido a que no es necesario enviar el código desde el cliente cada vez (ya que se puede acceder a él por su nombre), reduce el tráfico de red y mejora un poco el rendimiento. Los planes de ejecución para procedimientos almacenados también se almacenan en caché según sea necesario.

T-SQL

T-SQL (Transact-SQL) es la extensión de lenguaje de procedimientos propiedad de Microsoft para SQL Server. Proporciona instrucciones REPL (Read-Eval-Print-Loop) que amplían el conjunto de instrucciones de SQL estándar para las instrucciones de manipulación de datos ( DML ) y definición de datos ( DDL ), incluida la configuración específica de SQL Server, la seguridad y la gestión de estadísticas de la base de datos.

Expone palabras clave para las operaciones que se pueden realizar en SQL Server, incluida la creación y modificación de esquemas de bases de datos, la introducción y edición de datos en la base de datos, así como el seguimiento y la gestión del propio servidor. Las aplicaciones cliente que consumen datos o administran el servidor aprovecharán la funcionalidad de SQL Server enviando consultas y declaraciones T-SQL que luego son procesadas por el servidor y los resultados (o errores) devueltos a la aplicación cliente. Para ello, expone tablas de solo lectura desde las que se pueden leer las estadísticas del servidor. La funcionalidad de gestión se expone a través de procedimientos almacenados definidos por el sistema que se pueden invocar desde consultas T-SQL para realizar la operación de gestión. También es posible crear servidores vinculados usando T-SQL. Los servidores vinculados permiten que una sola consulta procese las operaciones realizadas en varios servidores.

Cliente nativo de SQL Server (también conocido como SNAC)

SQL Server Native Client es la biblioteca nativa de acceso a datos del lado del cliente para Microsoft SQL Server, versión 2005 en adelante. Implementa de forma nativa el soporte para las características de SQL Server, incluida la implementación Tabular Data Stream , soporte para bases de datos duplicadas de SQL Server, soporte completo para todos los tipos de datos compatibles con SQL Server, operaciones asincrónicas, notificaciones de consultas, soporte de cifrado , así como recibir múltiples conjuntos de resultados. en una sola sesión de base de datos. Los complementos de SQL Server utilizan el cliente nativo de SQL Server para otras tecnologías de acceso a datos, como ADO u OLE DB . El cliente nativo de SQL Server también se puede utilizar directamente, sin pasar por las capas de acceso a datos genéricos.

El 28 de noviembre de 2011, se lanzó una versión preliminar del controlador ODBC de SQL Server para Linux .

SQL CLR

Microsoft SQL Server 2005 incluye un componente llamado SQL CLR ("Common Language Runtime") a través del cual se integra con .NET Framework . A diferencia de la mayoría de las otras aplicaciones que usan .NET Framework, SQL Server mismo aloja el tiempo de ejecución de .NET Framework , es decir, los requisitos de gestión de memoria, subprocesos y recursos de .NET Framework son satisfechos por el propio SQLOS, en lugar del sistema operativo Windows subyacente. SQLOS también proporciona servicios de resolución y detección de interbloqueo para código .NET. Con SQL CLR, los procedimientos almacenados y los desencadenadores se pueden escribir en cualquier lenguaje .NET administrado , incluidos C # y VB.NET . El código administrado también se puede utilizar para definir UDT ( tipos definidos por el usuario ), que pueden persistir en la base de datos. El código administrado se compila en ensamblajes CLI y, después de ser verificado para la seguridad de tipos , se registra en la base de datos. Después de eso, se pueden invocar como cualquier otro procedimiento. Sin embargo, solo un subconjunto de la biblioteca de clases base está disponible cuando se ejecuta código en SQL CLR. La mayoría de las API relacionadas con la funcionalidad de la interfaz de usuario no están disponibles.

Al escribir código para SQL CLR, se puede acceder a los datos almacenados en las bases de datos de SQL Server mediante las API de ADO.NET como cualquier otra aplicación administrada que acceda a los datos de SQL Server. Sin embargo, hacer eso crea una nueva sesión de base de datos, diferente de aquella en la que se está ejecutando el código. Para evitar esto, SQL Server proporciona algunas mejoras al proveedor ADO.NET que permiten redirigir la conexión a la misma sesión que ya aloja el código en ejecución. Estas conexiones se denominan conexiones de contexto y se establecen estableciendo el parámetro en en la cadena de conexión. SQL Server también proporciona varias otras mejoras a la API de ADO.NET , incluidas clases para trabajar con datos tabulares o una sola fila de datos, así como clases para trabajar con metadatos internos sobre los datos almacenados en la base de datos. También proporciona acceso a las funciones XML en SQL Server, incluida la compatibilidad con XQuery . Estas mejoras también están disponibles en los procedimientos de T-SQL como consecuencia de la introducción del nuevo tipo de datos XML (funciones de consulta, valor, nodos). context connectiontrue

Servicios

SQL Server también incluye una variedad de servicios complementarios. Si bien estos no son esenciales para el funcionamiento del sistema de base de datos, brindan servicios de valor agregado además del sistema central de administración de la base de datos. Estos servicios se ejecutan como parte de algún componente de SQL Server o están fuera de proceso como el servicio de Windows y presentan su propia API para controlarlos e interactuar con ellos.

Servicios de aprendizaje automático

Los servicios de aprendizaje automático de SQL Server operan dentro de la instancia del servidor SQL, lo que permite a las personas realizar aprendizaje automático y análisis de datos sin tener que enviar datos a través de la red o estar limitados por la memoria de sus propias computadoras. Los servicios vienen con distribuciones de Microsoft R y Python que contienen paquetes de uso común para la ciencia de datos, junto con algunos paquetes de su propiedad (por ejemplo revoscalepy , RevoScaleR , microsoftml) que se puede utilizar para crear modelos de máquinas a escala.

Los analistas pueden configurar su máquina cliente para que se conecte a un servidor SQL remoto y enviar las ejecuciones del script a él, o pueden ejecutar un script R o Python como un script externo dentro de una consulta T-SQL. El modelo de aprendizaje automático entrenado se puede almacenar dentro de una base de datos y usarse para calificar.

Agente de servicio

Se utiliza dentro de una instancia, entorno de programación. Para aplicaciones de instancias cruzadas, Service Broker se comunica a través de TCP / IP y permite sincronizar los diferentes componentes mediante el intercambio de mensajes. Service Broker, que se ejecuta como parte del motor de la base de datos, proporciona una plataforma confiable de mensajería y cola de mensajes para las aplicaciones de SQL Server.

Los servicios de Service Broker constan de las siguientes partes:

  • tipos de mensajes
  • contratos
  • colas
  • programas de servicio
  • rutas

El tipo de mensaje define el formato de datos utilizado para el mensaje. Puede ser un objeto XML, texto sin formato o datos binarios, así como un cuerpo de mensaje nulo para notificaciones. El contrato define qué mensajes se utilizan en una conversación entre servicios y quién puede poner mensajes en la cola. La cola actúa como proveedor de almacenamiento para los mensajes. SQL Server las implementa internamente como tablas, pero no admiten la funcionalidad de inserción, actualización o eliminación. El programa de servicio recibe y procesa mensajes del intermediario de servicios. Normalmente, el programa de servicio se implementa como procedimiento almacenado o aplicación CLR . Las rutas son direcciones de red donde se encuentra el agente de servicios en la red.

Además, el intermediario de servicios admite funciones de seguridad como autenticación de red (mediante NTLM , Kerberos o certificados de autorización ), verificación de integridad y cifrado de mensajes .

Servicios de replicación

Los servicios de replicación de SQL Server son utilizados por SQL Server para replicar y sincronizar objetos de base de datos, ya sea en su totalidad o un subconjunto de los objetos presentes, en agentes de replicación, que pueden ser otros servidores de bases de datos en la red o cachés de bases de datos en el lado del cliente. Replication Services sigue un modelo de editor / suscriptor, es decir, los cambios son enviados por un servidor de base de datos ("editor") y son recibidos por otros ("suscriptores"). SQL Server admite tres tipos diferentes de replicación:

Replicación de transacciones
Cada transacción realizada en la base de datos del editor (base de datos maestra) se sincroniza con los suscriptores, quienes actualizan sus bases de datos con la transacción. La replicación transaccional sincroniza las bases de datos casi en tiempo real.
Combinar replicación
Se realiza un seguimiento de los cambios realizados en las bases de datos del editor y del suscriptor y, periódicamente, los cambios se sincronizan bidireccionalmente entre el editor y los suscriptores. Si los mismos datos se han modificado de forma diferente en las bases de datos del editor y del suscriptor, la sincronización dará lugar a un conflicto que deberá resolverse, ya sea manualmente o mediante políticas predefinidas. rowguid debe configurarse en una columna si se configura la replicación de combinación.
Replicación de instantáneas
La replicación de instantáneas publica una copia de toda la base de datos (la instantánea de los datos en ese momento) y se replica a los suscriptores. No se realiza un seguimiento de los cambios adicionales en la instantánea.

Servicios de análisis

SQL Server Analysis Services (SSAS) agrega OLAP y capacidades de minería de datos para bases de datos de SQL Server. El motor OLAP admite los modos de almacenamiento de datos MOLAP , ROLAP y HOLAP . Analysis Services admite el estándar XML for Analysis como protocolo de comunicación subyacente. Se puede acceder a los datos del cubo mediante consultas MDX y LINQ. La funcionalidad específica de minería de datos se expone a través del lenguaje de consulta DMX . Analysis Services incluye varios algoritmos: árboles de decisión , algoritmo de agrupamiento, algoritmo Naive Bayes , análisis de series de tiempo, algoritmo de agrupamiento de secuencias, análisis de regresión lineal y logística y redes neuronales, para su uso en minería de datos.

Servicios de informes

SQL Server Reporting Services (SSRS) es un entorno de generación de informes para los datos recopilados de las bases de datos de SQL Server. Se administra a través de una interfaz web . Los servicios de informes cuentan con una interfaz de servicios web para respaldar el desarrollo de aplicaciones de informes personalizadas. Los informes se crean como archivos RDL .

Los informes se pueden diseñar utilizando versiones recientes de Microsoft Visual Studio (Visual Studio.NET 2003, 2005 y 2008) con Business Intelligence Development Studio , instalado o con el Generador de informes incluido . Una vez creados, los archivos RDL se pueden renderizar en una variedad de formatos, incluidos Excel, PDF , CSV , XML , BMP , EMF , GIF , JPEG , PNG y TIFF y HTML Web Archive.

Servicios de notificación

Presentado originalmente como un complemento posterior al lanzamiento para SQL Server 2000, Notification Services se incluyó como parte de la plataforma Microsoft SQL Server por primera y única vez con SQL Server 2005. SQL Server Notification Services es un mecanismo para generar datos basados ​​en notificaciones, que se envían a los suscriptores de Notification Services. Un suscriptor se registra para un evento o transacción específico (que se registra en el servidor de la base de datos como un disparador); cuando ocurre el evento, Notification Services puede utilizar uno de los tres métodos para enviar un mensaje al suscriptor informándole sobre la ocurrencia del evento. Estos métodos incluyen SMTP, SOAP o escribiendo en un archivo en el sistema de archivos. Microsoft descontinuó Notification Services con el lanzamiento de SQL Server 2008 en agosto de 2008 y ya no es un componente oficialmente admitido de la plataforma de base de datos SQL Server.

Servicios de integración

SQL Server Integration Services (SSIS) proporciona capacidades ETL para SQL Server para la importación de datos , la integración de datos y las necesidades de almacenamiento de datos . Integration Services incluye herramientas GUI para crear flujos de trabajo , como extraer datos de varias fuentes, consultar datos, transformar datos, incluida la agregación, deduplicación, desnormalización y fusión de datos, y luego exportar los datos transformados a bases de datos o archivos de destino.

Servicio de búsqueda de texto completo

La arquitectura del servicio de búsqueda de texto completo de SQL Server

El servicio de búsqueda de texto completo de SQL Server es un servicio especializado de indexación y consulta de texto no estructurado almacenado en bases de datos de SQL Server. El índice de búsqueda de texto completo se puede crear en cualquier columna con datos de texto basados ​​en caracteres. Permite buscar palabras en las columnas de texto. Si bien se puede realizar con el LIKEoperador de SQL , el uso del servicio de búsqueda de texto completo de SQL Server puede ser más eficiente. Completo permite una coincidencia inexacta de la cadena de origen, indicada por un valor de rango que puede oscilar entre 0 y 1000; un rango más alto significa una coincidencia más precisa. También permite la coincidencia lingüística ("búsqueda flexional"), es decir, las variantes lingüísticas de una palabra (como un verbo en un tiempo diferente) también coincidirán con una palabra determinada (pero con un rango más bajo que una coincidencia exacta). También se admiten búsquedas de proximidad, es decir, si las palabras buscadas no aparecen en la secuencia en la que se especifican en la consulta, pero están cerca unas de otras, también se consideran una coincidencia. T-SQL expone operadores especiales que se pueden usar para acceder a las capacidades de FTS.

El motor de búsqueda de texto completo se divide en dos procesos: el proceso Filter Daemon ( msftefd.exe) y el proceso de búsqueda ( msftesql.exe). Estos procesos interactúan con SQL Server. El proceso de búsqueda incluye el indexador (que crea los índices de texto completo) y el procesador de consultas de texto completo. El indexador explora las columnas de texto de la base de datos. También puede indexar a través de columnas binarias y utilizar iFilters para extraer texto significativo del blob binario (por ejemplo, cuando un documento de Microsoft Word se almacena como un archivo binario no estructurado en una base de datos). Los iFilters están alojados en el proceso Filter Daemon. Una vez que se extrae el texto, el proceso Filter Daemon lo divide en una secuencia de palabras y se lo entrega al indexador. El indexador filtra las palabras irrelevantes , es decir, palabras como A , Y , etc., que aparecen con frecuencia y no son útiles para la búsqueda. Con las palabras restantes, se crea un índice invertido , asociando cada palabra con las columnas en las que se encuentran. El propio SQL Server incluye un componente Gatherer que monitorea los cambios en las tablas e invoca el indexador en caso de actualizaciones.

Cuando el procesador de consultas de SQL Server recibe una consulta de texto completo, se entrega al procesador de consultas FTS en el proceso de búsqueda. El procesador de consultas FTS divide la consulta en las palabras constituyentes, filtra las palabras irrelevantes y utiliza un diccionario de sinónimos incorporado para descubrir las variantes lingüísticas de cada palabra. Luego, las palabras se comparan con el índice invertido y se calcula un rango de su precisión. Los resultados se devuelven al cliente a través del proceso de SQL Server.

SQLCMD

SQLCMD es una aplicación de línea de comandos que viene con Microsoft SQL Server y expone las características de administración de SQL Server. Permite escribir y ejecutar consultas SQL desde el símbolo del sistema. También puede actuar como un lenguaje de secuencias de comandos para crear y ejecutar un conjunto de instrucciones SQL como una secuencia de comandos. Dichos scripts se almacenan como un .sqlarchivo y se utilizan para la gestión de bases de datos o para crear el esquema de la base de datos durante la implementación de una base de datos.

SQLCMD se introdujo con SQL Server 2005 y ha continuado hasta las versiones de SQL Server 2008, 2008 R2, 2012, 2014, 2016 y 2019. Su predecesor para las versiones anteriores era OSQL e ISQL, que eran funcionalmente equivalentes en lo que respecta a la ejecución de TSQL, y muchos de los parámetros de la línea de comando son idénticos, aunque SQLCMD agrega versatilidad adicional.

Estudio visual

Microsoft Visual Studio incluye soporte nativo para la programación de datos con Microsoft SQL Server. Se puede usar para escribir y depurar código para ser ejecutado por SQL CLR. También incluye un diseñador de datos que se puede utilizar para crear, ver o editar esquemas de bases de datos gráficamente. Las consultas se pueden crear visualmente o mediante código. SSMS 2008 en adelante, también proporciona intellisense para consultas SQL.

Estudio de administración de SQL Server

SQL Server Management Studio es una herramienta GUI incluida con SQL Server 2005 y posterior para configurar, administrar y administrar todos los componentes dentro de Microsoft SQL Server. La herramienta incluye tanto editores de secuencias de comandos como herramientas gráficas que funcionan con objetos y funciones del servidor. SQL Server Management Studio reemplaza a Enterprise Manager como la interfaz de administración principal para Microsoft SQL Server desde SQL Server 2005. También está disponible una versión de SQL Server Management Studio para SQL Server Express Edition, por lo que se conoce como SQL Server Management Studio Express (SSMSE ).

Una característica central de SQL Server Management Studio es el Explorador de objetos, que permite al usuario navegar, seleccionar y actuar sobre cualquiera de los objetos dentro del servidor. Se puede utilizar para observar y analizar visualmente planes de consulta y optimizar el rendimiento de la base de datos, entre otros. SQL Server Management Studio también se puede utilizar para crear una nueva base de datos, alterar cualquier esquema de base de datos existente agregando o modificando tablas e índices, o analizar el rendimiento. Incluye las ventanas de consulta que proporcionan una interfaz basada en GUI para escribir y ejecutar consultas.

Estudio de datos de Azure

Azure Data Studio es un editor de consultas multiplataforma disponible como descarga opcional. La herramienta permite a los usuarios escribir consultas; exportar resultados de consultas; enviar scripts SQL a repositorios de Git y realizar diagnósticos básicos del servidor. Azure Data Studio es compatible con los sistemas Windows, Mac y Linux.

Se lanzó a Disponibilidad general en septiembre de 2018. Antes del lanzamiento, la versión preliminar de la aplicación se conocía como SQL Server Operations Studio.

Estudio de desarrollo de inteligencia empresarial

Business Intelligence Development Studio (BIDS) es el IDE de Microsoft utilizado para desarrollar soluciones de análisis de datos y Business Intelligence utilizando Microsoft SQL Server Analysis Services , Reporting Services e Integration Services . Se basa en el entorno de desarrollo de Microsoft Visual Studio , pero se personaliza con las extensiones y tipos de proyectos específicos de los servicios de SQL Server, incluidas herramientas, controles y proyectos para informes (utilizando Reporting Services), Cubos y estructuras de minería de datos (utilizando Analysis Services). Para SQL Server 2012 y versiones posteriores, este IDE se ha renombrado como SQL Server Data Tools (SSDT).

Ver también

Referencias

Otras lecturas

  • Lance Delano, Rajesh George y col. (2005). Kit de inicio SQL Server 2005 Express Edition de Wrox (programador a programador) . Microsoft Press . ISBN  0-7645-8923-7 .
  • Delaney, Kalen y col. (2007). Dentro de SQL Server 2005: optimización y ajuste de consultas . Microsoft Press . ISBN  0-7356-2196-9 .
  • Ben-Gan, Itzik y col. (2006). Dentro de Microsoft SQL Server 2005: Programación T-SQL . Microsoft Press . ISBN  0-7356-2197-7 .
  • Klaus Elk (2018). SQL Server con C # . ISBN  1-7203-5867-2 .

enlaces externos