Configuring SQL Server Compact Edition Server Agent Registry

This topic describes three registry settings for SQL Server Compact Edition Server Agent (HKLM\Software\Microsoft\MSSQLSERVERCE\Transport) that you can modify to enforce security restrictions as well as improve performance while using Microsoft Internet Information Services (IIS) to perform synchronizations between Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) and SQL Server.

USAGE

The USAGE registry key can restrict the type of synchronization that can occur because of the SQL Server Compact Edition Server Agent running on the IIS server. The default value is 0, which allows both RDA and merge replication to be processed. A value of 1 will restrict synchronization to be used for merge replication only. A value of 2 will restrict synchronization to be used for RDA only.

MAX_THREADS_PER_POOL

The MAX_THREADS_PER_POOL registry key is used to define the maximum number of threads for each of three pools that are used by the SQL Server Compact Edition Server Agent. The default value is 20 threads, but can be set as low as 1 and as high as 1000. The threads are dynamically allocated and not allocated at startup. Using the default value of 20, there could be a total of 60 threads allocated on the IIS server. The thread pools:

  • process .IN files.
  • process .OUT files.
  • call the SQL Server Reconciler.

Increasing the thread count does not guarantee faster performance and should be tested before implementing as an increased number of threads could consume a significant amount of CPU resources. Thread counts should only be increased if the CPU is a high performance CPU and there are a substantial amount of clients trying to synchronize at the same time.

MAX_PENDING_REQUEST

The MAX_PENDING_REQUEST registry key has a default value of 500 with a minimum value of 10 and a maximum value of 10000. If there are no available threads (MAX_THREADS_PER_POOL), then the requests will queue up in a request pool. The utilization of this feature is dependant on the availability of threads to process all the requests. Under normal processing scenarios, this will not be utilized.