Microsoft SQL Server (Structured Query Language) es un sistema de gestión de bases de datos relacionales desarrollado por Microsoft . Como servidor de bases de datos , es un producto de software cuya función principal es almacenar y recuperar datos según lo solicitado por 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 para una sola máquina hasta grandes aplicaciones orientadas a Internet con muchos usuarios simultáneos .
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. Su nombre es completamente descriptivo, ya que se trata de un software de servidor que responde a consultas en lenguaje SQL .
A partir de febrero de 2024 [actualizar], Microsoft admite las siguientes versiones:
A partir de SQL Server 2016, el producto solo es compatible con procesadores x64 y debe tener un procesador de 1,4 GHz como mínimo; se recomienda 2,0 GHz o más rápido. [7]
La versión actual es Microsoft SQL Server 2022, lanzada el 16 de noviembre de 2022. La versión RTM es 16.0.1000.6. [8]
Microsoft ofrece SQL Server en varias ediciones, con diferentes conjuntos de características y dirigidas a distintos usuarios. Estas ediciones son: [9] [10]
Las herramientas publicadas por Microsoft incluyen:
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, utilizado para transferir datos entre un servidor de base de datos y un cliente. Inicialmente diseñado y desarrollado 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 se pueden incluir en otros protocolos dependientes del transporte físico, incluidos TCP/IP , canalizaciones con nombre y memoria compartida . 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 . [10]
El almacenamiento de datos es una base de datos , que es una colección de tablas con columnas tipificadas . SQL Server admite diferentes tipos de datos, incluidos los tipos primitivos como Integer , Float , Decimal , Char (incluidas las cadenas de caracteres), Varchar (cadenas de caracteres de longitud variable), binary (para blobs de datos no estructurados), Text (para datos textuales), entre otros. El redondeo de flotantes a enteros utiliza redondeo aritmético simétrico o redondeo descendente simétrico ( fix ) 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 pone a disposición estadísticas del servidor como tablas y vistas virtuales (denominadas 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). [10] Los datos de la base de datos se almacenan en archivos de datos primarios con una extensión .mdf
. Los archivos de datos secundarios, identificados con una .ndf
extensión, se utilizan para permitir que los datos de una única 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 .ldf
extensión. [10]
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 se marca con un encabezado de 96 bytes que almacena metadatos sobre la página, incluidos el número de página, el tipo de página, el espacio libre en la página y el ID 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 que 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 de una tabla de base de datos no puede abarcar más de una página, por lo que su tamaño está limitado a 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. [29]
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; de manera predeterminada, todas las filas se encuentran en una sola partición. Una tabla se divide en varias particiones para distribuir una base de datos en un clúster de computadoras . Las filas de cada partición se almacenan en una estructura de árbol B o de montón . Si la tabla tiene un índice agrupado asociado para permitir una recuperación rápida de filas, las filas se almacenan en orden según sus valores de índice, y un árbol B proporciona el índice. Los datos se encuentran en el nodo hoja de las hojas y otros nodos almacenan los valores de índice de los datos hoja a los que se puede acceder 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 recuperación rápida de filas. En algunas situaciones, la estructura de montón presenta ventajas de rendimiento con respecto a la estructura agrupada. Tanto los montones como los árboles B pueden abarcar varias unidades de asignación. [30]
SQL Server almacena páginas en la memoria RAM para minimizar la E/S del disco. Cualquier página de 8 KB se puede almacenar en la memoria y el conjunto de todas las páginas almacenadas actualmente en el 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 la memoria. El Administrador de búfer administra la caché de búfer . Al leer o escribir en cualquier página, se copia en la caché de 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 asincrónica , por lo que 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, se calcula nuevamente su suma de comprobación y se compara con la versión almacenada para garantizar que la página no haya sido dañada o alterada mientras tanto. [31]
SQL Server permite que varios clientes utilicen la misma base de datos simultáneamente. Por lo tanto, necesita controlar el acceso simultáneo a los datos compartidos para garantizar su integridad (cuando varios clientes actualizan los mismos datos o intentan leer datos que otro cliente está modificando). SQL Server ofrece dos modos de control de simultaneidad: simultaneidad pesimista y simultaneidad optimista . Cuando se utiliza el control de simultaneidad pesimista, SQL Server controla el acceso simultáneo mediante bloqueos. Los bloqueos pueden ser compartidos o exclusivos. Un bloqueo exclusivo otorga al usuario acceso exclusivo a los datos (ningún otro usuario puede acceder a ellos 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 pueden adquirir un bloqueo exclusivo). Este último tendría que esperar a que se liberaran todos los bloqueos compartidos.
Los bloqueos se pueden aplicar en diferentes niveles de granularidad: en tablas completas, páginas o incluso en una base por fila en las tablas. Para los índices, puede ser en todo el índice o en las hojas del índice. El nivel de granularidad que se utilizará lo define el administrador de la base de datos en función de cada base de datos. Si bien un sistema de bloqueo de grano fino permite que más usuarios utilicen 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 bloqueos giratorios), que son menos robustas que los bloqueos, pero consumen menos recursos. SQL Server los usa para DMV y otros recursos que normalmente no están ocupados. SQL Server también supervisa todos los subprocesos de trabajo que adquieren bloqueos para asegurarse de que no terminen en interbloqueos ; en caso de que lo hagan, SQL Server toma medidas correctivas, que en muchos casos son matar uno de los subprocesos enredados en un interbloqueo y revertir la transacción que inició. [10] Para implementar el bloqueo, SQL Server contiene el Administrador de bloqueos . El administrador de bloqueos mantiene una tabla en memoria que administra los objetos de la base de datos y los bloqueos, si los hay, junto con otros metadatos sobre el bloqueo. El acceso a cualquier objeto compartido está mediado por el administrador de bloqueos, que otorga acceso al recurso o lo bloquea.
SQL Server también proporciona el mecanismo de control de concurrencia optimista, que es similar al control de concurrencia multiversión utilizado en otras bases de datos. El mecanismo permite crear una nueva versión de una fila siempre que se actualice 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 trasladan 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, cualquier otra solicitud no se bloquea (a diferencia del bloqueo) sino que se ejecuta 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 se almacenarán en la base de datos, identificadas por sus respectivos ID de transacción. [10]
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 lo que se va a recuperar. Es procesada por el procesador de consultas, que determina 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 declaración de unión y una declaración de selección , ejecutar la unión en ambas tablas y luego ejecutar la selección en los resultados daría el mismo resultado que seleccionar de cada tabla y luego ejecutar la unión, pero daría como resultado diferentes planes de ejecución. En tal caso, SQL Server elige el plan que se espera que produzca los resultados en el menor tiempo posible. Esto se llama optimización de consultas y lo realiza el propio procesador de consultas. [10]
SQL Server incluye un optimizador de consultas basado en costos que intenta optimizar el costo, en términos de los recursos que se necesitarán para ejecutar la consulta. Dada una consulta, el optimizador de consultas analiza 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 en qué secuencia acceder a las tablas a las que se hace referencia en la consulta, en 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 se debe utilizar el índice 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 utilizar el índice para acceder a los datos. Finalmente, decide si ejecutar la consulta de manera simultánea o no. Si bien una ejecución simultánea es más costosa en términos de tiempo total de procesador, debido a que la ejecución en realidad se divide en diferentes procesadores, puede significar que se ejecutará más rápido. Una vez que se genera un plan de consulta para una consulta, se almacena en caché temporalmente. Para futuras invocaciones de la misma consulta, se utiliza el plan almacenado en caché. Los planes no utilizados se descartan después de un tiempo. [10] [32]
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 son emitidas por 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 enviar resultados como parámetros de salida. Pueden llamar a funciones definidas y a otros procedimientos almacenados, incluido el mismo procedimiento almacenado (hasta un número determinado de veces). Se les puede proporcionar acceso de forma selectiva a . 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, como no es necesario enviar el código desde el cliente cada vez (ya que se puede acceder a él por nombre), reduce el tráfico de red y mejora un poco el rendimiento. [33] Los planes de ejecución de los procedimientos almacenados también se almacenan en caché según sea necesario.
T-SQL (Transact-SQL) es una extensión de lenguaje procedimental patentada de Microsoft para SQL Server. Proporciona instrucciones REPL (Read-Eval-Print-Loop) que amplían el conjunto de instrucciones estándar de SQL para las instrucciones de manipulación de datos ( DML ) y definición de datos ( DDL ), incluidas las configuraciones específicas de SQL Server, la seguridad y la gestión de estadísticas de bases de datos.
Expone palabras clave para las operaciones que se pueden realizar en SQL Server, incluyendo 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 la supervisión y gestión del propio servidor. Las aplicaciones cliente que consumen datos o gestionan el servidor aprovecharán la funcionalidad de SQL Server enviando consultas y sentencias 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 sólo 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 utilizando T-SQL. Los servidores vinculados permiten que una única consulta procese operaciones realizadas en varios servidores. [34]
SQL Server Native Client es la biblioteca de acceso a datos del lado del cliente nativa para Microsoft SQL Server, versión 2005 en adelante. Implementa de forma nativa compatibilidad con las características de SQL Server, incluida la implementación de Tabular Data Stream , compatibilidad con bases de datos SQL Server reflejadas, compatibilidad total con todos los tipos de datos compatibles con SQL Server, operaciones asincrónicas, notificaciones de consultas, compatibilidad con cifrado , así como recepción de múltiples conjuntos de resultados en una sola sesión de base de datos. SQL Server Native Client se utiliza de forma subyacente mediante complementos de SQL Server para otras tecnologías de acceso a datos, incluidas ADO u OLE DB . SQL Server Native Client también se puede utilizar directamente, sin pasar por las capas de acceso a datos genéricos. [35]
El 28 de noviembre de 2011, se lanzó una versión preliminar del controlador ODBC de SQL Server para Linux . [36]
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 demás aplicaciones que utilizan .NET Framework, SQL Server aloja el entorno de ejecución de .NET Framework , es decir, los requisitos de memoria, subprocesamiento y gestión de recursos de .NET Framework los satisface el propio SQLOS, en lugar del sistema operativo Windows subyacente. SQLOS también proporciona servicios de detección y resolución de bloqueos para el código .NET. Con SQL CLR, los procedimientos almacenados y los activadores 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 ensambles CLI y, después de verificarse la seguridad de tipos , se registra en la base de datos. Después de eso, se pueden invocar como cualquier otro procedimiento. [37] Sin embargo, solo está disponible un subconjunto de la biblioteca de clases base cuando se ejecuta código bajo SQL CLR. La mayoría de las API relacionadas con la funcionalidad de la interfaz de usuario no están disponibles. [37]
Al escribir código para SQL CLR, se puede acceder a los datos almacenados en bases de datos de SQL Server mediante las API de ADO.NET como cualquier otra aplicación administrada que acceda a datos de SQL Server. Sin embargo, al hacerlo se 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. Dichas 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 características XML en SQL Server, incluido el soporte XQuery . Estas mejoras también están disponibles en los procedimientos T-SQL como consecuencia de la introducción del nuevo tipo de datos XML (funciones de consulta, valor y nodos). [38]context connection
true
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 de administración de base de datos principal. Estos servicios se ejecutan como parte de algún componente de SQL Server o fuera de proceso como un servicio de Windows y presentan su propia API para controlarlos e interactuar con ellos.
Los servicios de aprendizaje automático de SQL Server funcionan dentro de la instancia de SQL Server, 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 las distribuciones R y Python de Microsoft que contienen paquetes de uso común para la ciencia de datos, junto con algunos paquetes propietarios (por ejemplo, revoscalepy , RevoScaleR , microsoftml) que se pueden usar para crear modelos de máquinas a escala.
Los analistas pueden configurar su máquina cliente para conectarse a un servidor SQL remoto y enviarle las ejecuciones de scripts, o pueden ejecutar scripts de 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 puntuar. [39]
Se utiliza dentro de una instancia, un entorno de programación. Para aplicaciones entre instancias, 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 base de datos, proporciona una plataforma confiable de mensajería y colas de mensajes para aplicaciones SQL Server. [40]
Los servicios de intermediación de servicios constan de las siguientes partes: [41]
El tipo de mensaje define el formato de datos utilizado para el mensaje. Puede ser un objeto XML, texto simple 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 los implementa internamente como tablas, pero no admiten la funcionalidad de inserción, actualización o eliminación. El programa de servicio recibe y procesa los mensajes del agente de servicio. Por lo general, el programa de servicio se implementa como un procedimiento almacenado o una aplicación CLR . Las rutas son direcciones de red en las que se encuentra el agente de servicio en la red. [41]
Además, el agente de servicios admite funciones de seguridad como autenticación de red (usando NTLM , Kerberos o certificados de autorización ), verificación de integridad y cifrado de mensajes . [41]
SQL Server Replication Services es utilizado por SQL Server para replicar y sincronizar objetos de base de datos, ya sea en su totalidad o un subconjunto de los objetos presentes, entre agentes de replicación, que pueden ser otros servidores de base de datos en la red o cachés de base de datos en el lado del cliente. Replication Services sigue un modelo de publicador/suscriptor, es decir, los cambios son enviados por un servidor de base de datos ("publicador") y son recibidos por otros ("suscriptores"). SQL Server admite tres tipos diferentes de replicación: [42]
SQL Server Analysis Services (SSAS) agrega capacidades de minería de datos y OLAP 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 [46] . [47] 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 temporales, 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. [48]
SQL Server Reporting Services (SSRS) es un entorno de generación de informes para datos recopilados de bases de datos de SQL Server. Se administra a través de una interfaz web. Reporting Services cuenta con una interfaz de servicios web para respaldar el desarrollo de aplicaciones de informes personalizadas. Los informes se crean como archivos RDL . [49]
Los informes se pueden diseñar utilizando versiones recientes de Microsoft Visual Studio (Visual Studio.NET 2003, 2005 y 2008) [50] con Business Intelligence Development Studio instalado o con el Generador de informes incluido. Una vez creados, los archivos RDL se pueden representar en una variedad de formatos, [51] [52] incluidos Excel, PDF , CSV , XML , BMP , EMF , GIF , JPEG , PNG y TIFF , [53] y HTML Web Archive.
Originalmente introducido como un complemento posterior al lanzamiento de SQL Server 2000, [54] Notification Services se incluyó como parte de la plataforma Microsoft SQL Server por primera y única vez con SQL Server 2005. [55] [56] SQL Server Notification Services es un mecanismo para generar notificaciones basadas en datos, que se envían a los suscriptores de Notification Services. Un suscriptor se registra para un evento o transacción específicos (que se registra en el servidor de base de datos como un disparador); cuando ocurre el evento, Notification Services puede usar uno de tres métodos para enviar un mensaje al suscriptor informando sobre la ocurrencia del evento. Estos métodos incluyen SMTP, SOAP o escribiendo en un archivo en el sistema de archivos. [57] Notification Services fue descontinuado por Microsoft con el lanzamiento de SQL Server 2008 en agosto de 2008, y ya no es un componente oficialmente compatible de la plataforma de base de datos de SQL Server.
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 la extracción de datos de varias fuentes, la consulta de datos, la transformación de datos (incluida la agregación, la deduplicación, la desnormalización y la fusión de datos) y, a continuación, la exportación de los datos transformados a bases de datos o archivos de destino. [58]
El servicio de búsqueda de texto completo de SQL Server es un servicio especializado de indexación y consulta para 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 LIKE
operador SQL, el uso del servicio de búsqueda de texto completo de SQL Server puede ser más eficiente. Full permite la coincidencia inexacta de la cadena de origen, indicada por un valor de rango que puede variar de 0 a 1000; un rango más alto significa una coincidencia más precisa. También permite la coincidencia lingüística ("búsqueda flexiva"), es decir, las variantes lingüísticas de una palabra (como un verbo en un tiempo diferente) también serán una coincidencia para una palabra dada (pero con un rango más bajo que una coincidencia exacta). También se admiten las 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 utilizar para acceder a las capacidades de FTS. [59] [60]
El motor de búsqueda de texto completo se divide en dos procesos: el proceso Filter Daemonmsftefd.exe
( ) y el proceso Searchmsftesql.exe
( ). Estos procesos interactúan con SQL Server. El proceso Search incluye el indexador (que crea los índices de texto completo) y el procesador de consultas de texto completo. El indexador escanea las columnas de texto en la base de datos. También puede indexar columnas binarias y usar 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 por 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 , And , 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 encontró. El propio SQL Server incluye un componente Gatherer que monitoriza los cambios en las tablas e invoca al indexador en caso de actualizaciones. [61]
Cuando el procesador de consultas de SQL Server recibe una consulta de texto completo, la transfiere al procesador de consultas de FTS en el proceso de búsqueda. El procesador de consultas de FTS divide la consulta en las palabras que la componen, filtra las palabras irrelevantes y utiliza un diccionario de sinónimos integrado para averiguar las variantes lingüísticas de cada palabra. A continuación, se consultan las palabras en función del í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. [61]
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 lenguaje de script para crear y ejecutar un conjunto de instrucciones SQL como un script. Dichos scripts se almacenan como un .sql
archivo y se utilizan para la administració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 continuó hasta las versiones 2008, 2008 R2, 2012, 2014, 2016 y 2019 de SQL Server. Su predecesor para versiones anteriores fue OSQL e ISQL, que eran funcionalmente equivalentes en lo que respecta a la ejecución de T-SQL, y muchos de los parámetros de la línea de comandos son idénticos, aunque SQLCMD agrega versatilidad adicional.
Microsoft Visual Studio incluye compatibilidad nativa con la programación de datos con Microsoft SQL Server. Se puede utilizar para escribir y depurar código que se ejecutará mediante SQL CLR. También incluye un diseñador de datos que se puede utilizar para crear, ver o editar esquemas de bases de datos de forma gráfica. Las consultas se pueden crear de forma visual o mediante código. A partir de SSMS 2008, también se proporciona intellisense para consultas SQL.
SQL Server Management Studio es una herramienta GUI incluida con SQL Server 2005 y versiones posteriores para configurar, gestionar y administrar todos los componentes de Microsoft SQL Server. La herramienta incluye editores de scripts y herramientas gráficas que funcionan con objetos y características del servidor. [62] 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). [63]
Una característica central de SQL Server Management Studio es el Explorador de objetos, que permite al usuario explorar, seleccionar y actuar sobre cualquiera de los objetos dentro del servidor. [64] Se puede utilizar para observar y analizar visualmente los planes de consulta y optimizar el rendimiento de la base de datos, entre otras cosas. [65] 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. [10]
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, confirmar scripts SQL en repositorios de Git y realizar diagnósticos básicos del servidor. Azure Data Studio es compatible con sistemas Windows, Mac y Linux. [66]
Se lanzó con 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.
Business Intelligence Development Studio (BIDS) es el IDE de Microsoft utilizado para desarrollar análisis de datos y soluciones de 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 los tipos de proyecto específicos de los servicios de SQL Server, incluidas herramientas, controles y proyectos para informes (mediante Reporting Services), cubos y estructuras de minería de datos (mediante Analysis Services). [67] Para SQL Server 2012 y versiones posteriores, este IDE ha cambiado de nombre a SQL Server Data Tools (SSDT).