Skip to content

Commit 3d72777

Browse files
authored
Merge pull request #9034 from MicrosoftDocs/20230105-updates-from-the-trouble-shooting-page
updates from trouble shooting pages
2 parents 2999602 + 8b7c86c commit 3d72777

File tree

4 files changed

+38
-136
lines changed

4 files changed

+38
-136
lines changed

powerapps-docs/maker/canvas-apps/connections-list.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.topic: overview
66
ms.custom: canvas
77
ms.collection: get-started
88
ms.reviewer: mkaur
9-
ms.date: 01/02/2023
9+
ms.date: 01/05/2023
1010
ms.subservice: canvas-maker
1111
ms.author: lanced
1212
search.audienceType:
@@ -103,19 +103,18 @@ This is a secure type of connection. For example, SharePoint uses this type of
103103
104104
### Open-standard authorization (OAuth)
105105

106-
This type of connection is also secure. For example Twitter uses this type of authentication. When you connect, you must supply your user name and password. As an author you can create and work with the data source with your credentials. When you publish your application and your application user logs in, they must also supply their credentials. Therefore this type of connection is secure as your users must use their own credentials to access the data source service.
106+
This type of connection is also secure. For example Twitter uses this type of authentication. When you connect, **you must supply your user name and password.** As an author you can create and work with the data source with your credentials. When you publish your application and your application user logs in, they must also supply their credentials. Therefore this type of connection is secure as your users must use their own credentials to access the data source service.
107107

108-
### SQL User name and password authentication
108+
### Shared connections / Secure Implicit Connections
109109

110-
This type of connection isn't secure because it doesn't rely on end-user authentication. **It should only be used in cases where you can safely assume that everyone who has access to this connection can see and use all of the data to which the connection provides access.** You can't reliably lock down portions of the data accessible within the connection. For instance, if the connection allows access to a single table, you can't rely on a userID to filter and only show data for that specific user within that table. For reliable security, use a more secure connection such as [Microsoft Entra Integrated](connections-list.md#microsoft-entra-id).
110+
In a shared connection the user name and password for the connection is supplied by the Power Apps author at the time the data source is created in the application. The connection authentication to the data source is then **Implicitly Shared** with end users. Once the application is published, the connection is also published and available to your users.
111111

112-
In SQL Server, this type of connection is called **SQL Server Authentication**. Many other database data sources provide a similar capability. When you publish your application, your users don't need to supply a unique user name and password. They're using the user name and password you supply when you author the application. The connection authentication to the data source is **Implicitly Shared** with your users. Once the application is published, the connection is also published and available to your users. Your end users can also create applications using any connection using SQL Server authentication that is shared with them. Your users can't see the user name or password, but the connection will be available to them. **There are valid scenarios for this type of connection. For instance if you have a read-only database that is available to everyone in the company. Reference data scenarios (for example, a corporate calendar) can be useful for this kind of connection.** More information: [Use Microsoft SQL Server securely with Power Apps](connections/sql-server-security.md)
112+
Prior to January 2024, your end users could take the connection that is shared with them and create separate new applications. Your users can't see the user name or password, but the connection would be available to them. However, **after January 2024, all newly created shared connections are secured.** Note that old apps must be republished to be secure. This means that the connection is no longer shared with end users. The published Power App talks to a connection proxy. The connection proxy will only talk to the specific Power App for which it is linked. The connection proxy limits the actions that are sent to the connections to the ones in the Power App **{Get, Put/Patch, Delete}** for a given data source. If you have an app using the connections published prior to January 2024, you should republish your application and unshare any connections with end users that should not have them.
113113

114-
### Secure Implicit Connections
114+
In SQL Server, an example this type of connection is **SQL Server Authentication**. Many other database data sources provide a similar capability. When you publish your application, your users don't need to supply a unique user name and password.
115115

116-
Secure implicit shared connections replace the previous implicitly shared connections. Power Apps implicitly shared connections are ones that use a fixed credential such as a SQL Server connection string rather than the end user's specific credentials such as Microsoft Entra ID. With this feature, connections are not directly shared with Power Apps application users. Instead, a proxy connection object that only grants access to the underlying resource, such as a specific SQL server table, is shared. End user authors can't create new applications with either the connection or the proxy connection. This feature also limits the end user to actions such as **get**, **put/patch**, and **delete** that are defined in the app. The result is that end users who are also authors can't create new applications with either the connection or the proxy connection object.
116+
#### Notification to update your apps (secure implicit connections)
117117

118-
#### Notification to update your apps
119118
If you have applications that may be upgraded to use this feature then you'll see a message on the Apps page. It indicates the number of apps that need your attention.
120119

121120
> [!div class="mx-imgBorder"]

powerapps-docs/maker/canvas-apps/connections/connection-azure-sqldatabase.md

Lines changed: 7 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: lancedMicrosoft
55

66
ms.topic: reference
77
ms.custom: canvas
8-
ms.date: 04/28/2021
8+
ms.date: 01/05/2024
99
ms.subservice: canvas-maker
1010
ms.author: lanced
1111
ms.reviewer: mkaur
@@ -50,138 +50,19 @@ Depending upon whether you have the [new look](../intro-maker-portal.md?tabs=hom
5050
1. Select your SQL connection and then select a table. Note, that only one connection is shown at a time. To select a different connection, select on the **...** button to switch connection or create a new SQL connection.
5151
1. When you're done, select **Create app**.
5252

53+
## Known issues
5354

55+
### SQL data sources no longer adds a "[dbo]" prefix to the data source name
5456

57+
The "[dbo]" prefix does not serve any practical purpose in Power Apps as datasource names are automatically disambiguated. Existing data sources won't be affected, but any newly added SQL data sources won't include the prefix. If you need to update a large number of formulas in one of your apps, the [Power Apps Source File Pack and Unpack Utility](https://powerapps.microsoft.com/blog/source-code-files-for-canvas-apps/) can be used to do a global search-and-replace.
58+
59+
Starting in version 3.21054, we'll automatically update broken legacy name references to the new data source name after reading the data source.
5560

5661
## Next steps
62+
5763
* Learn how to [show data from a data source](../add-gallery.md).
5864
* Learn how to [view details and create or update records](../add-form.md).
5965
* See other types of [data sources](../connections-list.md) to which you can connect.
6066
* [Understand tables and records](../working-with-tables.md) with tabular data sources.
6167

62-
<!--NotAvailableYet
63-
## View the available functions ##
64-
This connection includes the following functions:
65-
66-
| Function Name | Description |
67-
| --- | --- |
68-
|[GetItems](connection-azure-sqldatabase.md#getitems) | Retrieves rows from a SQL table |
69-
|[PostItem](connection-azure-sqldatabase.md#postitem) | Inserts a new row into a SQL table |
70-
|[GetItem](connection-azure-sqldatabase.md#getitem) | Retrieves a single row from a SQL table |
71-
|[DeleteItem](connection-azure-sqldatabase.md#deleteitem) | Deletes a row from a SQL table |
72-
|[PatchItem](connection-azure-sqldatabase.md#patchitem) | Updates an existing row in a SQL table |
73-
|[GetTables](connection-azure-sqldatabase.md#gettables) | Retrieves tables from a SQL database |
74-
75-
### GetItems
76-
Get rows: Retrieves rows from a SQL table
77-
78-
#### Input properties
79-
80-
| Name| Data Type|Required|Description|
81-
| ---|---|---|---|
82-
|table|string|yes|Name of SQL table|
83-
|$skip|integer|no|Number of entries to skip (default = 0)|
84-
|$top|integer|no|Maximum number of entries to retrieve (default = 256)|
85-
|$filter|string|no|An ODATA filter query to restrict the number of entries|
86-
|$orderby|string|no|An ODATA orderBy query for specifying the order of entries|
87-
88-
### PostItem
89-
Insert row: Inserts a new row into a SQL table
90-
91-
#### Input properties
92-
93-
| Name| Data Type|Required|Description|
94-
| ---|---|---|---|
95-
|table|string|yes|Name of SQL table|
96-
|item| |yes|Row to insert into the specified table in SQL|
97-
98-
#### Output properties
99-
100-
| Property Name | Data Type | Required | Description |
101-
|---|---|---|---|
102-
|value|array|No | |
103-
104-
105-
### GetItem
106-
Get row: Retrieves a single row from a SQL table
107-
108-
#### Input properties
109-
110-
| Name| Data Type|Required|Description|
111-
| ---|---|---|---|
112-
|table|string|yes|Name of SQL table|
113-
|id|string|yes|Unique identifier of the row to retrieve|
114-
115-
#### Output properties
116-
117-
| Property Name | Data Type | Required | Description |
118-
|---|---|---|---|
119-
|ItemInternalId|string|No | |
120-
121-
122-
### DeleteItem
123-
Delete row: Deletes a row from a SQL table
124-
125-
#### Input properties
126-
127-
| Name| Data Type|Required|Description|
128-
| ---|---|---|---|
129-
|table|string|yes|Name of SQL table|
130-
|id|string|yes|Unique identifier of the row to delete|
131-
132-
#### Output properties
133-
None.
134-
135-
### PatchItem
136-
Update row: Updates an existing row in a SQL table
137-
138-
#### Input properties
139-
140-
| Name| Data Type|Required|Description|
141-
| ---|---|---|---|
142-
|table|string|yes|Name of SQL table|
143-
|id|string|yes|Unique identifier of the row to update|
144-
|item| |yes|Row with updated values|
145-
146-
#### Output properties
147-
148-
| Property Name | Data Type | Required | Description |
149-
|---|---|---|---|
150-
|ItemInternalId|string|No | &nbsp; |
151-
152-
153-
### GetTables
154-
Get tables: Retrieves tables from a SQL database
155-
156-
#### Input properties
157-
None.
158-
159-
#### Output properties
160-
161-
| Property Name | Data Type | Required | Description |
162-
|---|---|---|---|
163-
|value|array|No | Can output the Name and DisplayName properties |
164-
165-
### ExecuteProcedure
166-
Execute stored procedure: Executes a stored procedure in SQL
167-
168-
#### Input properties
169-
170-
| Name| Data Type|Required|Description|
171-
| ---|---|---|---|
172-
|procedure|string|yes|Procedure name|
173-
|parameters| |yes|Input parameters|
174-
175-
#### Output properties
176-
Result of the stored procedure execution.
177-
178-
| Property Name | Data Type | Required | Description |
179-
|---|---|---|---|
180-
|OutputParameters|object|No | Output parameter values |
181-
|ReturnCode|integer|No | Return code of a procedure |
182-
|ResultSets|object|No | Result sets|
183-
184-
-->
185-
186-
18768
[!INCLUDE[footer-include](../../../includes/footer-banner.md)]

powerapps-docs/maker/canvas-apps/connections/connection-sharepoint-online.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: NickWaggoner
55
ms.topic: reference
66
ms.custom: canvas
77
ms.reviewer: mkaur
8-
ms.date: 05/11/2021
8+
ms.date: 01/05/2024
99
ms.subservice: canvas-maker
1010
ms.author: niwaggon
1111
search.audienceType:
@@ -161,6 +161,9 @@ When you find the file that you want, select it to show it in the **Video**, **I
161161
162162
## Known issues
163163

164+
**Sharing a Canvas apps using SharePoint connector**
165+
Power Apps won't show canvas apps connecting to SharePoint that are only shared with **Everyone**, unless you're the creator of the app OR you're explicitly shared the app with (as a user, or as a co-owner) through a group membership, or directly through the user assignment. To play such apps, use the direct link to the app.
166+
164167
### Lists
165168

166169
Power Apps can read column names that contain spaces, but the spaces are replaced with the hexadecimal escape code **"\_x0020\_"**. For example, **"Column Name"** in SharePoint will appear as **"Column_x0020_Name"** in Power Apps when displayed in the data layout or used in a formula.

powerapps-docs/maker/canvas-apps/fast-app-page-load.md

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Optimizing app and page loading for peak performance in Power Apps.
44
author: lancedMicrosoft
55
ms.subservice: canvas-developer
66
ms.topic: article
7-
ms.date: 12/01/2023
7+
ms.date: 01/05/2024
88
ms.author: lanced
99
ms.reviewer: mkaur
1010
search.audienceType:
@@ -37,6 +37,25 @@ This issue is a slight variation of the previous section. Sometimes authors also
3737
### Avoid using SaveData() and LoadData() as a full offline scenario
3838
Some authors use ClearCollect() and then SaveData() to store data for general purpose offline use. You can use SaveData() to save the collection to your device, and LoadData() to load it when you're offline. However, this approach isn't recommended for instances where there's a large amount of data or if the data is complex. It makes your app slower because it has to wait for ClearCollect() to finish before it can show the data. You should only use SaveData() and LoadData() for small and simple data scenarios such as preferences and short lists. A better way to work with large amounts of offline data is to use the Power Apps offline feature that works with Dataverse. This feature can handle larger and more complex data more efficiently.
3939

40+
### Use Explicit column selection
41+
Explicit column selection is on by default. However, some authors turn this feature off. The issue is that with Explicit column selection (ECS) turned on, columns are sometimes not retrieved from the data source if the data is first retrieved into a collection. As some tables may have many columns, ECS automatically computes which columns are necessary to retrieve based on their usage in controls (for example, galleries and forms.) As some tables can many columns, reducing the size of the download can speed up performance. Some tables can have a hundred columns or more. If your app only needs to use 10 columns, and you bring down all the columns from a 100 column table, you are bringing down ten times as much data as you actually need.
42+
43+
Most issues arise when bringing data into collections. If a column is explicitly referenced in a control then ECS works well. And, ECS generally does work for collections. However, the column lineage is occasionally lost when the data moves through collections and variables. And, and so Power Apps may lose track of the column it should retrieve. To resolve this issue, you can force Power Apps to "remember" the column by using the `ShowColumns` function. For example:
44+
45+
```powerapps-dot
46+
ClearCollect(
47+
MyColTable,
48+
ShowColumns(Filter(BankAccounts, AcountNo = 32),
49+
"Col1",
50+
"Col2",
51+
"Col3")
52+
);
53+
```
54+
55+
Where `Col1`, `Col2`, and `Col3` are columns you expect to be retrieved from the data source (for example, the `Account` data source).
56+
57+
Alternatively, you can add a hidden control to your form that references the column. This forces Power Apps to "remember" the column.
58+
4059
## Fast calculations
4160
Fast (or efficient) calculations are a performance goal in its own right. For more information, see [Fast (efficient) calculations](efficient-calculations.md). However there are some common anti-patterns that can affect app load as well and so we discuss them here. Below is a list of optimizations you should consider that might affect app launch or page navigation.
4261

0 commit comments

Comments
 (0)