Conectarse al SQL Server desde Power Apps

Puede conectarse a SQL Server en Azure o en una base de datos local.

Nota

Las fuentes de datos SQL recién creadas ya no tienen el prefijo [dbo] como lo hacían en versiones anteriores de Power Apps.

Para obtener más información, consulte Problemas habituales y sus soluciones para Power Apps.

Generar una aplicación automáticamente

Dependiendo de qué Power Apps interfaz esté usando, haga referencia al nuevo aspecto o al aspecto clásico para crear una aplicación.

  1. Inicie sesión en Power Apps.

  2. Desde la página Inicio, seleccione la opción galería de una sola página o móviles de tres pantalla:

    • Para crear una aplicación de galería de una sola página con un diseño receptivo, elija una de las siguientes opciones:
      • Comenzar con datos > Seleccionar datos externos > De SQL.
      • Comenzar con un diseño de página > Galería conectada a datos externos > De SQL.
    • Para crear una aplicación móvil de tres pantallas, seleccione Comenzar con una plantilla de aplicación > Desde SQL.
  3. Seleccione su conexión SQL y luego seleccione una tabla. Para elegir una conexión diferente, seleccione el menú adicional ... para cambiar su conexión o crear una nueva conexión SQL.

    Nota

    Solo se muestra una conexión a la vez.

  4. Cuando haya terminado, seleccione Crear aplicaión.

Llamar a procedimientos almacenados directamente en Power Fx (versión preliminar)

Ahora puede llamar directamente a procedimientos almacenados de SQL Server desde Power Fx. De forma predeterminada, este nuevo interruptor debería estar activado. Si no, puedes activarlo.

  1. Vaya a Configuración > Actualizaciones > Nuevo.
  2. Busque procedimientos almacenados.
  3. Ajuste el control de alternancia en Activado para procedimientos almacenados de SQL Server.
  4. Guarde y vuelva a abrir la aplicación.

Captura de pantalla que muestra los procedimientos almacenados de SQL Server activados.

Cuando agrega una conexión de SQL Server a su aplicación, ahora puede agregar tablas y vistas o procedimientos almacenados. Esta característica también funciona con conexiones implícitas seguras.

Captura de pantalla que muestra listas de tablas, vistas y procedimientos almacenados disponibles para agregar a su aplicación.

Si no ve inmediatamente su procedimiento almacenado, es más rápido buscarlo.

Una vez que selecciona un procedimiento almacenado, aparece un nodo secundario y puede designar el procedimiento almacenado como Seguro de usar para galerías y tablas. Si marca esta opción, puede asignar su procedimiento almacenado como una propiedad Elementos para galerías de tablas que usará en su aplicación.

Habilite esta opción solo si:

  1. No hay efectos secundarios al llamar a este procedimiento bajo demanda, varias veces, cada vez que Power Apps actualiza el control. Cuando se usa con una propiedad Elementos de una galería o tabla, Power Apps llama al procedimiento almacenado cada vez que el sistema determina que es necesaria una actualización. No puede controlar cuándo se llama al procedimiento almacenado.
  2. La cantidad de datos que devuelve en el procedimiento almacenado es modesta. Las llamadas a la acción, como los procedimientos almacenados, no tienen un límite en la cantidad de filas recuperadas. No se paginan automáticamente en incrementos de 100 registros como las fuentes de datos tabulares, como tablas o vistas. Por lo tanto, si el procedimiento almacenado devuelve demasiados datos (muchos miles de registros), su aplicación podría ralentizarse o fallar. Por razones de rendimiento, debes traer menos de 2000 registros.

Importante

El esquema de los valores de retorno del procedimiento almacenado debe ser estático. Lo que significa que no cambia de una llamada a otra. Por ejemplo, si llama a un procedimiento almacenado y este devuelve dos tablas, entonces siempre debería devolver dos tablas. Puede trabajar con resultados tipificados o no tipificados. La estructura de los resultados debe ser la misma de una llamada a otra. Si el esquema de los resultados es dinámico, entonces los resultados no tendrán tipo y será necesario proporcionar un tipo para poder usarlos en Power Apps. Para obtener más información, vaya a Resultados sin tipo.

Espacio de nombres SQL antepuesto al nombre del procedimiento almacenado

El nombre del espacio de nombres de SQL Server en el que se almacena el procedimiento almacenado se antepone al nombre del procedimiento almacenado que se crea para él en Power Apps. Por ejemplo, todos los procedimientos almacenados en el espacio de nombres de SQL Server 'DBO' tienen 'dbo' al comienzo del nombre. · ·

Ejemplo

Cuando agrega un procedimiento almacenado, es posible que vea más de un origen de datos en su proyecto.

Captura de pantalla que muestra orígenes de datos SQL.

Llamar a un procedimiento almacenado

Para utilizar un procedimiento almacenado en Power Apps, primero anteponga al nombre del procedimiento almacenado el nombre del conector asociado a él y el nombre del procedimiento almacenado. 'Paruntimedb.dbonewlibrarybook' en el ejemplo ilustra este patrón. Cuando Power Apps introduce el procedimiento almacenado, concatena el espacio de nombres y el nombre del procedimiento, y 'dbo.newlibrarybook' se convierte en 'dbonewlibrarybook'.

Los argumentos se pasan como un registro con pares de valores nombrados: Power Apps

<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})

Recuerde convertir los valores según sea necesario a medida que los pasa a su procedimiento almacenado según sea necesario, ya que está leyendo desde un valor de texto en Power Apps. Por ejemplo, si está actualizando un número entero en SQL, debe convertir el texto en el campo usando 'Value()'.

Llamar directamente a procedimientos almacenados.

Accediendo a los resultados

Un procedimiento almacenado puede devolver un código, valores de parámetros de salida o los resultados de consultas. Para acceder a estos resultados, utilice los siguientes patrones:

Código de retorno

<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >}).ReturnCode

Utilice esto para acceder a los resultados de una declaración de retorno.

Parámetros de salida

<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >}).OutputParameters.<parameterName>

Tenga en cuenta que debe utilizar el nombre del parámetro tal como aparece en la carga JSON.

Conjuntos de resultados

<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >}).ResultSets.Table1

Se puede acceder a tablas adicionales a través de su nombre (por ejemplo, Tabla1, Tabla2, Tabla3, ...)

Resultados sin tipificar

Algunos procedimientos almacenados complicados devuelven un resultado sin tipo. Estos resultados no son accesibles directamente. Primero debes proporcionar un tipo. Puede acceder a los datos utilizando el siguiente patrón.

En este ejemplo, primero extraemos los resultados en una variable llamada "MyUntypedObject". Luego extraemos 'Tabla1' de esa variable y la colocamos en una variable llamada 'tabla1'. Este paso no es estrictamente necesario. Sin embargo, es útil colocar todos los resultados en una variable en un momento dado apuntar y luego extraer las partes que necesita. Luego, iteramos a través de la tabla 1 y extraemos los elementos JSON en pares de valores con nombre. Asegúrese de hacer coincidir los nombres con los nombres que se devuelven en la carga útil JSON. Para validar, abra un monitor y observe la sección del cuerpo del nodo de datos en busca de un registro. Power Apps

Set(
    <MyUntypedObject>,
    <datasourceName>.<StoredprocedureName>( 
      { <paramName1>: "someString" }
    ).ResultSets
);
Set(
    table1,
    <MyUntypedObject>.Table1
);
Set(
    TypedTable,
    ForAll(
        table1,
        {
            BookID: Value(ThisRecord.BookID),
            BookName: Text(ThisRecord.BookName)
        }
    )
);

Puede tener acceso a un procedimiento almacenado para la propiedad Elementos de una galería después de declararla segura para la interfaz de usuario. Haga referencia al nombre origen de datos y al nombre del procedimiento almacenado seguido de 'ResultSets'. Puede obtener acceso a varios resultados haciendo referencia al conjunto de tablas devueltas, como la Tabla 1, la Tabla 2, etc.

Por ejemplo, su acceso a un procedimiento almacenado desde un origen de datos llamado 'Paruntimedb' con un procedimiento almacenado llamado 'dbo.spo_show_all_library_books()' se verá así.

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Esto llena la galería con registros. Sin embargo, los procedimientos almacenados son una adición de comportamientos de acción al modelo tabular. Refresh() solo funciona con fuentes de datos tabulares y no se puede utilizar con procedimientos almacenados. Luego, deberá actualizar la galería cuando se cree, actualice o elimine un registro. Cuando se utiliza un Submit() en un formulario para una tabla origen de datos, efectivamente llama a Refresh() en segundo plano y actualiza la galería.

Para sortear esta limitación, utilice una variable en la propiedad OnVisible de la pantalla y establezca el procedimiento almacenado en la variable.

Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);

Y, a continuación, establezca la propiedad 'Elementos' de la galería con el nombre de la variable.

SP_Books

A continuación, después de crear, actualizar o eliminar un registro con una llamada al procedimiento almacenado, vuelva a establecer la variable. Esto actualiza la galería.

Paruntimedb.dbonewlibrarybook({   
  book_name: DataCardValue3_2.Text, 
  author: DataCardValue1_2.Text,
    ...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);

Problemas conocidos

Los orígenes de datos SQL ya no agregan un prefijo [dbo] al nombre origen de datos

El prefijo [dbo] no tiene ningún propósito práctico en Power Apps, ya que los nombres de los orígenes de datos se desambiguan automáticamente. Las fuentes de datos existentes no se ven afectadas por este cambios, pero las fuentes de datos SQL recién agregadas no incluyen el prefijo.

Si necesita actualizar una gran cantidad de fórmulas en una de sus aplicaciones, la Utilidad de empaquetado y desempaquetado de archivos de origen de Power Apps se puede utilizar para realizar una búsqueda y sustitución global.

Nota

A partir de la versión 3.21054, actualizaremos automáticamente las referencias de nombres heredados rotas al nuevo nombre origen de datos después de leer el origen de datos.

Pasos siguientes

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).