Compartilhar via


Visão geral da conexão com o SQL Server pelo Power Apps

Há diferentes maneiras de se conectar aos dados no SQL Server em seu aplicativo, usando fórmulas do Power Fx. Você pode acessar dados diretamente ou usar uma exibição ou procedimentos armazenados para criar, atualizar ou excluir dados em seu aplicativo.

Pré-requisitos

Para acessar dados diretamente, você pode criar um aplicativo Iniciar com dados para seus dados do SQL Server. Esse método permite que você obtenha um aplicativo básico e funcional que pode modificar com exibições e procedimentos armazenados.

  1. Entre no Power Apps e vá até a página Aplicativos.

  2. Selecione Novo aplicativo>Começar com dados.

    Captura de tela que mostra como criar um aplicativo começando com dados no menu Novo aplicativo.

  3. Na página Iniciar com dados, escolha Conectar dados externos.

  4. Em Escolher um conjunto de dados para iniciar, selecione De SQL.

    Se você tiver uma conexão existente com o SQL Server, ela será carregada.

    Observação

    Se ainda não tiver uma conexão do SQL Server, você precisará criar uma.

  5. Selecione sua conexão SQL.

  6. Insira o nome do Servidor e o Nome do banco de dados e escolha Conectar. Escolha uma tabela na lista de tabelas exibidas.

    Captura de tela que mostra a página Criar um aplicativo onde você pode escolher uma conexão SQL Server, incluindo uma tabela.

    Observação

    Somente uma conexão é exibida por vez. Para usar uma conexão diferente, selecione o menu da barra de navegação ... em sua conexão SQL e, em seguida, encontre uma nova ou crie uma nova conexão SQL.

  7. Selecione Criar aplicativo.

Acessar dados

Depois que seu aplicativo estiver conectado ao SQL Server, você poderá acessar dados: Acessar dados no SQL Server.

Exibir resultados

Para exibir os resultados de suas consultas SQL, consulte: Exibir resultados no SQL Server.

Mapeamento de tipo de dados do Power Apps

SQL Server Power Apps
bigint, decimal, int, money, numeric, , smallint, smallmoney, , tinyint, float, real Número
char, nchar, varchar, nvarchar, text, , ntext Texto
bit booleano
date, datetime, datetime2, smalldatetime, datetimeoffset, , time DateTime
uniqueidentifier Guid

Observação

Se um tipo de dados do SQL Server não aparecer na tabela anterior, esse tipo de dados não terá suporte. Tipos de dados sem suporte incluem os seguintes exemplos: binary(), , varbinary(), image, cursor, rowversion, hierarchyid, sql_variant xml, Tipos de Geometria Espacial, Tipos de Geografia Espacial e tabela. Além disso, não há suporte para 'tinyint' e 'smallint' como chaves primárias.

Funções e operações do Power Apps delegadas ao SQL Server

O Power Apps pode delegar operações de consulta do Power Fx (por exemplo, Filtro) à fonte de dados de back-end para processamento. A delegação permite que o serviço de dados de back-end (por exemplo, SQL Server) faça o trabalho de filtragem para que apenas alguns registros sejam transferidos para seu dispositivo.

Esta tabela mostra quais operações são delegadas ao SQL Server por tipo de dados. Expressões unidas Andcom , Ore Not são delegadas.

Operação ou função Número Texto booleano DateTime Guid
*, +, -, / Yes - - Não -
<, <=, , >>= Yes Não Não Yes -
=, <> Yes Yes Yes Yes Yes
Average Yes - - - -
EndsWith - Sim [1] - - -
Filter Yes Yes Yes Sim [2] Yes
In (subcadeia de caracteres) - Sim [3] - - -
IsBlank [4] Não Não Não Não Não
Len (comprimento) - Sim [5] - - -
Lookup Yes Yes Yes Yes Yes
Max Yes - - Não -
Min Yes - - Não -
Search Não Yes Não Não -
Sort Yes Yes Yes Yes -
SortByColumns Yes Yes Yes Yes -
StartsWith - Sim [6] - - -
Sum Yes - - - -
UpdateIf, RemoveIf [7] Yes Yes Yes Yes Yes

Anotações

  1. Com suporte para (EndsWith(\<column>, "string value")) , mas não para (EndsWith("string value", \<column>)). Se uma coluna char(10) tiver um valor de "hello", EndsWith(\<column>, "llo") retornará false, por design. Uma coluna char(10) tem 10 caracteres.

  2. Os filtros de data direta não funcionam para o SQL Server com um Gateway de Dados local. No entanto, você pode criar uma coluna calculada que funcione. Por exemplo, você pode criar:
    ALTER TABLE myTable ADD DateAsInt AS (YEAR([date]) * 10000 + MONTH([date]) * 100 + DAY([date]))
    E, em seguida, filtre na coluna de número calculado.

  3. Com suporte para ("string value" in \<column>), mas não para (\<column> in "string value").

  4. Uma expressão como Filter('[dbo].[MyOrders]', !IsBlank(CustomerId)) não delega para o servidor. No entanto, você pode usar uma expressão como Filter('[dbo].[MyOrders]', CustomerId <> Blank()), que delega para o servidor e é fechada semanticamente. A diferença é que a segunda expressão não tratará a cadeia de caracteres vazia ("") como vazia. Embora as expressões não sejam equivalentes, elas podem funcionar para seus propósitos. Você não pode usar esse método para o tipo de dados Guid.

  5. O Power Apps delega a Len função, mas o comportamento pode não funcionar como você espera. No SQL Server, uma coluna char(10) com o valor "hello" sempre tem um comprimento de 10. No entanto, o Power Apps trata essa cadeia de caracteres como tendo um comprimento de 5, o que pode causar discrepâncias e confusão. Não use char/nchar no SQL Server, mas use varchar/nvarchar em vez disso.

  6. Com suporte para (StartsWith(\<column>, "string value")), mas não para (StartsWith("string value", \<column>))

  7. UpdateIf e RemoveIf funcionam localmente, mas simulam a delegação para um limite de 500/2000 registros. Eles sucessivamente derrubam registros além do limite de registros de não delegação 500/2000. Os registros que atendem à condição If são coletados. Geralmente, um máximo de 500/2000 registros são coletados separadamente e, em seguida, alterados por execução. No entanto, mais registros poderão ser atualizados se o cache de dados local existente for grande, pois a função poderá ter acesso a mais registros para avaliação.