Description:
When installing the offline database, the installation fails with a timeout. Looking into the RetailDatabaseUtility.log, it comes with these messages.
atabaseUtility, 4, 08/08/2012 07:24:48:833, An error occurred during provisioning. Removing all provisioning artifacts. Error Message: 'Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.' INFO , RetailDatabaseUtility, 4, 08/08/2012 07:24:48:848, ----- Deprovisioning sync objects on Database 'STORE' ----- INFO , RetailDatabaseUtility, 4, 08/08/2012 07:24:48:879, Dropping Table '[scope_parameters]' INFO , RetailDatabaseUtility, 4, 08/08/2012 07:24:48:911, Dropping Table '[scope_info]' ERROR , RetailDatabaseUtility, 4, 08/08/2012 07:25:18:973, Caught exception: System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.Synchronization.Data.SqlServer.SqlManagementUtils.DropTableIfExists(SqlConnection connection, SqlTransaction transaction, Int32 commandTimeout, String quotedTableName) at Microsoft.Synchronization.Data.SqlServer.SqlSyncScopeDeprovisioning.DeprovisionStore() RetailDatabaseUtility.exe Error: 0 : DBUtilityCore<ProvisionDatabasesForSynchronizationAsync>b__7: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. |
Cause:
The database is a SQL 2008 Express Edition and the customer also installed the store database on the same machine. Due to multiple connection to the Express version, the DBUtility gets an timeout on the connection.
Solution:
Since it makes no sense to install both store database and Offline database on the same machine. The recommendation is
Small stores with 1-2 POS
Install SQL Express 2008/R2 edition on all machines. If there is example 2 pos, let 1 run the store database and the other an offline database
If there is only 1 POS, only install the store database
Medium - large stores > 2 pos
SQL 2008/R2 standard edition as store database (clustering could be considered for large stores)
On all POS install SQL2008/R2 Express edition and then add the Offline database
Author: Kim Truelsen
Date: 9/8-2012