Partilhar via


Ligar ao SQL Server a partir do Power Apps

Pode ligar ao SQL Server numa base de dados do Azure ou no local.

Nota

As origens de dados SQL criadas recentemente já não estão prefixadas com [dbo] tal como em versões anteriores do Power Apps.

Para mais informações, consulte Problemas comuns e resoluções para o Power Apps.

Gerar automaticamente uma aplicação

Dependendo da interface do Power Apps que estiver a utilizar, consulte o novo visual ou o visual clássico para criar uma aplicação.

  1. Inicie sessão no Power Apps.

  2. Na página Home Page, selecione a galeria de página única ou a opção móvel de três ecrãs:

    • Para criar uma aplicação de galeria de uma página com um esquema reativo, escolha uma das seguintes alternativas:
      • Começar com dados > Selecionar dados externos > Do SQL.
      • Começar com um design de página > Galeria ligada a dados externos > Do SQL.
    • Para criar uma aplicação móvel de três ecrãs, selecione Começar com um modelo de aplicação > A partir de SQL.
  3. Selecione a sua ligação SQL e, em seguida, selecione uma tabela. Para escolher uma ligação diferente, selecione o menu de conteúdos adicionais ... para mudar a sua ligação ou criar uma nova ligação SQL.

    Nota

    Só é apresentada uma ligação de cada vez.

  4. Quando tiver terminado, selecione Criar aplicação.

Chamar procedimentos armazenados diretamente no Power Fx (pré-visualização)

Agora você pode chamar diretamente os procedimentos armazenados do SQL Server Power Fx. Por padrão, essa nova opção deve estar ligada. Se não, você pode ativá-lo.

  1. Vá para Configurações > Atualizações Novas > ·.
  2. Procure procedimentos armazenados.
  3. Defina a alternância como Ativado para procedimentos armazenados do SQL Server.
  4. Guarde e abra novamente a aplicação.

Captura de ecrã que mostra o botão de alternar para procedimentos armazenados do SQL Server definido como Ativo.

Quando adiciona uma ligação SQL Server à sua aplicação, pode agora adicionar tabelas e vistas ou procedimentos armazenados. Esta funcionalidade também funciona com ligações implícitas seguras.

Captura de ecrã que mostra listas de tabelas, vistas e procedimentos armazenados disponíveis para serem adicionados à sua aplicação.

Se não vir imediatamente o procedimento armazenado, é mais rápido procurá-lo.

Depois de selecionar um procedimento armazenado, um nó subordinado aparece e pode designar o procedimento armazenado como Seguro para uso para galerias e tabelas. Se marcar esta opção, pode atribuir o procedimento armazenado como uma propriedade de Itens para galerias e tabelas utilizarem na sua aplicação.

Ative esta opção apenas se:

  1. Não existem efeitos secundários em chamar este procedimento a pedido, várias vezes, sempre que o Power Apps atualiza o controlo. Quando usado com uma propriedade de Itens de uma galeria ou tabela, o Power Apps chama o procedimento armazenado sempre que o sistema determina que uma atualização é necessária. Não é possível controlar quando o procedimento armazenado é chamado.
  2. A quantidade de dados que devolve no procedimento armazenado é modesta. As chamadas de ação, tais como procedimentos armazenados, não têm um limite para o número de linhas obtidas. Não são automaticamente paginados em incrementos de 100 registos, como origens de dados tabulares, tais como tabelas ou vistas. Assim, se o procedimento armazenado devolver demasiados dados (muitos milhares de registos), a aplicação poderá abrandar ou falhar. Por motivos de desempenho, você deve trazer menos de 2.000 registros.

Importante

O esquema dos valores de retorno do procedimento armazenado deve ser estático. O que significa que não muda de chamada para chamada. Por exemplo, se você chamar um procedimento armazenado e ele retornar duas tabelas, ele sempre deverá retornar duas tabelas. Você pode trabalhar com resultados digitados ou não tipados. A estrutura dos resultados tem de ser a mesma de chamada para chamada. Se o esquema dos resultados for dinâmico, os resultados não serão tipados e você precisará fornecer um tipo para usá-los Power Apps. Para obter mais informações, vá para Resultados não tipados.

Namespace SQL pré-fixado ao nome do procedimento armazenado

O nome do namespace do SQL Server no qual o procedimento armazenado está armazenado é pré-anexado ao nome do procedimento armazenado criado para ele Power Apps. Por exemplo, todos os procedimentos armazenados no namespace 'DBO'SQL Server têm o'dbo ' no início do nome.

Exemplo

Quando adiciona um procedimento armazenado, poderá ver mais do que uma origem de dados no seu projeto.

Captura de ecrã que mostra origens de dados SQL.

Chamando um procedimento armazenado

Para utilizar um procedimento armazenado no Power Apps, comece por prefixar o nome do procedimento armazenado com o nome do conector associado ao mesmo e o nome do procedimento armazenado. 'Paruntimedb.dbonewlibrarybook' no exemplo ilustra esse padrão. Quando Power Apps traz o procedimento armazenado, ele concatena o namespace e o nome do procedimento, e 'dbo.newlibrarybook' se torna 'dbonewlibrarybook'.

Os argumentos são passados como um Power Apps registro com pares de valores nomeados:

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

Lembre-se de converter valores conforme necessário ao passá-los para o procedimento armazenado, conforme necessário, já que você está lendo a partir de um valor de texto em Power Apps. Por exemplo, se estiver a atualizar um número inteiro em SQL, tem de converter o texto no campo utilizando "Value()".

Chamar procedimentos armazenados diretamente.

Acesso aos resultados

Um procedimento armazenado pode retornar um código, valores de parâmetros out ou os resultados de consultas. Para acessar esses resultados, use os seguintes padrões:

Código de retorno

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

Use isso para acessar os resultados de uma instrução de retorno.

Parâmetros de saída

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

Anote para usar o nome do parâmetro como ele aparece na carga JSON útil.

Conjuntos de resultados

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

Tabelas adicionais podem ser acessadas através de seu nome (por exemplo, Table1, Table2, Table3, ... )

Resultados não tipados

Alguns procedimentos armazenados complicados retornam um resultado não tipado. Esses resultados não são acessíveis diretamente. Você deve primeiro fornecer um tipo. Você pode acessar os dados usando o seguinte padrão.

Neste exemplo, primeiro puxamos os resultados para uma variável chamada "MyUntypedObject". Em seguida, puxamos 'Table1' dessa variável e a colocamos em uma variável chamada 'table1'. Este passo não é estritamente necessário. É útil, no entanto, colocar todos os resultados em uma variável em um ponto no tempo e, em seguida, retirar as peças que você precisa. Em seguida, iteramos através da tabela1 e extraímos os elementos JSON em pares de valores nomeados. Certifique-se de corresponder os nomes com os nomes que são retornados na carga JSON útil. Para validar, abra um Power Apps monitor e examine a secção do corpo do nó de dados de um registro.

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

Pode aceder a um procedimento armazenado para a propriedade Items de uma galeria depois de a declarar segura para a IU. Referencie o nome do origem de dados e o nome do procedimento armazenado seguido de "ResultSets". Pode aceder a vários resultados referenciando o conjunto de tabelas devolvidas, tais como Tabela 1, Tabela 2, etc.

Por exemplo, o seu acesso a um procedimento armazenado fora de uma origem de dados chamada 'Paruntimedb' com um procedimento armazenado chamado 'dbo.spo_show_all_library_books()' terá o seguinte aspeto.

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Isto preenche a galeria com registos. No entanto, os procedimentos armazenados são uma adição de comportamentos de ação ao modelo tabular. Refresh() só funciona com fontes de dados tabulares e não pode ser usado com procedimentos armazenados. Em seguida, precisa de atualizar a galeria quando um registo é criado, atualizado ou eliminado. Quando você usa um Submit() em um formulário para uma origem de dados tabular, ele efetivamente chama Refresh() sob as capas e atualiza a galeria.

Para contornar esta limitação, utilize uma variável na propriedade OnVisible para o ecrã e defina o procedimento armazenado para a variável.

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

Em seguida, defina a propriedade "Items" da galeria para o nome da variável.

SP_Books

Em seguida, depois de criar, atualizar ou eliminar um registo com uma chamada para o procedimento armazenado, defina novamente a variável. Isto atualiza a galeria.

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

Problemas conhecidos

As origens de dados SQL já não adicionam um prefixo [dbo] ao nome origem de dados

O prefixo [dbo] não tem qualquer finalidade prática no Power Apps pois os nomes de origens de dados são automaticamente desambiguados. As origens de dados existentes não são afetadas por esta alteração, mas quaisquer origens de dados SQL adicionadas recentemente não incluem o prefixo.

Se precisar de atualizar um grande número de fórmulas numa das suas aplicações, o Utilitário Compactar e Descompactar Ficheiro de Origem do Power Apps pode ser utilizado para fazer uma pesquisa e substituição globais.

Nota

A partir da versão 3.21054, atualizaremos automaticamente as referências de nomes legados quebrados ao novo nome da origem de dados depois de lermos a origem de dados.

Próximos passos

Nota

Pode indicar-nos as suas preferências no que se refere ao idioma da documentação? Responda a um breve inquérito. (tenha em atenção que o inquérito está em inglês)

O inquérito irá demorar cerca de sete minutos. Não são recolhidos dados pessoais (declaração de privacidade).