Redriving requests following a successful reconnection contains some restrictions.
- Deferred requests that read from a stream cannot be restarted. The Data Provider will return an exception to the application after reconnection has succeeded.
- A request that caused the Advanced SQL Engine to restart (killer request) will not be redriven.
- Applications that use impersonated single sign-on logons are not supported in the recoverable network protocol and correspondingly in redrive. The Data Provider does not store the identity from the calling thread, and therefore we cannot authenticate the impersonated user.
- The Advanced SQL Engine will not redrive requests from user defined functions or external stored procedures created with the External Data Access clause using the MODIFIES EXTERNAL DATA option. For more information on this limitation refer to the "SQL Data Definition Language Detailed Topics" manual.
- Requests that select a LOB in deferred mode may return a SQL Engine error "[Teradata Database] [5768] The Locator is invalid because it has been changed." in the following scenario:
- The application has set the TdConnectionStringBuilder.Recovery to "Redrive" before opening a connection.
- Redrive was disabled before the query was executed containing the LOB by TASM (Teradata Active System Management) or by disabling redrive by issuing a Data Definition Language query to set redrive off -
SET QUERY_BAND='redrive=off;' FOR SESSION
.
- TdConnectionStringBuilder.ReadAhead is enabled.
- A SQL Engine restart occurred while retrieving the next buffer in a read ahead operation.
Normally, in this scenario, the expected error is : "[Teradata Database] [2825] NO RECORD OF THE LAST REQUEST WAS FOUND AFTER DBC RESTART.", since Redrive was disabled. A SQL Engine restart occurring while Redrive is disabled (but RNP is still active) will not preserve the spool files and therefore the locator for the LOB was lost.