How to increase timeout values

In rare cases, some operations in SQLBackupAndFTP don’t fit standard timeouts and fail. For this reason, in version 12.3.3 we added a possibility to define custom timeout values by creating C:\ProgramData\Pranas.NET\SQLBackupAndFTP\Service\Timeouts.xml with the following contents:

<?xml version="1.0" encoding="utf-8"?>

<!-- Everything is in seconds -->
<TimeoutConfiguration>
	<!-- Timeout for SQLite database operations -->
	<SQLiteTimeout>30</SQLiteTimeout>

	<!-- How often the upload/download progress in the log window is updated -->
	<UploadSpeedUpdateInterval>10</UploadSpeedUpdateInterval>

	<!-- Timeouts for Microsoft SQL Server (local) operations -->
	<LocalSQL>
		<!-- Timeout for short operations like: get database list, get backup file information, get a database info... -->
		<Short>180</Short>

		<!-- Timeout for long operations like backup or restore a database -->
		<Long>43200</Long>
	</LocalSQL>

	<!-- Timeouts for local named pipe connection between the Windows service and the application -->
	<NetPipe>
		<!-- Connection open timeout -->
		<OpenTimeout>180</OpenTimeout>

		<!-- Write timeout -->
		<SendTimeout>180</SendTimeout>

		<!-- Connection close timeout -->
		<CloseTimeout>180</CloseTimeout>
	</NetPipe>
</TimeoutConfiguration>

Basically, everything should be self-explaining but I would add several points:

  • All values in this sample are set to default timeouts. This means that you don’t need to create this file unless you need to change some of these values
  • SQLiteTimeout specifies timeouts for the SQLite database where SQLBackupAndFTP keeps configuration settings and logs
  • UploadSpeedUpdateInterval is not a timeout but you can use this setting to define how ofter download/upload progress is updated in the log window
  • NetPipe sections controls communication between the UI application and the Windows service that does all the job. Sometimes on slow or highly loaded machines, these operations don’t fit the default 3-minute timeout and you may get something like:
    ERROR: Destination error: This request operation sent to net.pipe://localhost/pranasnet/net/sbf/Trace/Net.pranasnet.sbf.Trace did not receive a reply within the configured timeout (00:03:00). The time allotted to this operation may have been a portion of a longer timeout. This may be because the service is still processing the operation or because the service was unable to send a reply message. Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client.
  • LocalSQL sections set up SQL Server timeouts. Sometimes if backup takes a long time (e.g. more than twelve hrs) it may fail and you get the following message:Failed to backup "MY_DATABASE" database with "Full" backup type: One or more errors occurred. > Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The backup or restore was aborted. Processed 24672 pages for database 'MY_DATABASE', file 'MY_DATABASE' on file 1. 10 percent processed. 20 percent processed. 30 percent processed. 40 percent processed. 50 percent processed. 60 percent processed. 70 percent processed. 80 percent processed. > The wait operation timed out > Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The backup or restore was aborted. Processed 24672 pages for database 'MY_DATABASE', file 'MY_DATABASE' on file 1. 10 percent processed. 20 percent processed. 30 percent processed. 40 percent processed. 50 percent processed. 60 percent processed. 70 percent processed. 80 percent processed. > The wait operation timed out.