Inicio rápido: Establecimiento de una aplicación de Durable Functions para usar el proveedor de almacenamiento MSSQL
Artikulua
Use Durable Functions, una característica de Azure Functions, para escribir funciones con estado en un entorno sin servidor. Durable Functions administra el estado, los puntos de control y los reinicios en la aplicación.
El back-end de MSSQL se diseñó para maximizar la portabilidad y el control de las aplicaciones sobre los datos. Usa Microsoft SQL Server para conservar todos los datos del centro de tareas para que los usuarios obtengan las ventajas de una infraestructura moderna de sistema de administración de bases de datos de nivel empresarial (DBMS). Para obtener más información sobre cuándo usar el proveedor de almacenamiento MSSQL, vea la introducción a los proveedores de almacenamiento.
Actualmente no se admite la migración de datos del centro de tareas entre proveedores de almacenamiento. Las aplicaciones de funciones que tienen datos en tiempo de ejecución existentes comienzan con un centro de tareas nuevo y vacío después de cambiar al back-end de MSSQL. Del mismo modo, el contenido del centro de tareas que se crea mediante MSSQL no se puede conservar si cambia a otro proveedor de almacenamiento.
El back-end de MSSQL no es compatible actualmente con Durable Functions cuando se ejecuta en el plan de Consumo flexible.
Requisitos previos
En los pasos siguientes se supone que tiene una aplicación de Durable Functions existente y que está familiarizado con cómo operarla.
En concreto, en este inicio rápido se da por supuesto que ya tiene:
Ha creado un proyecto de Azure Functions en el equipo local.
Incorporación de la extensión MSSQL de Durable Task (solo .NET)
Oharra
Si la aplicación usa Paquetes de extensiones, omita esta sección. Extension Bundles elimina la necesidad de administración manual de extensiones.
En primer lugar, instale la versión más reciente de la Microsoft.Azure.Functions.Worker.Extensions.DurableTask.SqlServer extensión del proveedor de almacenamiento MSSQL desde NuGet. Para .NET, agregue una referencia a la extensión en el archivo de .csproj y, a continuación, compile el proyecto. También puede usar el comando dotnet add package para agregar paquetes de extensión.
func extensions install --package <package name depending on your worker model> --version <latest version>
Para obtener más información sobre cómo instalar extensiones de Azure Functions a través de la CLI de Core Tools, vea instalación de extensiones de func.
Configuración de la base de datos
Oharra
Si ya tiene una base de datos compatible con MSSQL, puede omitir esta sección y omitir la sección siguiente sobre cómo configurar una base de datos local basada en Docker.
Dado que el back-end de MSSQL está diseñado para la portabilidad, tiene varias opciones para configurar la base de datos de copia de seguridad. Por ejemplo, puede configurar una instancia de SQL Server local, usar una instancia totalmente administrada de Azure SQL Database, o usar cualquier otra opción de hospedaje compatible con SQL Server.
También puede realizar el desarrollo local y sin conexión mediante SQL Server Express en el equipo Windows local o usar una imagen de Docker de SQL Server que se ejecuta en un contenedor de Docker.
Este inicio rápido se centra en el uso de una imagen de Docker de SQL Server.
Configuración de la instancia local de SQL Server basada en Docker
Para ejecutar estos pasos, necesita una instalación de Docker en el equipo local. Puede usar los siguientes comandos de PowerShell para configurar una base de datos local de SQL Server en Docker. Puede instalar PowerShell en Windows, macOS o Linux.
PowerShell
# primary parameters$pw = "yourStrong(!)Password"$edition = "Developer"$port = 1433$tag = "2019-latest"$dbname = "DurableDB"$collation = "Latin1_General_100_BIN2_UTF8"# pull the image from the Microsoft container registry
docker pull mcr.microsoft.com/mssql/server:$tag# run the image and provide some basic setup parameters
docker run --namemssql-server -e'ACCEPT_EULA=Y' -e"MSSQL_SA_PASSWORD=$pw" -e"MSSQL_PID=$edition" -p ${port}:1433 -d mcr.microsoft.com/mssql/server:$tag# wait a few seconds for the container to start...# create the database with strict binary collation
docker exec -dmssql-server /opt/mssql-tools/bin/sqlcmd -S . -U sa -P"$pw" -Q"CREATE DATABASE [$dbname] COLLATE $collation"
Después de ejecutar estos comandos, debe tener un servidor SQL Server local en ejecución en Docker y escuchar en el puerto 1443. Si el puerto 1443 entra en conflicto con otro servicio, puede volver a ejecutar estos comandos después de cambiar la variable $port a un valor diferente.
Si recibe este error al ejecutar el último comando:
Error response from daemon: OCI runtime exec failed: exec failed: unable to start container process: exec: "/opt/mssql-tools/bin/sqlcmd": stat /opt/mssql-tools/bin/sqlcmd: no such file or directory: unknown
Es probable que la carpeta /opt/mssql-tools/bin/sqlcmd no exista. Abra Docker Desktop, seleccione el contenedor de Docker de SQL Server, seleccione Archivos y busque la carpeta mssql-tools. Esta carpeta puede tener un nombre diferente, como /opt/mssql-tools18/bin/sqlcmd. Actualice la última línea de código en consecuencia y ejecútelo.
Oharra
Para detener y eliminar un contenedor en ejecución, puede usar docker stop <containerName> y docker rm <containerName> respectivamente. Puede usar estos comandos para volver a crear el contenedor y detenerlo cuando termine este inicio rápido. Para obtener más ayuda, ejecute docker --help.
Para validar la instalación de la base de datos, use este comando de Docker para consultar la nueva base de datos SQL:
PowerShell
docker exec -itmssql-server /opt/mssql-tools/bin/sqlcmd -S . -U sa -P"$pw" -Q"SELECT name FROM sys.databases"
Si la configuración de la base de datos se completó correctamente, el nombre de la base de datos (por ejemplo, DurableDB) aparece en la salida de la línea de comandos:
Bash
name
--------------------------------------------------------------
master
tempdb
model
msdb
DurableDB
Incorporación de la cadena de conexión SQL a local.settings.json
El back-end de MSSQL necesita una cadena de conexión para acceder a la base de datos. La obtención de una cadena de conexión depende principalmente de su proveedor de servidor MSSQL específico. Para obtener información sobre cómo obtener una cadena de conexión, revise la documentación de su proveedor específico.
Si usa los comandos anteriores de Docker sin cambiar ningún parámetro, la cadena de conexión es:
Después de obtener la cadena de conexión, agréguela a una variable en local.settings.json para usarla durante el desarrollo local.
Este es un ejemplo local.settings.json que asigna la cadena de conexión de instancia de SQL Server basada en Docker predeterminada a la variable SQLDB_Connection:
JSON
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"SQLDB_Connection": "Server=localhost,1433;Database=DurableDB;User Id=sa;Password=yourStrong(!)Password;",
"FUNCTIONS_WORKER_RUNTIME": "<dependent on your programming language>"
}
}
Oharra
El valor de FUNCTIONS_WORKER_RUNTIME depende del lenguaje de programación que use. Para obtener más información, vea la referencia de tiempo de ejecución.
Actualización de host.json
Edite la sección proveedor de almacenamiento del archivo host.json para establecer type en mssql. También debe especificar el nombre de la variable de cadena de conexión, SQLDB_Connection, en connectionStringName. Establezca createDatabaseIfNotExists en true. Esta configuración crea una base de datos denominada DurableDB si aún no existe, con la intercalación Latin1_General_100_BIN2_UTF8.
Este ejemplo de código es un ejemplo de host.json relativamente básico. Más adelante, es posible que quiera agregar parámetros.
Prueba local
La aplicación ya está lista para el desarrollo local. Puede iniciar la aplicación de funciones para probarla. Una manera de iniciar la aplicación es ejecutar func host start en la raíz de la aplicación y ejecutar una función básica de orquestador.
Mientras se ejecuta la aplicación de funciones, actualiza el estado en tiempo de ejecución en la base de datos SQL configurada. Puede probar que funciona según lo previsto mediante la interfaz de consulta SQL. Por ejemplo, en el contenedor de SQL Server local basado en Docker, puede ver el estado de las instancias de orquestación mediante el siguiente comando de Docker:
Bash
docker exec -it mssql-server /opt/mssql-tools/bin/sqlcmd -S . -d $dbname -U sa -P "$pw" -Q "SELECT TOP 5 InstanceID, RuntimeStatus, CreatedTime, CompletedTime FROM dt.Instances"
Después de ejecutar una orquestación, la consulta devuelve los resultados que se parecen a este ejemplo:
Para ejecutar la aplicación en Azure, necesita una instancia de SQL Server accesible públicamente. Puede obtener uno mediante la creación de una base de datos de Azure SQL.
Crear una base de datos de Azure SQL
Oharra
Si ya tiene una base de datos de Azure SQL u otra instancia de SQL Server accesible públicamente que desea usar, puede ir a la sección siguiente.
En Azure Portal, puede crear una base de datos de Azure SQL. Al configurar la base de datos, asegúrese de establecer el valor de Intercalación de base de datos (en Configuración adicional) en Latin1_General_100_BIN2_UTF8.
Para obtener la cadena de conexión de la base de datos de Azure SQL, vaya al panel de información general de la base de datos en Azure Portal. A continuación, en Configuración, seleccione Cadenas de conexión y obtenga la cadena de conexión ADO.NET. Asegúrese de proporcionar la contraseña en la plantilla proporcionada.
Este es un ejemplo de cómo obtener la cadena de conexión de Azure SQL en el portal:
En Azure Portal, la cadena de conexión tendrá la contraseña de la base de datos quitada: se reemplaza por {your_password}. Reemplace ese marcador de posición por la contraseña que usó para crear la base de datos anteriormente en esta sección. Si olvidó la contraseña, puede restablecerla; para ello, vaya al panel de información general de la base de datos en Azure Portal. En la vista Essentials, seleccione el nombre del servidor. A continuación, seleccione Restablecer contraseña. Para obtener ejemplos, vea las capturas de pantalla siguientes.
Adición de la cadena de conexión como una configuración de aplicación
A continuación, agregue la cadena de conexión de la base de datos como una configuración de aplicación. Para agregarlo en Azure Portal, vaya primero a la vista de la aplicación de Azure Functions. En Configuración, seleccione Nueva configuración de aplicación. Asigne SQLDB_Connection para asignar a una cadena de conexión accesible públicamente. Para obtener ejemplos, vea las capturas de pantalla siguientes.
Implementar
Ahora puede implementar la aplicación de funciones en Azure y ejecutar las pruebas o la carga de trabajo en ella. Para validar que el back-end de MSSQL está configurado correctamente, puede consultar la base de datos para los datos del centro de tareas.
Por ejemplo, puede consultar las instancias de orquestación en el panel de información general de la base de datos SQL. Seleccione Editor de consultas, autentíquese y, a continuación, ejecute la consulta siguiente:
SQL
SELECT TOP 5 InstanceID, RuntimeStatus, CreatedTime, CompletedTime FROM dt.Instances
Después de ejecutar un orquestador simple, debería ver al menos un resultado, como se muestra en este ejemplo:
Contenido relacionado
Para obtener más información sobre la tarea de aplicación de Durable Functions, el comportamiento de la arquitectura de back-end, la configuración y la carga de trabajo de Durable Functions, vea la documentación del proveedor de almacenamiento de MSSQL.
Bat egin IAren soluzio eskalagarrien soluzioak sortzeko topaketa sortarekin, mundu errealaren erabilera-kasuetan oinarrituak, beste garatzaile eta aditu batzuekin.
Averigüe por qué Azure SQL Database es una elección adecuada como base de datos relacional, y aprenda a crear la base de datos desde el portal y a conectarse con Azure Cloud Shell.
Administre una infraestructura de base de datos de SQL Server para bases de datos relacionales locales e híbridas en la nube mediante las ofertas de bases de datos relacionales PaaS de Microsoft.