The following code snippet shows how to code for a failover:
/* Declare required variables */
...
/* Open Database connection */
...
/* Perform a transaction */
...
/*Check HRESULT and dwMinor in ERRORINFO, handle failover */
if (FAILED(hr))
{
IErrorInfo* pIErrorInfo;
GetErrorInfo(0, &pIErrorInfo);
IErrorRecords * pIErrorRecords;
HRESULT hr1 = pIErrorInfo->QueryInterface(IID_IErrorRecords,
(void **)&pIErrorRecords);
if (SUCCEEDED(hr1))
{
ERRORINFO errorInfo;
pIErrorRecords->GetBasicErrorInfo(0, &errorInfo);
pIErrorRecords->Release();
if (errorInfo.dwMinor == 30130)
{
//successful failover,
//retry the transaction
}
}
}