Archivo

Entradas Etiquetadas ‘SQLServer’

2 – Descargando una Imagen y creando un contenedor (Docker)

jueves, 17 de octubre de 2024 Sin comentarios
Share Button

Empezamos a trabajar…

En esta segunda entrada de esta serie vamos a ver cómo descargar nuestra primera imagen (SQL Server) y cómo crear un contenedor a partir de ella. Partimos de la entrada anterior donde al acabar ya teníamos instalada nuestra aplicación «Docker Desktop», preparada para empezar.

Os dejo aquí la lista de links a las entradas de la serie, que iré completando a medida que vayan saliendo…

Descargar una imagen

Como he comentado antes, yo voy a utilizar Docker para virtualizar un SQLServer en varias de sus versiones (2107, 2019 y 2022), de esa forma podré «arrancar» un contenedor con cualquiera de estas versiones para probar mi aplicación con ellas.

Esto me evitará tener en mi máquina instaladas estas tres versiones, con el consiguiente espacio de disco ocupado y la consiguiente memoria ocupada (por ejemplo, por los servicios de SQL Server). En general, de esta forma (utilizando contenedores) conseguimos tener nuestra máquina más «limpia».

Aquí os dejo este link con información de las versiones de SQL Server para descargar (Ubuntu).

Para descargar nuestra imagen accederemos a la ventana de Terminal desde Docker y escribiremos el siguiente comando (pedimos la última imagen disponible de mssql 2017):

docker pull mcr.microsoft.com/mssql/server:2017-latest

 

 

Una vez finalizada la descarga deberíamos tener disponible nuestra imagen descargada. Con los datos de tamaño y un pequeño menú a la derecha con algunas opciones básicas.

Todavía no podemos trabajar con nuestro SQLServer, para poder hacerlo necesitamos crear, al menos, un contenedor/instancia a partir de la imagen descargada.

Crear un contenedor a partir de una imagen

Para crear un contenedor o instancia de una imagen y trabajar con ella, necesitamos (o podemos hacerlo) utilizando el comando run. Vamos a ver el comando desde la pantalla de Terminal o la opción visual que nos ofrece Docker.

Si volvemos al link anterior de Microsoft sobre las imágenes de SQLServer, veremos que hay una lista de «variables de entorno» (o parámetros) que debemos usar a la hora de crear nuestro contenedor. No están todas (la lista completa está aquí), pero si las mínimas para funcionar. En este caso tenemos las siguientes:

  • ACCEPT_EULA: Nos permite confirmar la licencia de usuario del producto (usaremos el valor Y -yes-).
  • MSSQL_SA_PASSWORD: Nos permite definir el password para el usuario sa (lo usaremos luego para conectarnos).
  • MSSQL_PID: Nos permite «modificar» la versión con la que se creará el contenedor a partir de la imagen (Evaluation, Developer, Express, Web, Standard, Enterprise (*), EnterpriseCore (*), A product key).

Podemos crear y arrancar nuestro contenedor desde la pantalla de Terminal utilizando el siguiente comando (run); Y posteriormente he lanzado «Docker ps» para ver los contenedores en marcha y en la imagen inferior véis la respuesta:

docker run -p 1433:1433 --name SQLSERVER2017 -e SA_PASSWORD=MiP@assword8888 -e ACCEPT_EULA=Y -e MSSQL_PID=Express -d mcr.microsoft.com/mssql/server:2017-latest

Ahí podéis ver las variables de entorno SA_PASSWORD, ACCEPT_EULA, MSSQL_PID y los valores que les he asignado.

Si queremos hacer lo mismo desde Docker Desktop, basta con pulsar el botón de RUN que hay junto a la imagen y rellenar los parámetros (variables de entorno) en la pantalla que aparece.

El resultado en ambos casos debería ser el mismo, si nos vamos a la sección de [Containers] de la aplicación deberíamos ver nuestro nuevo contenedor de SQL Server 2017 versión Express, en marcha.

Voy además a arrancar una segunda instancia, en este caso con la versión «Developer«; Necesito cambiar el puerto para que no colisionen y además le voy a poner un nombre diferente; Para ello utilizaré el siguiente comando:

docker run -p 14333:1433 --name SQLSERVER2017d -e SA_PASSWORD=MiP@assword8888 -e ACCEPT_EULA=Y -e MSSQL_PID=Developer -d mcr.microsoft.com/mssql/server:2017-latest

Ahora ya tengo las 2 instancias en marcha.

NOTA: Cuando he escrito el artículo he generado las 2 instancias en Inglés, pero posteriormente realizando otras pruebas he añadido el parámetro MSSQL_LCID con el valor 3082 y con eso se consigue tener el servidor en español.

  -e MSSQL_LCID=3082

Conectar a las instancias de SQL Server

Sólo nos queda conectar a las 2 instancias (contenedores) de SQL Server que hemos arrancado, como si estuvieran instalador en nuestro equipo. Para ello voy a hacerlo desde el «Management Studio» como lo hago habitualmente para conectarme a otros servidores y al mio en local.

Utilizaré los siguientes parámetros para conectarme a ambas instancias; Estos para la primera:

.

Y los mismos, pero cambiando el puerto de conexión para la segunda:

.
Ahora que ambas están conectadas podemos ver las propiedades y ver que ambos coinciden con las configuraciones que hemos definido al arrancar nuestros contenedores. Los puertos son el 1433 y el 14333 y las versiones son la Express y la Developer del SQL Server 2017 (versión interna 14.0).

 

Ahora ya podemos conectar nuestra aplicación a cualquiera de nuestras instancias.

Hasta aquí esta segunda entrada. Espero que os haya sido útil. Como siempre los comentarios, sugerencias y críticas son bienvenidas.

Hasta la próxima.

Eventos de Base de Datos con SQL Server y FireDAC (Query Notifications)

jueves, 4 de julio de 2019 17 comentarios
Share Button

QueryNotificationsLa mayoría de SGBD’s disponen de un sistema para poder utilizar a lo que habitualmente llamamos eventos o notificaciones, lo que ya no es tan habitual, es que los componentes de acceso implementen esta funcionalidad.

En este artículo me voy a centrar en el sistema que nos ofrece SQL Server (las “Query Notifications”) + FireDAC (TFDEventAlerter).

¿QUE SON LAS “QUERY NOTIFICATIONS”?

Resumiendo y simplificando el concepto, podemos decir que una aplicación cliente recibe una notificación desde el Gestor de Base de Datos, cuando el contenido de una consulta que definimos, cambia. En la práctica funcionaría de la siguiente manera.

Las “query notifications” nos permiten definir la siguiente consulta:

SELECT NOMBRE, APELLIDOS FROM CLIENTES

Y recibir una notificación cuando los datos involucrados en ese consulta (NOMBRE o APELLIDOS del cliente) cambian.

Con esta configuración recibiré una notificación siempre que se AÑADA o BORRE un registro de la tabla CLIENTES y también cuando se modifiquen los campos NOMBRE y APELLIDOS de esta tabla (no así el resto de campos de la tabla).

NOTIFICACIONES EN SQL SERVER

Las notificaciones en SQL Server se introducen en a partir de la versión 2005 (9.x). Y existen varias formas de implementar las notificaciones:

  • SQLNotificationRequest: Está programado a un nivel más bajo y es en cierta forma menos automático, ya que el usuario debe implementar parte de la estructura necesaria para hacerlas funcionar.
  • SQLDependency: Su implementación es a nivel más alto y el sistema es más automatizado. Se inicia un proceso que procesa las notificaciones que se publican en una cola.
  • SQLCacheDependency: Que se utiliza para aplicaciones Web diseñadas mediante ASP.NET 2.0 o posterior.

En nuestro caso nos vamos a centrar en SqlDependency que es el método que utiliza el componente TFDEventAlerter de las FireDAC.

Leer más…

Ejecutar DTS (SQL Server) desde Delphi

viernes, 7 de marzo de 2008 10 comentarios
Share Button

Con éste ejemplo se muestra cómo ejecutar un DTS (Data Transformation Services) creado en SQL server 2000 desde un programa de Delphi 6.
Para trabajar con DTS desde Delphi, se debe generar la unit DTS_TLB a partir del objeto «Microsoft DTSPackage Object Library (Versión X.X)».

Para generar la unit se deben seguir los pasos desde el IDE de Delphi:

  1. Project / Import Type Librery
  2. Seleccionar: «Microsoft DTSPackage Object Library (Versión X.X)»
  3. Create Unit

La unit creada se deberá añadir al USES del proyecto.

Download Descargar ejemplo

Categories: Delphi, Ejemplos Tags: ,