Cómo instalar el motor de base de datos gratuito SQL derver 2017 Express de Microsoft en un equipo con Windows Server 2012 (válido para Windows Server 2016 y Windows Server 2019). Es la última versión de SQL Server Express que permite instalación en sistemas operativos Windows Server. Mostramos sus características y sus limitaciones.
- Novedades de SQL Server 2017.
- Limitaciones de SQL Server Express 2017.
- Descarga e instalación de Microsoft SQL Server 2017 Express en Windows Server 2012/2016/2019.
- Instalar SQL Server Management Studio, crear base de datos y tabla.
Novedades de SQL Server 2017
SQL Server 2017 incluye muchas mejoras de rendimiento, perfeccionamiento y características de Motor de base de datos. A continuación listamos algunas de ellas.
Para el motor de la base de datos SQL Server 2017:
- Los ensamblados CLR se pueden agregar a una lista de ensamblados de confianza, como solución alternativa para la característica clr strict security. Además, sp_add_trusted_assembly, sp_drop_trusted_assembly y sys.trusted_asssemblies se agregan para admitir la lista de ensamblados de confianza (RC1).
- La recompilación de índices en línea reanudable reanuda una operación de recompilación de índices en línea desde donde se detuvo después de un error (como una conmutación por error en una réplica o espacio en disco insuficiente), o bien pausa y reanuda más adelante una operación de recompilación de índices en línea.
- La opción IDENTITY_CACHE de ALTER DATABASE SCOPED CONFIGURATION permite evitar lagunas en los valores de columnas e identidad si un servidor se reinicia inesperadamente o realiza conmutación por error en un servidor secundario.
- Una nueva generación de mejoras de procesamiento de consultas que adapta las estrategias de optimización a las condiciones de tiempo de ejecución de la carga de trabajo de la aplicación. En esta primera versión de la familia de características de procesamiento de consultas adaptable se incluyen tres nuevas mejoras: combinaciones adaptables del modo por lotes, comentarios de concesión de memoria del modo por lotes y ejecución intercalada para funciones con valores de tabla de varias instrucciones.
- El ajuste automático de bases de datos proporciona información de los posibles problemas de rendimiento de las consultas, recomienda soluciones y puede corregir automáticamente los problemas identificados.
- Las nuevas funcionalidades de base de datos de gráficos para modelar relaciones varios a varios incluyen una nueva sintaxis de CREATE TABLE para crear tablas de nodos y perimetrales, y la palabra clave MATCH para consultas.
- Una opción de sp_configure llamada clr strict security se habilita de manera predeterminada para mejorar la seguridad de los ensamblados CLR.
- El programa de instalación ahora permite especificar el tamaño de archivo tempdb inicial hasta 256 GB (262 144 MB) por archivo, con una advertencia si el tamaño del archivo es mayor que 1 GB y si IFI no está habilitado.
- La columna modified_extent_page_count en sys.dm_db_file_space_usage hace seguimiento de los cambios diferenciales en cada archivo de base de datos, lo que habilita soluciones de copia de seguridad inteligentes que realizan copia de seguridad diferencial o copia de seguridad completa según el porcentaje de páginas modificadas en la base de datos.
- La sintaxis SELECT INTO T-SQL ahora admite la carga de una tabla en un grupo de archivos distinto del grupo de archivos predeterminado del usuario mediante la palabra clave ON.
- Ahora se admiten las transacciones entre bases de datos entre todas las bases de datos que forman parte de un grupo de disponibilidad AlwaysOn, incluidas las bases de datos que son parte de la misma instancia.
- La nueva funcionalidad de los grupos de disponibilidad incluye la compatibilidad de escalado de lectura sin clúster, la configuración de grupos de disponibilidad de confirmación de réplica mínima y migraciones y pruebas entre distintos sistemas operativos Windows y Linux.
- Nuevas vistas de administración dinámica:
- sys.dm_db_log_stats expone atributos a nivel de resumen e información sobre los archivos de registro de transacciones, lo que resulta útil para supervisar el estado de los registros de transacciones.
- sys.dm_tran_version_store_space_usage hace seguimiento del uso del almacén de versiones por base de datos, lo que resulta útil para planear de manera proactiva el dimensionamiento de tempdb según el uso del almacén de versiones por base de datos.
- sys.dm_db_log_info expone información de VLF para supervisar, alertar y evitar posibles problemas con los registros de transacciones.
- sys.dm_db_stats_histogram es una nueva vista de administración dinámica para examinar estadísticas.
- sys.dm_os_host_info proporciona información de sistema operativo para Windows y Linux.
- El Asesor de optimización de base de datos (DTA) tiene opciones adicionales y mejor rendimiento.
- Las mejoras en memoria incluyen compatibilidad con columnas calculadas en tablas optimizadas para memoria, compatibilidad total con funciones JSON en módulos de compilación nativa y el operador CROSS APPLY en módulos de compilación nativa.
- Las nuevas funciones de cadena son CONCAT_WS, TRANSLATE y TRIM, y WITHIN GROUP ahora es compatible con la función STRING_AGG. (CTP 1.1) Hay nuevas opciones de acceso masivo (BULK INSERT y OPENROWSET(BULK…) ) para archivos CSV y de Azure Blob.
- Las mejoras de objetos optimizados para memoria incluyen sp_spaceused y la eliminación de la limitación de ocho índices en las tablas optimizadas para memoria, sp_rename para tablas optimizadas para memoria y módulos T-SQL de compilación nativa y CASE y TOP (N) WITH TIES para módulos T-SQL de compilación nativa. Los archivos de grupos de archivos con optimización para memoria ahora se pueden almacenar, se puede crear una copia de seguridad de ellos y se pueden restaurar en Azure Storage.
- DATABASE SCOPED CREDENTIAL es una nueva clase de protegible, que admite los permisos CONTROL, ALTER, REFERENCES, TAKE OWNERSHIP y VIEW DEFINITION. ADMINISTER DATABASE BULK OPERATIONS ahora es visible en sys.fn_builtin_permissions.
Para SQL Server 2017 Integration Services (SSIS):
- La nueva característica Escalabilidad horizontal de SSIS tiene las siguientes características nuevas y modificadas.
- Patrón de escalabilidad horizontal ahora admite alta disponibilidad.
- Se mejoró el control de conmutación por error de los registros de ejecución de Trabajadores de escalabilidad horizontal.
- Se cambió el nombre del parámetro runincluster del procedimiento almacenado [catálogo].[create_execution] a runinscaleout para mejorar la coherencia y la legibilidad.
- El catálogo de SSIS tiene una nueva propiedad global para especificar el modo predeterminado de ejecución de los paquetes de SSIS.
- En la nueva característica Escalabilidad horizontal de SSIS, ahora puede usar el parámetro Use32BitRuntime cuando desencadena la ejecución.
- SQL Server 2017 Integration Services (SSIS) ahora admite SQL Server en Linux y un paquete nuevo le permite ejecutar paquetes de SSIS en Linux desde la línea de comandos.
- La nueva característica Escalabilidad horizontal de SSIS facilita en gran medida la ejecución de SSIS en varias máquinas.
- Origen OData y Administrador de conexiones OData ahora admiten la conexión a fuentes de OData de Microsoft Dynamics AX Online y Microsoft Dynamics CRM Online.
Para SQL Server 2017 Master Data Services (MDS):
- La experiencia y el rendimiento mejoran al actualizar de SQL Server 2012, SQL Server 2014 y SQL Server 2016 a SQL Server 2017 Master Data Services.
- Ahora se pueden ver las listas ordenadas de entidades, colecciones y jerarquías en la página del Explorador de la aplicación web.
- Se ha mejorado el rendimiento del almacenamiento provisional de millones de registros con el procedimiento almacenado de almacenamiento provisional.
- Se ha mejorado el rendimiento al expandir la carpeta Entidades de la página Administrar grupos para asignar permisos de modelos. La página Administrar grupos se encuentra en la sección Seguridad de la aplicación web.
Y más mejoras en SQL Server 2017 Analysis Services (SSAS), SQL Server 2017 Reporting Services (SSRS) y Machine Learning en SQL Server 2017.
Limitaciones de SQL Server Express 2017
A continuación se muestra una tabla con las limitaciones de la versión gratuita de SQL Server Express 2017:
Capacidad máxima de cálculo que usa una sola instancia: Motor de base de datos de SQL Server | Limitada a menos de 1 socket o 4 núcleos |
Capacidad máxima de cálculo que usa una sola instancia: Analysis Services o Reporting Services | Limitada a menos de 1 socket o 4 núcleos |
Memoria máxima para el grupo de búferes por cada instancia de Motor de base de datos de SQL Server | 1410 MB |
Capacidad máxima de la extensión del grupo de búferes por instancia de Motor de base de datos de SQL Server | No admitido |
Cantidad máxima de memoria para la caché de segmento del almacén de columnas por cada instancia de Motor de base de datos de SQL Server | 352 MB |
Tamaño máximo de datos optimizados para memoria por base de datos en Motor de base de datos de SQL Server | 352 MB |
Memoria máxima usada por instancia de Analysis Services | No aplicable |
Memoria máxima usada por instancia de Reporting Services | No aplicable |
Tamaño máximo de la base de datos relacional | 10 GB |
La limitación más importante para un entorno de producción es que la base de datos SQL Server Express no puede ocupar más de 10GB.
Descarga e instalación de Microsoft SQL Server 2017 Express en Windows Server 2012/2016/2019
Descargaremos el fichero que, a su vez, nos permitirá realizar la descarga del instalador de SQL Server Express 2017. Actualmente la versión de SQL Server Express es la 2019, pero esta versión ya no puede instalarse en equipos con Windows Server 2012, 2016 y 2019. Por ello mostramos cómo instalar esta última versión gratuita permitida para Windows Server.
Pulsaremos en «Nueva instalación independiente de SQL Server o agregar características a una instalación existente»:
Marcaremos «Acepto los términos de licencia» y pulsaremos «Siguiente»:
Si queremos que Microsoft Update nos aviso de nuevos parches para SQL Server marcaremos la opción «Usar Microsoft Update para comprobar las actualiaciones (recomendado)»:
El asistente comprobar las reglas de instalación para ver si el sistema actual las cumple. Algunas no son obligatorias y nos las indicará con una advertencia pero nos dejará continuar.
Marcaremos las características de SQL Server 2017 que queramos instalar: replicación de SQL Server, Machine Learning Services (R, Python), conectividad con las herramientas cliente, etc. En nuestro caso dejaremos las características por defecto. También indicaremos las unidades y carpetas para la raíz de la instancia, para las características compartidas y para la características compartidas x86:
Marcaremos «Instancia con nombre» e introduciremos un nombre para la instancia, por ejemplo SQLEXPRESS2017:
A continuación elegiremos las credenciales y el tipo de inicio para los servicios de SQL Server 2017:
- Motor de la base de datos SQL Server: inicio automático. Se usará la cuenta local del sistema NT Service para iniciarlo.
- Launchpad de SQL Server: inicio automático. Se usará la cuenta local del sistema NT Service para iniciarlo.
- Selector de demonio de filtro de texto completo: inicio manual. Se usará la cuenta local del sistema NT Service para iniciarlo.
- SQL Server Browser: deshabilitado. Se usará la cuenta local del sistema NT AUTHORITY para iniciarlo.
Elegiremos ahora el tipo de autenticación de SQL Server, podremos elegir entre:
- Modo de autenticación de Windows: se usarán los usuarios de Windows para iniciar sesión y conectar con SQL Server. Marcando esta opción podremos indicar qué usuarios de equipo (o dominio si el equipo pertenece a un dominio) tendrán acceso a SQL Server.
- Modo mixto (autenticación de SQL Server y de Windows): permite crear usuarios «locales» de la propia base de datos SQL Server y también usuarios del equipo Windows. En nuestro caso marcaremos esta opción. Introduciremos una contraseña para el superusuario sa que se creará por defecto. Este usuario será el que tenga privilegios totales sobre la instancia de la base de datos, también los usuarios que se elijan de Windows.
En la pestaña «Diretorios de datos» podremos indicar en qué carpetas se guardarán los datos de las bases de datos que se creen en SQL Server: el raíz, la base de datos del sistema, la base de datos de usuario, el registro de base de datos y el de copia de seguridad:
Si hemos elegido instalar Microsoft R Open, deberemos aceptar los términos de licencia:
Lo mismo para Python:
Inciará la instalación de SQL Server 2017 en el equipo Windows Server:
Tras la instalación, es muy posible que nos pida reiniciar el equipo:
Tras el reinicio, SQL Server 2017 quedará instalado:
Y todos sus servicios iniciados:
Instalar SQL Server Management Studio, crear base de datos y tabla
Para instalar SQL Server Management Studio, volveremos a abrir el asistente de instalación descargado anteriormente y pulsaremos en «Instalar herramientas de administración de SQL Server»:
Guardaremos el archivo SSMS-Setup-ENU.exe que se descargará:
Y lo ejecutaremos como administrador, pulsando con el botón derecho sobre él y eligiendo «Ejecutar como administrador»:
Se iniciará el asistente para instalar Microsoft SQL Server Management Studio with Azure Data Studio. Elegiremos la carpeta de instalación y pulsaremos «Install»:
Una vez finalizada la instalación puede que nos pida reiniciar el equipo:
Tras el renicio dispondremos de esta potente herramienta, SQL Server Management. Para acceder, desde el menú, en el grupo «Microsoft SQL Server Tools 18», pulsaremos en «Microsoft SQL Server Management»:
Elegiremos el método de autenticación, en nuestro caso «SQL Server Authentication», introduciremos el usuario y la contraseña y pulsaremos «Connect»:
Y ya podremos administrar el servidor SQL Server 2017. Por ejemplo, podremos crear una nueva base de datos, pulsando con el botón derecho del ratón sobre «Databases» y eligiendo «New Database…»:
Introduciremos el nombre para la base de datos, por ejemplo «bdproyectoa» y el resto de datos de configuración:
SQL Management Studio nos mostrará el script que se ejecutará para crear la base de datos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
CREATE DATABASE [bdproyectoa] CONTAINMENT = NONE ON PRIMARY ( NAME = N'bdproyectoa', FILENAME = N'C:\Program Files\SQL Server Express 2017\Base_Datos\bdproyectoa.mdf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) LOG ON ( NAME = N'bdproyectoa_log', FILENAME = N'C:\Program Files\SQL Server Express 2017\Base_Datos\bdproyectoa_log.ldf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) GO ALTER DATABASE [bdproyectoa] SET COMPATIBILITY_LEVEL = 140 GO ALTER DATABASE [bdproyectoa] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [bdproyectoa] SET ANSI_NULLS OFF GO ALTER DATABASE [bdproyectoa] SET ANSI_PADDING OFF GO ALTER DATABASE [bdproyectoa] SET ANSI_WARNINGS OFF GO ALTER DATABASE [bdproyectoa] SET ARITHABORT OFF GO ALTER DATABASE [bdproyectoa] SET AUTO_CLOSE OFF GO ALTER DATABASE [bdproyectoa] SET AUTO_SHRINK OFF GO ALTER DATABASE [bdproyectoa] SET AUTO_CREATE_STATISTICS ON(INCREMENTAL = OFF) GO ALTER DATABASE [bdproyectoa] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [bdproyectoa] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [bdproyectoa] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [bdproyectoa] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [bdproyectoa] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [bdproyectoa] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [bdproyectoa] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [bdproyectoa] SET DISABLE_BROKER GO ALTER DATABASE [bdproyectoa] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [bdproyectoa] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [bdproyectoa] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [bdproyectoa] SET READ_COMMITTED_SNAPSHOT OFF GO ALTER DATABASE [bdproyectoa] SET READ_WRITE GO ALTER DATABASE [bdproyectoa] SET RECOVERY SIMPLE GO ALTER DATABASE [bdproyectoa] SET MULTI_USER GO ALTER DATABASE [bdproyectoa] SET PAGE_VERIFY CHECKSUM GO ALTER DATABASE [bdproyectoa] SET TARGET_RECOVERY_TIME = 60 SECONDS GO ALTER DATABASE [bdproyectoa] SET DELAYED_DURABILITY = DISABLED GO USE [bdproyectoa] GO ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = Off; GO ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET LEGACY_CARDINALITY_ESTIMATION = Primary; GO ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0; GO ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET MAXDOP = PRIMARY; GO ALTER DATABASE SCOPED CONFIGURATION SET PARAMETER_SNIFFING = On; GO ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET PARAMETER_SNIFFING = Primary; GO ALTER DATABASE SCOPED CONFIGURATION SET QUERY_OPTIMIZER_HOTFIXES = Off; GO ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET QUERY_OPTIMIZER_HOTFIXES = Primary; GO USE [bdproyectoa] GO IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [bdproyectoa] MODIFY FILEGROUP [PRIMARY] DEFAULT GO |
Una vez creada la base de datos, la desplegaremos en el árbol y podremos, por ejemplo, crear una tabla, pulsando con el botón derecho del ratón sobre «Tables» y eligiendo «New» – «Table»:
Agregaremos todos los campos que queramos, con sus tipos de datos, índices y sus reglas de integridad referencial
Para el caso del campo «codigo», clave primaria, elegiremos «Set Primary Key»
Y para que sea autoincremental elegiremos este campo [1] y en las propiedades, modificaremos la propiedad «Is Identity» [2] a valor «Yes» [3]
Guardaremos los cambios:
Introduciremos un nombre para la tabla:
También nos mostrará el script de creación de la tabla, muy útil por si queremos automatizar la tarea:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
BEGIN TRANSACTION SET QUOTED_IDENTIFIER ON SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF SET CONCAT_NULL_YIELDS_NULL ON SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON COMMIT BEGIN TRANSACTION GO CREATE TABLE dbo.facturas ( codigo int NOT NULL IDENTITY (1, 1), numero varchar(50) NULL, codigo_cliente int NULL, importe money NULL, fecha date NULL, observacion text NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE dbo.facturas ADD CONSTRAINT PK_facturas PRIMARY KEY CLUSTERED ( codigo ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO ALTER TABLE dbo.facturas SET (LOCK_ESCALATION = TABLE) GO COMMIT select Has_Perms_By_Name(N'dbo.facturas', 'Object', 'ALTER') as ALT_Per, Has_Perms_By_Name(N'dbo.facturas', 'Object', 'VIEW DEFINITION') as View_def_Per, Has_Perms_By_Name(N'dbo.facturas', 'Object', 'CONTROL') as Contr_Per |
Y ya tendremos disponible nuestra tabla «facturas» en la base de datos «bdproyectoa»:
Desde el propio SQL Server Management podremos mostrar los registros de la tabla (hacer select) e incluso insertar registros: