Conectar ao SQL Server a partir do Power Apps

Você pode se conectar ao SQL Server em um banco de dados local ou do Azure.

Observação

Fontes de dados SQL recém-criadas não são mais prefixadas com [dbo] como eram nas versões anteriores do Power Apps.

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

Gerar um aplicativo automaticamente

Dependendo da interface do Power Apps que você estiver usando, faça referência à nova aparência ou à aparência clássica para criar um aplicativo.

  1. Entre no Power Apps.

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

    • Para criar um aplicativo de galeria de página única com um layout dinâmico, escolha:
      • Começar com os dados > Selecionar dados externos > Do SQL.
      • Começar com um design de página > Galeria conectada a dados externos > Do SQL.
    • Para criar um aplicativo móvel de três telas, selecione Começar com um modelo de aplicativo > Do SQL.
  3. Selecione sua conexão SQL e, em seguida, selecione uma tabela. Para escolher uma conexão diferente, selecione o menu de estouro ... para alternar sua conexão ou criar uma nova conexão SQL.

    Observação

    Somente uma conexão é exibida por vez.

  4. Quando terminar, selecione Criar aplicativo.

Chamar procedimentos armazenados diretamente no Power Fx (versão preliminar)

Agora você pode chamar diretamente procedimentos armazenados do SQL Server Power Fx. Por padrão, esta nova chave deve estar ativada. Caso contrário, você pode ativá-lo.

  1. Vá para Configurações > Atualizações > Novo.
  2. Procure procedimentos armazenados.
  3. Defina a alternância como Ativada para Procedimentos armazenados do SQL Server.
  4. Salve e reabra o aplicativo.

Captura de tela que mostra a alternância de procedimentos armazenados do SQL Server definida como Ativada.

Ao adicionar uma conexão do SQL Server ao aplicativo, agora você pode adicionar tabelas e exibições ou procedimentos armazenados. Esse recurso também funciona com conexões implícitas seguras.

Captura de tela que mostra listas de tabelas, exibições e procedimentos armazenados disponíveis para serem adicionados ao seu aplicativo.

Se você não vir imediatamente seu procedimento armazenado, será mais rápido procurá-lo.

Depois de selecionar um procedimento armazenado, um nó filho será exibido e você poderá designar o procedimento armazenado como Seguro para uso em galerias e tabelas. Se marcar essa opção, você poderá atribuir o procedimento armazenado como uma Items propriedade para galerias para as tabelas usarem em seu aplicativo.

Habilite essa opção somente se:

  1. Não houver efeitos colaterais em chamar esse procedimento sob demanda, várias vezes, sempre que o Power Apps atualizar o controle. Quando usado com uma propriedade Items de uma galeria ou tabela, o Power Apps chama o procedimento armazenado sempre que o sistema determinar que uma atualização é necessária. Não for possível controlar quando o procedimento armazenado é chamado.
  2. A quantidade de dados retornada no procedimento armazenado for modesta. As chamadas de ação, como procedimentos armazenados, não tiverem um limite no número de linhas recuperadas. Elas não são paginadas automaticamente em incrementos de 100 registros, como fontes de dados tabulares, como tabelas ou exibições. Portanto, se o procedimento armazenado retornar muitos dados (muitos milhares de registros), seu aplicativo poderá ficar lento ou travar. Por questões 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 deverá sempre retornar duas tabelas. Você pode trabalhar com resultados digitados ou não. A estrutura dos resultados precisa 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 em Power Apps. Para obter mais informações, acesse Resultados não digitados.

Namespace SQL anexado ao nome do procedimento armazenado

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

Exemplo

Ao adicionar um procedimento armazenado, você pode ver mais de uma fonte de dados em seu projeto.

Captura de tela que mostra fontes de dados SQL.

Chamando um procedimento armazenado

Para usar um procedimento armazenado no Power Apps, primeiro prefixe o nome do procedimento armazenado com o nome do conector associado a ele 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, pois você os passa para seu procedimento armazenado, pois está lendo um valor de texto em Power Apps. Por exemplo, se você estiver atualizando um inteiro no SQL, será necessário converter o texto no campo usando 'Value()'.

Chamando procedimentos armazenados diretamente.

Acessando resultados

Um procedimento armazenado pode retornar um código, valores de parâmetros Out ou 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 return.

Parâmetros de saída

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

Observe que você deve usar o nome do parâmetro como ele aparece na carga JSON.

Conjuntos de resultados

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

Tabelas adicionais podem ser acessadas por meio de seus nomes (por exemplo, Tabela1, Tabela2, Tabela3, ...)

Resultados não digitados

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

Neste exemplo, primeiro colocamos os resultados em uma variável chamada "MyUntypedObject". Então, extraímos 'Tabela1' dessa variável e a colocamos em uma variável chamada 'tabela1'. Este etapa não é estritamente necessário. No entanto, é útil colocar todos os resultados em uma variável em um determinado momento e, então, extrair as partes necessárias. Em seguida, iteramos pela tabela1 e extraímos os elementos JSON em pares de valores nomeados. Certifique-se de corresponder os nomes com os nomes retornados na carga JSON. Para validar, abra um Power Apps monitor e observe a seção do corpo do nó de dados para 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)
        }
    )
);

Você pode acessar um procedimento armazenado para a propriedade Items de uma galeria depois de declará-la segura para a interface do usuário. Faça referência ao nome da fonte de dados e ao nome do procedimento armazenado seguido por 'ResultSets'. Você pode acessar vários resultados fazendo referência ao conjunto de tabelas retornadas, como Tabela 1, Tabela 2 etc.

Por exemplo, o acesso a um procedimento armazenado de uma fonte de dados chamada 'Paruntimedb' com um procedimento armazenado chamado 'dbo.spo_show_all_library_books()' terá a seguinte aparência:

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Isso preenche a galeria com registros. 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, você deverá atualizar a galeria quando um registro for criado, atualizado ou excluído. Quando você usa Submit() em um formulário para uma tabela fonte de dados, ele efetivamente chama Refresh() nos bastidores e atualiza a galeria.

Para contornar essa limitação, use uma variável na propriedade OnVisible para a tela e defina o procedimento armazenado para a variável.

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

Em seguida, defina a propriedade 'Itens' da galeria como o nome da variável.

SP_Books

Em seguida, depois de criar, atualizar ou excluir um registro com uma chamada para o procedimento armazenado, defina a variável novamente. Isso atualizará a galeria.

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

Problemas conhecidos

As fontes de dados SQL não adicionam mais um prefixo [dbo] ao nome da fonte de dados

O prefixo [dbo] não tem nenhuma finalidade prática no Power Apps, pois a desambiguação dos nomes das fontes de dados é feita automaticamente. As fontes de dados existentes não serão afetadas, mas as fontes de dados SQL adicionadas recentemente não incluirão o prefixo.

Se você precisar atualizar um grande número de fórmulas em um de seus aplicativos, o Pacote de arquivos de origem e utilitário de descompactação do Power Apps pode ser usado para fazer uma pesquisa e substituição global.

Observação

A partir da versão 3.21054, atualizaremos automaticamente as referências de nomes herdados quebrados para o novo nome de fonte de dados depois de ler a fonte de dados.

Próximas etapas

Observação

Você pode nos falar mais sobre suas preferências de idioma para documentação? Faça uma pesquisa rápida. (Observe que esta pesquisa está em inglês)

A pesquisa levará cerca de sete minutos. Nenhum dado pessoal é coletado (política de privacidade).