Introduction
In the first part of this article we covered implications of external system throttling thresholds for users of Business Connectivity Services (BCS), whether using Office 365® or on-premises installations of Microsoft SharePoint®. This is the second part of the article and describes the default threshold settings and how to change them when using on-premises installations of either Microsoft SharePoint® Foundation 2013 or Microsoft SharePoint® Server 2013. If you are using Office 365® you will not be able to change these thresholds.
This article is in six parts:
- Why this blog series
- Threshold Limit Errors
- Changing External System Throttling
- External Content Type Authorization Errors
- External System Authorization Errors
- Summary
External System Throttling
Each Business Data Connectivity (BDC) service application has throttling thresholds defined by throttling rules which consist of a throttle type and scope.
The throttle types are:
- Items. The number of items returned from the external systems, such as the number of authors.
- Size. The amount of data retrieved by the BCS Runtime from the external system in bytes.
- Connections. The number of open connections to the external system.
- Timeout. The time until an open connection is terminated, in milliseconds.
- Metadata Size. Used to restrict the size of the metadata returned by the external system, specified in bytes.
- Model Size. Used to restrict the size of the BDC model that can be imported into the BDC metadata store, specified in bytes.
- Max Number Of Models. Used to restrict the number of BDC models that can be imported into a BDC metadata store per BDC service application. For a partitioned BDC service application then this is per tenant.
- None. No throttle type specified.
Throttle scopes refer to type of connection that is used to contact the external system. Scopes includes Database, Web Service, WCF, OData and Custom. There is also a Global scope that includes all connector types, except for custom connectors. When a BDC service application is first created, the throttle rules do not include all combinations of throttle types and scopes. A throttle rule for the Global scope is used, when a throttle rule is not enabled for a throttle type for a specific scope.
For each throttling rule, not only do you have to specify the throttle type and scope, there are three properties defined, which are:
- Enforced. When this property is set to True, the throttling rule is enabled.
- Default. This property affects external lists and custom Web Parts. The first part of this article, provided examples of the error messages presented to the user based on this
- property. Custom Web Parts can override this value and therefore can present more data than external lists.
- Max. The limit used when custom Web Parts override the value in the Default property
The throttling rules that exist when a BDC service application is first created, whether in partition mode or non-partitioned mode, are displayed in the following table.
Scope | Throttle Type | Enforced | Default | Max |
Global | Connections | True | 200 | 500 |
Global | ModelSize | False | 10,000,000 | 50,000,000 |
Global | MaxNumberOfModels | False | 1000 | 2000 |
Database | Items | True | 2000 | 1,000,000 |
Database | Timeout | True | 180,000 | 600,000 |
WebService | Size | True | 3,000,000 | 150,000,000 |
WCF | Size | True | 3,000,000 | 150,000,000 |
WCF | Timeout | True | 180,000 | 600,000 |
WCF | MetadataSize | False | 3,000,000 | 150,000,000 |
OData | Size | True | 3,000,000 | 150,000,000 |
OData | Timeout | True | 180,000 | 600,000 |
OData | MetadataSize | False | 3,000,000 | 150,000,000 |
Modifying External System Throttling Thresholds
You can retrieve and amend the throttling rules by using the Business Data Catalog Windows PowerShell® cmdlets, as shown in the following examples. First you need the BDC service application proxy. Assuming there is only one BDC service application in your farm, which is true for most on-premises installations, then you can use the following Windows PowerShell command:
$bdcproxy = Get-SPServiceApplicationProxy | where {$_.TypeName –like “Business*”};
To display the throttling configuration for a BDC service application, type a command similar to the following one, on one line:
Get-SPBusinessDataCatalogThrottleConfig –ServiceApplication $bdcproxy ` –Scope Global –ThrottleType Connections;
The output from the command is as follows:
Scope : Global ThrottleType : Connections Enforced : True Default : 200 Max : 500
To disable a throttling rule, type the following command:
Get-SPBusinessDataCatalogThrottleConfig –ServiceApplication $bdcproxy ` –Scope Global –ThrottleType Connections | Set-SPBusinessDataCatalogThrottleConfig ` -Enforced:$False;
To modify a throttle rule, type the following command:
$dbrule = Get-SPBusinessDataCatalogThrottleConfig –ServiceApplication $bdcproxy ` –Scope Database –ThrottleType Items; $dbrule | Set-SPBusinessDataCatalogThrottleConfig –Maximum 2000000 –Default 5000;
Summary
This second part of the four and discussed the default external system throttling settings and how to modify them. By default the following throttling rules are defined.
- Global Scope. Throttle Types: Connections, ModelSize, and MaxNumberOfModels.
- Database Scope. Throttle Types: Items, and Timeout.
- WebService Scope. Throttle Type: Size.
- WCF Scope. Throttle Types: Size, Timeout, and MetadataSize.
- OData Scope. Throttle Types: Size, Timeout, and MetadataSize.