code: def process_msg(self, marker):
          
          self.log_response_message('got ERROR/INFO message')
          r = self._reader
          r.get_smallint()  # size
          msg = {'marker': marker, 'msgno': r.get_int(), 'state': r.get_byte(), 'severity': r.get_byte(),
                 'sql_state': None}
          if marker == tds_base.TDS_INFO_TOKEN:
              msg['priv_msg_type'] = 0
          elif marker == tds_base.TDS_ERROR_TOKEN:
              msg['priv_msg_type'] = 1
          else:
              logger.error('tds_process_msg() called with unknown marker "{0}"'.format(marker))
          msg['message'] = r.read_ucs2(r.get_smallint())
          # server name
          msg['server'] = r.read_ucs2(r.get_byte())
          # stored proc name if available
          msg['proc_name'] = r.read_ucs2(r.get_byte())
          msg['line_number'] = r.get_int() if tds_base.IS_TDS72_PLUS(self) else r.get_smallint()
          # in case extended error data is sent, we just try to discard it
  
          # special case
          self.messages.append(msg)
docs: Reads and processes ERROR/INFO streams
  
          Stream formats:
  
          - ERROR: http://msdn.microsoft.com/en-us/library/dd304156.aspx
          - INFO: http://msdn.microsoft.com/en-us/library/dd303398.aspx
  
          :param marker: TDS_ERROR_TOKEN or TDS_INFO_TOKEN