/// <summary>
        /// Raises an event requesting database authorization. If authorization
        /// succeeds, the database connection is recreated so the original
        /// operation can be retried.
        /// </summary>
        /// <param name="error">The original error that caused the authorization
        /// request.
        /// </param>
        /// <exception cref="DatabaseException">Thrown if the reauthorization
        /// attempt fails.
        /// </exception>
        /// <revision revisor="dev22" date="03/08/2010" version="1.1.7.15">
        /// Member added. (work for US577).
        /// </revision>
        private void Reauthorize(SqlException error)
        {
            var eventData =
                new AuthorizationEventArgs(this.dataServiceDefinition);

            if (this.AuthorizationRequired != null)
            {
                try
                {
                    this.AuthorizationRequired(this, eventData);
                }
                catch (Exception ex)
                {
                    throw new DatabaseException(
                              String.Format(
                                  "{0} {1}",
                                  Properties.Resources.ErrorStartMessage,
                                  Properties.Resources.ReauthorizationErrorMessage),
                              ex);
                }
            }

            if (eventData.New == null)
            {
                throw error.ToDBError(
                          String.Format(
                              "{0} {1}",
                              Properties.Resources.ErrorStartMessage,
                              Properties.Resources.MissingAuthorizationHandlerMessage));
            }

            this.dataServiceDefinition.Username       = eventData.New.Username;
            this.dataServiceDefinition.SecureUsername = eventData.New.Username;

            this.dataServiceDefinition.Password       = eventData.New.Password;
            this.dataServiceDefinition.SecurePassword = eventData.New.Password;

            this.CreateDatabase(this.dataServiceDefinition);
        }