Partage via


Se connecter à SQL Server depuis Power Apps

Vous pouvez vous connecter à SQL Server dans Azure ou dans une base de données locale.

Notes

Les nouvelles sources de données SQL créées ne sont plus précédées du préfixe [dbo], comme dans les versions précédentes de Power Apps.

Pour plus d’informations, consultez Problèmes communs et résolutions pour Power Apps.

Générer une application automatiquement

Selon l’interface Power Apps que vous utilisez, référencez la nouvelle apparence ou à l’apparence classique pour créer une application.

  1. Connectez-vous à Power Apps.

  2. Sur la page Accueil, sélectionnez l’option galerie à une seule page ou mobile à trois écrans :

    • Pour créer une application de galerie d’une seule page avec une disposition dynamique, choisissez l’une des options suivantes :
      • Commencer avec des données > Sélectionner des données externes > Depuis SQL.
      • Commencer par une conception de page > Galerie connectée à des données externes > Depuis SQL.
    • Pour créer une application mobile à trois écrans, sélectionnez Commencer avec un modèle d’application > De SQL.
  3. Sélectionnez votre connexion SQL, puis sélectionnez une table. Pour choisir une connexion différente, sélectionnez le menu de débordement ... pour changer de connexion ou créer une nouvelle connexion SQL.

    Notes

    Une connexion à la fois.

  4. Quand vous avez terminé, sélectionnez Créer une application.

Appeler des procédures stockées directement dans Power Fx (version préliminaire)

Vous pouvez désormais appeler directement les procédures stockées SQL Server à partir de Power Fx. Par défaut, ce nouveau commutateur doit être activé. Sinon, vous pouvez l’activer.

  1. Accédez à Paramètres > Mises à jour > Nouveau.
  2. Recherchez procédures stockées.
  3. Définissez le bouton bascule sur Activé pour Procédures stockées SQL Server.
  4. Enregistrez et rouvrez l’application.

Capture d’écran montrant que le bouton bascule des procédures stockées SQL Server est défini sur Activé.

Lorsque vous ajoutez une connexion SQL Server à votre application, vous pouvez désormais ajouter des tables et des vues ou des procédures stockées. Cette fonctionnalité fonctionne également avec des connexions implicites sécurisées.

Capture d’écran affichant les listes de tables, de vues et de procédures stockées qui peuvent être ajoutées à votre application.

Si vous ne voyez pas immédiatement votre procédure stockée, il est plus rapide de la rechercher.

Une fois que vous avez sélectionné une procédure stockée, un nœud enfant apparaît et vous pouvez désigner la procédure stockée comme Utilisation sécurisée pour les galeries et les tables. Si vous cochez cette option, vous pouvez attribuer votre procédure stockée en tant que propriété Éléments pour les galeries des tables à utiliser dans votre application.

Activez cette option uniquement si :

  1. Il n’y a aucun effet secondaire à appeler cette procédure à la demande, plusieurs fois, chaque fois Power Apps actualise le contrôle. Lorsqu’elle est utilisée avec une propriété Éléments d’une galerie ou d’une table, Power Apps appelle la procédure stockée chaque fois que le système détermine qu’une actualisation est nécessaire. Vous ne pouvez pas contrôler le moment où la procédure stockée est appelée.
  2. La quantité de données que vous renvoyez dans la procédure stockée est modeste. Les appels à l’action, tels que les procédures stockées, n’ont pas de limite au nombre de lignes récupérées. Ils ne sont pas automatiquement paginés en incréments de 100 enregistrements comme les sources de données tabulaires telles que les tables ou les vues. Ainsi, si la procédure stockée renvoie trop de données (plusieurs milliers d’enregistrements), votre application pourrait ralentir ou se bloquer. Pour des raisons de performances, vous devez importer moins de 2 000 enregistrements.

Important

Le schéma des valeurs renvoyées de la procédure stockée doit être statique. Ce qui signifie que cela ne change pas d’un appel à l’autre. Par exemple, si vous appelez une procédure stockée et qu’elle renvoie deux tables, elle doit toujours renvoyer deux tables. Vous pouvez travailler avec des résultats typés ou non typés. La structure des résultats doit être la même d’un appel à l’autre. Si le schéma des résultats est dynamique, alors les résultats ne seront pas typés et vous devrez fournir un type pour pouvoir les utiliser dans Power Apps. Pour plus d’informations, accédez à Résultats non typés.

Espace de noms SQL ajouté au nom de la procédure stockée

Le nom de l’espace de noms SQL Server dans lequel la procédure stockée est stockée est ajouté au nom de la procédure stockée qui est créée pour elle dans Power Apps. Par exemple, toutes les procédures stockées dans l’espace de noms SQL Server ’DBO’ ont le ’dbo’ au début du nom.

Exemple

Lorsque vous ajoutez une procédure stockée, vous pouvez voir plusieurs source de données dans votre projet.

Capture d’écran montrant les sources de données SQL.

Appel d’une procédure stockée

Pour utiliser une procédure stockée dans Power Apps, ajoutez d’abord au nom de la procédure stockée le nom du connecteur qui lui est associé et le nom de la procédure stockée. « Paruntimedb.dbonenewlibrarybook » dans l’exemple illustre ce modèle. Lorsque Power Apps la procédure stockée est introduite, elle concatène l’espace de noms et le nom de la procédure, et "dbo.newlibrarybook" devient "dbonewlibrarybook".

Les arguments sont transmis sous forme d’enregistrement avec des paires de valeurs nommées : Power Apps

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

N’oubliez pas de convertir les valeurs si nécessaire lorsque vous les transmettez à votre procédure stockée, car vous lisez une valeur texte dans Power Apps. Par exemple, si vous mettez à jour un entier dans SQL, vous devez convertir le texte dans le champ à l’aide de « Value() ».

Appel direct des procédures stockées.

Accéder aux résultats

Une procédure stockée peut renvoyer un code, des valeurs de paramètres Out ou les résultats de requêtes. Pour accéder à ces résultats, utilisez les modèles suivants :

Code de retour

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

Utilisez ceci pour accéder aux résultats d’une instruction de retour.

Paramètres de sortie

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

Prenez note d’utiliser le nom du paramètre tel qu’il apparaît dans la charge utile JSON.

Ensembles de résultats

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

Des tables supplémentaires sont accessibles via leur nom (par exemple, Table1, Table2, Table3, ...)

Résultats non typés

Certaines procédures stockées complexes renvoient un résultat non typé. Ces résultats ne sont pas accessibles directement. Vous devez d’abord fournir un type. Vous pouvez accéder aux données en utilisant le modèle suivant.

Dans cet exemple, nous extrayons d’abord les résultats dans une variable nommée "MyUntypedObject". Ensuite, nous extrayons "Table1" de cette variable et la plaçons dans une variable nommée "table1". Ce étape n’est pas strictement nécessaire. Il est cependant utile de mettre tous les résultats dans une variable à un moment donné, puis d’extraire les parties dont vous avez besoin. Ensuite, nous parcourons la table 1 et extrayons les éléments JSON dans les paires de valeurs nommées. Assurez-vous de faire correspondre les noms avec les noms renvoyés dans la charge utile JSON. Pour valider, ouvrez un moniteur et regardez la section du corps du nœud de données pour un enregistrement. 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)
        }
    )
);

Vous pouvez accéder à une procédure stockée pour la propriété Items d’une galerie après l’avoir déclarée comme sûre pour l’interface utilisateur. Référencez le nom de la source de données et le nom de la procédure stockée suivi de « ResultSets ». Vous pouvez accéder à plusieurs résultats en référençant l’ensemble de tables renvoyées, telles que Table 1, Table 2, etc.

Par exemple, votre accès à une procédure stockée à partir d’une source de données nommée « Paruntimedb » avec une procédure stockée nommée « dbo.spo_show_all_library_books() » ressemblerait à ce qui suit.

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Cela remplit la galerie avec des enregistrements. Cependant, les procédures stockées sont un ajout de comportements d’action au modèle tabulaire. Refresh() fonctionne uniquement avec des sources de données tabulaires et ne peut pas être utilisé avec des procédures stockées. Ensuite, vous devez actualiser la galerie lorsqu’un enregistrement est créé, mis à jour ou supprimé. Lorsque vous utilisez un Submit() sur un formulaire pour un source de données tabulaire, il appelle effectivement Refresh() sous les couvertures et met à jour la galerie.

Pour contourner cette limitation, utilisez une variable dans la propriété OnVisible pour l’écran et définissez la procédure stockée sur la variable.

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

Ensuite, définissez la propriété « Items » de la galerie sur le nom de la variable.

SP_Books

Ensuite, après avoir créé, mis à jour ou supprimé un enregistrement avec un appel à la procédure stockée, définissez à nouveau la variable. Cela met à jour la galerie.

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

Problèmes connus

Les sources de données SQL n’ajoutent plus de préfixe [dbo] au nom la source de données

Le préfixe [dbo] n’a aucune utilité pratique dans Power Apps car les noms des sources de données sont automatiquement différenciés. Les sources de données existantes ne sont pas affectées par ce changement, mais les sources de données SQL nouvellement ajoutées n’incluent pas le préfixe.

Si vous devez mettre à jour un grand nombre de formules dans l’une de vos applications, l’utilitaire pour décompresser et compresser de fichiers source Power Apps peut être utilisé pour effectuer une recherche et un remplacement globaux.

Notes

À partir de la version 3.21054, nous mettrons automatiquement à jour les références de noms hérités corrompus vers le nouveau nom de la source de données après la lecture de la source de données.

Étapes suivantes

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).