Help for Foxhound 5.0.5486a

Table of Contents     [RisingRoad]
search engine by freefind advanced

Foxhound 5 Table of Contents

What's New in Foxhound 5

Introduction and Setup

Windows Start Menu

Hallmarks of Foxhound

Requirements

Limitations

Foxhound Setup

Starting Foxhound

Customizing the Setup

Running Foxhound as a Service

Connecting to Target Databases

Backup and Restore

Controlling Growth

Safe Mode Startup

Starting Multiple Copies of Foxhound

Offline Foxhound Sampling Service (OFSS)

Environment Variables

Scripts Subfolder

End User License Agreement

Support and Consulting

How to CALL unload_samples()

1. The Foxhound Menu Page

2. The Display Schema Page

3. The Monitor Database Page

4. The Sample History Page

5. The Connection History Page

6. The Foxhound Options Page

7. The Monitor Options Page

8. Adhoc Queries

9. Administrator Authentication

About Foxhound

Messages


Foxhound 5 

What's New In Foxhound Version 5

New Features

Enhancements

Usability Improvements

Behavior Changes

Bug Fixes

EBF 1


New Feature: The Foxhound purge process is now fast enough to keep up with database growth.  Top

The Foxhound Purge has been completely rewritten to be faster and more aggressive in its approach to deleting old data.

New Feature: Connection Flags have been implemented to highlight connection-level performance issues.  Top

Connection Flags are a lightweight mechanism for highlighting traits and behaviors that may be worth looking at.

Flags are displayed in the connection sections of the Monitor, History and Connection History pages:

Flag #1 - Blocking others
Flag #2 - Blocked by other
Flag #3 - Long transaction
Flag #4 - Temp space usage
Flag #5 - CPU usage
Flag #6 - Locks
Flag #7 - Rollback log usage
Flag #8 - Uncommitted operations
Flag #9 - Long uncommitted
Flag #10 - Child connections
Flag #11 - Cache satisfaction
Flag #12 - Disk read rate
Flag #13 - Disk write rate
Flag #14 - Log write rate
Flag #15 - Index add rate
Flag #16 - Index lookup rate
Flag #17 - Index satisfaction
Flag #18 - Full index comp rate
Flag #19 - User id usage
Flag #20 - OS user usage
Flag #21 - IP address usage
Flag #22 - Connection name usage
Flag #23 - Total transaction time
Flag #24 - Total CPU time
Flag #25 - Total disk reads
Flag #26 - Total disk writes
Flag #27 - Total log writes
Flag #28 - Total index adds
Flag #29 - Total index lookups
Flag #30 - Total full index comps

New Feature: "Active Alerts" drop-down list boxes have been added to the Monitor and History pages.  Top

One or more Alerts may still be active even if they don't appear on the Monitor or History page.

The new "Active Alerts" drop-down on the Monitor page shows which ones are still active, and it lets you click on them to open new History pages that are scrolled to those Alerts.

The "Active Alerts" drop-down on the History page shows which ones were still active when the top most row in the "Samples and Messages" section was recorded, and it lets you click on them to scroll the current History page to those Alerts.

New Feature: SQL Anywhere server messages are stored and displayed on the Monitor and History pages.  Top

Foxhound now gathers and stores the data returned by the sa_server_messages() stored procedure, and displays the messages on the Monitor and Sample History pages.

You can now code adhoc queries to merge server messages with Foxhound Alerts and display them all in date/time order; here's an example.

New Feature: The Offline Foxhound Sampling Service (OFSS) has been added.  Top

The Offline Foxhound Sampling Service (OFSS) provides an alternative method for Foxhound to gather and display performance statistics from a subject database when Foxhound cannot establish a direct client server connection to that database.

New Feature: The Mini-Backup process automatically backs up recent changes to Foxhound options and settings.  Top

The Mini-Backup process automatically protects your "intellectual property" by backing up all the changes you make to Foxhound options and settings:

New Feature: The Mini-Restore process restores your Foxhound options and settings from a Mini-Backup file into an empty copy of foxhound5.db.   Top

Only a Full Backup will protect your Foxhound sample data, but if all you care about is your "intellectual property" (the Foxhound options and settings) then restoring from a Mini-Backup file is all you need.

For more information see the Mini-Restore process.

The good news is, you don't have to do anything to create Mini-Backup files, they're created automatically every time you change something.

All you have to do is pick which Mini-Backup file to restore from; the Mini-Restore will then

New Feature: Context-sensitive Gear links have been added to Alert and other messages.  Top

Gear links go to where you can change settings, as opposed to Help links that go to where you read about them.

New Feature: The ADHOC user id can create procedures, functions, tables, indexes and views.  Top

If you like running adhoc queries on the Foxhound database, you'll love being able to CREATE your own procedures... and tables, and views, and functions.

For more information see What kind of adhoc queries can I write?

New Feature: The new Administrator Authentication feature implements "Read-Only" versus "Administrator" modes for the Foxhound GUI.  Top

Administrator Authentication is an optional feature that enables two modes of operation:

For more information see the Introduction to Administrator Authentication.

New Feature: The Attach files to emails: checkbox has been added to Email Setup section of the Monitor Options page.  Top

HTML sample data can now be sent via email attachments to people who don't have direct access to Foxhound.

For more information see Email Setup.


Enhancement: Alert #30 Database read-only and Alert #31 Database updatable are automatically cleared after a specified interval.  Top

Previously, Alert #30 Database read-only and Alert #31 Database updatable were less-than-useful for the following reason:
Once an Alert #30 Database read-only was issued it remained in effect until the database switched back to accepting updates, at which point Alert #31 Database updatable was issued, and vice versa.

In other words, once one of these alerts was issued, one or the other would be in effect forever.

This behavior has been changed by the introduction of limits (by default 10 samples) on how long each of these Alerts remains in effect before an All Clear is issued.

Enhancement: LIKE wildcard characters are allowed in the Do-Not-AutoDrop Connection Name List.  Top

Here's how the AutoDrop wildcards work on some actual connection names:

   FINCEN%; AnaDarko%Analysis; Hello\_World
 
   Actual Connection Name    autodrop?       
   ------------------------- --------------- 
   app                       OK to autodrop  
   FINCEN047                 do NOT autodrop 
   AnaDarko 254 Analysis     do NOT autodrop 
   Hello_World               do NOT autodrop 
   Hello1World               OK to autodrop  

See Monitor Options - Do-Not-AutoDrop Connection Name List.

Enhancement: Foxhound now keeps track of the cumulative total transaction running time for each connection.  Top

A new column Total Transaction Time has been added to the connection sections of the Monitor, Sample History and Connection History pages.

Enhancement: Conn Flags Count columns have been added to the Monitor, History, Connection History and Foxhound Menu pages.  Top

The number of connection flags set for each connection is shown on the connections sections of the Monitor, History and Connection History pages.

The total for all connections is also shown on the Monitor, History and Connection History pages, as well as on the Monitor tab of the Foxhound Menu.

Enhancement: AutoDrop Notice emails have been enhanced to show connection-level sample data for the dropped connections.  Top

Some might call this a "bug fix" because an AutoDrop Notice is dedicated to a single connection so of course it should show data about that connection :)

Enhancement: The new adhoc CREATE VIEW active_alert_range shows exactly when an Alert was issued followed by the subsequent All Clear or Cancelled.  Top

SELECT * FROM active_alert_range ORDER BY active_locator_number DESC;

Enhancement: Several new adhoc query examples have been added or updated in the Help.  Top

See the whole list at Adhoc Queries - Examples of Adhoc Queries.

Enhancement: Intra-query parallelism has been enabled within some CPU-intensive Foxhound services that display sample data.  Top

Previously intra-query parallelism was disabled for all internal Foxhound processes.

That has been changed to improve Foxhound performance by allowing limited intra-query parallelism when the SQL Anywhere server running Foxhound is using 4 or more logical processors.

This only affects the Foxhound HTML services that query and display sample data on the Monitor, History and Connection History pages.

Enhancement: String de-duplication has reduced the size of the Foxhound database file.  Top

Previously many duplicate LONG VARCHAR values would be stored in the sample_connection.LastStatement and LastPlanText columns when a complex query ran for a long time on a target database and was recorded in multiple Foxhound samples.

A separate table has now been introduced to hold single copies of these LONG VARCHAR values, and the original columns have been changed to UNSIGNED INTEGER references to the new table.

Note that the Adhoc Query sample_connection view includes the string values via INNER JOIN clauses:

create VIEW sample_connection AS 
SELECT rroad_group_2_property_pivot.sampling_id,
       rroad_group_2_property_pivot.sample_set_number, -- PRIMARY KEY
       rroad_group_2_property_pivot.connection_number, -- PRIMARY KEY
       ...
       rroad_LastStatement.long_varchar   AS LastStatement,
       rroad_LastPlanText.long_varchar    AS LastPlanText,
       ...
  FROM rroad_group_2_property_pivot
       INNER JOIN ( SELECT * 
                      FROM rroad_long_varchar 
                  ) AS rroad_LastStatement
               ON rroad_LastStatement.long_varchar_id = rroad_group_2_property_pivot.LastStatement_id
       INNER JOIN ( SELECT * 
                      FROM rroad_long_varchar 
                  ) AS rroad_LastPlanText
               ON rroad_LastPlanText.long_varchar_id = rroad_group_2_property_pivot.LastPlanText_id 
        ...

The good news is, the string de-duplication process saves a lot of disk space (up to 45%) and doesn't add much overhead to the sampling process.

The bad news is, it can take a long time to upgrade large Foxhound Version 3 and 4 databases to Foxhound 5. If you don't need the old sample data, use FOXHOUND5UPGRADE=OPTIONS, yyyymmdd or nnn when upgrading.

Enhancement: Display performance of the History page has been improved.  Top

Historically the menu section of the History page has had its share of performance problems.

It's getting better, however, with query optimizations and the addition of a new index.

Enhancement: UNLOAD statements can now be used as part of the Adhoc Query feature.  Top

The dbsrv17 -gl all option has been added to all command files that start the Foxhound database to allow UNLOAD statements on all adhoc query views.

UNLOAD SELECT * FROM alert TO 'c:\\temp\\alert.txt';

Note that it was always possible for you to add dbsrv17 -gl yourself, so this change is a minor convenience... it's more of a revelation than an enhancement :)

For more information see What kind of adhoc queries can I write?.

Enhancement: Adhoc queries can now call the internal Foxhound function rroad_f_limit_string_length_with_ellipsis().   Top

This function strips some line break and tab characters and then limits the length of a character string by replacing excess characters with an ellipsis "..." in the center of the string or at the right end (the default).

SELECT rroad_f_limit_string_length_with_ellipsis ( 'The quick brown fox jumped over the lazy dog.', 20, 'center' ) AS limited;
 
limited                                                                                                                                                                                                                                                          
----------------------
The quick...azy dog. 

For more information see Adhoc Functions.

Enhancement: Adhoc queries can now call the internal Foxhound function rroad_f_decimal_with_commas().   Top

This function inserts commas in large numbers, replaces zero with a dash, limits the precision of fractional numbers, reduces tiny fractions to zero, and returns the result as a string.

Foxhound uses this function for some displayed values like Disk/Cache: Internal Index, Leaf, Table.

SELECT rroad_f_decimal_with_commas ( 123456789.12345 ) AS formatted;
 
formatted
'123,456,789'

For more information see Adhoc Functions.

Enhancement: The size of the Foxhound transaction log is automatically limited by the dbsrv17 -m truncate log on checkpoint option.  Top

This answers the Number One complaint about Foxhound: "The transaction log is too big!".

The bad news is, it comes with a Behavior Change: The transaction log is no longer available for restoring recent changes after restoring an old database backup.

The good news is, you can return to the previous backup behavior by removing the dbsrv17 -m option, and start running $backup_foxhound5_log.bat in the scripts subfolder.

For more information see Transaction Log Backup.

Enhancement: The Go to: field on the History page now allows two integers 9999,9 for scrolling directly to a server message row.  Top

Server message rows require two numbers to identify them in the Go to: field: the sample_set_number (locator_number) and the server_message.insert_order value.

When a server message appears at the top of the Monitor or History page, the "inserted order" will appear as the third number in the list of Adhoc Reporting Primary Keys:

Samples and
Messages
 
[14,43562,3925]
 
10:18:33 AM   -- I. Finished checkpoint of "ddd" (ddd. db) at Fri Jul 12 2019 10:18 Help  (239ms) 

For more information see the Monitor Database Page - [9,9999,99] Adhoc Reporting Primary Keys.

Enhancement: Remote Consulting is supported by the unload_samples procedure and a Help topic describing how to use the script.  Top

See Foxhound Introduction and Setup - Support and Consulting.

Enhancement: The Disposition and Fav? columns have been added to the Monitor dashboard.  Top

The Monitor tab of the Foxhound Menu page has effectively become the "Monitor Dashboard" and now it has two new columns:

Disposition, a condensed version of the Database Disposition string that appears on the Monitor and History pages.

Primary    - high availability updatable primary database
Secondary  - high availability read-only secondary (mirror) database
Copy       - read-only scale-out copy database
Read-only  - read-only
empty      - none of the above; updatable or unknown
Fav?, short for Favorable?, the three YYY / NNN settings appear on the Monitor and History pages:

Y/N  - RememberLastPlan to display Last Plan Text values,
Y/N  - RememberLastStatement to display Last Statement and Blocked Statement values, and
Y/N  - RequestTiming to display Throughput... Req, Waiting Time and Busy, Wait, Idle values.

Enhancement: Adhoc queries can now merge and display alerts and server messages from multiple High Availability target databases.  Top

SQL Anywhere server messages contain a wealth of diagnostic information about High Availability databases, and Foxhound now captures and stores those messages via calls to sa_server_messages().

You can now code adhoc queries to merge server messages with Foxhound Alerts and display them all in date/time order; here's an example.

Enhancement: Context-sensitive Help links have been added to Alert and other messages.  Top

These new Help links take you directly to the corresponding Alert, Server Message and Connection Flag topics in various Foxhound Help pages.

Enhancement: Diagnosis of email errors has been improved.  Top

Previously, the Foxhound documentation incorrectly described email status codes according to the SQL Anywhere 11 documentation.

That has changed to use the SQL Anywhere 17 Help topic "Status codes for MAPI and SMTP system procedures".

Also, the extended error diagnostic procedures xp_get_mail_error_code() and xp_get_mail_error_text() are called for all status codes, not just the ones the Help says are applicable.

For more information see the Send Test Alert Email button.

Enhancement: Context-sensitive Help links have been added to Monitor Messages like "Database server not found".  Top

These new links have been added to messages displayed on the Monitor and History pages, and they take you to individual Monitor Messages descriptions in the Help.

Enhancement: A procedure to recalculate the connection flags can be run via ISQL.  Top

The rroad_recalculate_flags procedure was a last-minute addition to Foxhound Version 5. It lets you change the Connection Flag Settings on the Monitor Options page and then put those settings into effect for all the samples that have already been gathered.

For more information see Recalculate Connection Flags.

Enhancement: A procedure to recalculate the "Peaks since" row can be run via ISQL.  Top

Have you ever regretted clicking on Reset Peaks?

If so, you'll love the rroad_recalculate_peaks() procedure; see Recalculate Peaks.


Usability Improvement: Caution notes have been added to the Help for server-level statistics.  Top

Several performance statistics shown at the target database level are actually accumulated at the SQL Anywhere server level: Active Req, Max Req, Unsch Req, CPU time, processor count and Cache Panics.

For example, an idle database may show high CPU usage because some other database on the same server is busy.

Because this can cause confusion, Caution: notes now state that these "values may appear inflated if there is more than one database running on the same SQL Anywhere server".

Usability Improvement: Most internal Foxhound exception handlers no longer record SQLSTATE 00000 and 57014 exceptions.  Top

SQLSTATE 00000 means "No error or warning" and 57014 means "Statement interrupted by user".

Neither of these exceptions have any diagnostic value so they are no longer displayed in section 7 Diagnostics of the Foxhound Options page.

Usability Improvement: Most internal Foxhound exception handlers now check SQLSTATE rather than ERRORMSG.  Top

Several of Foxhound's internal exception handlers have been changed to check the language-independent SQLSTATE value rather than the ERRORMSG() function.

One exception is SQLSTATE WO005 which is a catch-all code that encompasses many different remote server errors, some of which should be ignored and others that should not.

In this case the corresponding ERRORMSG() value is checked against English values "Server [name]:[error]" to determine if the exception should be ignored.

This only works properly for English-language target servers; for other targets all WO005 exceptions will be displayed in section 7 Diagnostics of the Foxhound Options page.

Usability Improvement: A new warning is displayed when Force Default Settings On All Targets will turn Ping-Only Sampling off.  Top

Pressing the Force Default Settings button on may have unintended consequences for certain target databases.
For example, Foxhound can't perform full sampling for a High Availability arbiter server that doesn't have a database, so it will issue an Alert #1 Database unavailable even though the arbiter server is OK.

For this reason a new banner warning is displayed on the Monitor Options page "This action will turn Ping-Only Sampling off for 1 target database. (see 16. Ping Settings)."

Usability Improvement: Many improvements have been made to Performance Tips in Help topics.  Top

The Performance Tips are how Foxhound provides free performance and tuning advice, and they're getting better with each new version.

Usability Improvement: AutoDropped connection messages on the Monitor and History pages now contain links to Connection History pages for those connections.  Top

The first question anyone has about an AutoDropped message is "What was the connection doing?".

Usability Improvement: The connection section on the Monitor or History page is no longer empty when an Alert or other message is displayed at the top of the samples section.  Top

One of the earliest Foxhound design decisions was that the Top Sample section should show "the most recent successful sample" even if that sample is quite old.

If you accept that decision, you will probably also accept this change to show the corresponding (also possibly quite old) connection data in the connections section at the bottom of the Monitor and History pages.

Usability Improvement: The same section titles are now used the Monitor and History pages: "Top Sample" and "Samples and Messages"  Top

The Monitor and History pages are different, but that's no reason for the section titles to be artificially different.

Usability Improvement: The Status Area has been rearranged on the Monitor and History pages.  Top

The optional GlobalDBID field has been moved down to the third line, underneath the Software: and DB File: versions, to make room for the new "Active Alerts:" drop down list box.

The column titles "DBSpace Size Used Frags Avail File" have been underlined to match the formatting style used for other column titles

Usability Improvement: The timestamp at the top of the Connections section of the Monitor and History page is now a link to the History Page.  Top

The data shown in the Top Sample and Connections sections of the Monitor and History pages might be out of date when compared with the rows shown in Samples and Messages; in fact, it might not even be visible in the Samples and Messages section.

That can happen when the successful sample shown in the Top Sample section is followed chronologically by so many messages and unsuccessful samples (e.g., Database not found) that it doesn't appear on-screen in the Samples and Messages section.

The title of the Connections section "3 connections at 7:16:00 AM..." contains the timestamp of the successful sample, and it is now a link you can click on to open/scroll the History page so that sample appears at the top of the Samples and Messages section, as well as continuing to appear in the Top Sample and Connections sections.

Usability Improvement: Column titles are no longer suppressed in the Samples and Messages section if there are no successful samples to be displayed.  Top

Previously, when the Samples and Messages section on the Monitor or History page was filled with messages (Alert #1, Sampling stopped, etc.), no column titles were displayed at all.

The reasoning was this: If no successful samples are displayed, there's no need for the column titles because there are no data values in those columns.

The effect, however, was disconcerting: Suddenly the column titles would disappear, along with the section title "Samples and Messages".

This behavior has been eliminated; now, some of the column titles are always displayed.

Usability Improvement: Display clutter has been reduced by replacing table borders with line separators on the on the Monitor and History pages.  Top

Previously, different sections of data on the Monitor, Sample History and Connection History pages were surrounded by black borders.

These borders did not contribute to visual clarity, and they have been replaced by horizontal lines that are less intrusive.

Usability Improvement: A Help icon has been added to the "Top Sample Old Age" field on the Monitor and History pages.  Top

Unlike other modern software products, everything displayed by Foxhound is described in the Help.

Most display items also have their own context-sensitive Help icons... and every item deserves one, especially items which don't have titles like this one.

Usability Improvement: Long Last Statement strings that don't contain line breaks are now wrapped so they don't make the browser page very wide.  Top

Previously very long SQL statements in the Last Statement field on the History and Connection History pages caused display problems.

In particular, if the statements didn't contain line breaks to force the text to wrap, the browser page would grow horizontally to accommodate the value.

This has been fixed by forcing the Last Statement value to wrap when it grows as wide as the other data on the page.

The same change has been made for the Last Plan Text field, for very long lines in the plan that are wider than the other data on the page.

Usability Improvement: A list of SQL statements that have checkpoint operations as a side-effect has been added to the Help topic for the Checkpoints column.  Top

See the "Performance Tip: If you see an "storm" of checkpoint operations..." in this Help topic.

Usability Improvement: Zero heartbeat and sample time measurements are now displayed as dashes '-' instead of 0ms.  Top

Zero response time values are significant; they should be easy to tell apart from non-zero values.

Usability Improvement: The suffix "(Connection String)" no longer clutters up the drop-down list boxes.  Top

The suffix "(DSN)" indicates that an ODBC DSN is used by Foxhound to establish a connection, and "(offline)" indicates an OFSS subject database that doesn't have a direct connection from Foxhound at all.

Previously, the suffix "(Connection String)" indicated that Foxhound used a named connection string entered on the String tab of the Foxhound Menu page, but that just cluttered up the display.

So now, if you don't see (DSN) or (offline) that means a connection string is being used.

Usability Improvement: The Back to Menu and New Menu links all go directly to the Monitor tab of the Foxhound Menu page if it's not empty.  Top

Previously the Back to Menu and New Menu links on the Monitor, History and other pages would go to the DSN or String tabs on the Foxhound Menu page.

However, after one or more Monitor sessions have been started most navigation involves the Monitor tab, not the DSN or String tabs, so that tab is now the default destination of Back to Menu and New Menu.

Usability Improvement: Two internal tables have been made public via adhoc views: alert_title and autodrop_title.  Top

These "code tables" will may adhoc query results more readable.

   SELECT * FROM alert_title    ORDER BY alert_number;
   SELECT * FROM autodrop_title ORDER BY autodrop_number;
  
   alert_number alert_title                                                                                                                                                                                                                                                      
   ------------ ---------------------- 
              1 Database unresponsive                                                                                                                                                                                                                                            
              2 Long heartbeat       
              ...
   
   autodrop_number autodrop_title                                                                                                                                                                                                                                                   
   --------------- -----------------
                 1 Blocking others                                                                                                                                                                                                                                                  
                 2 Blocked by other    
                 ...                                                                                                                                                                                                                                          

Usability Improvement: The sampling id has been added as a prefix in the drop-down lists of target databases.  Top

The sampling id is useful when coding adhoc queries, and it can also be helpful when you're trying to keep track of many different but similarly-named target databases in Foxhound.

Usability Improvement: The Delete link on the Foxhound Menu page now asks for confirmation "Continue with Delete? OK / Cancel".   Top

Generally speaking Foxhound doesn't nag you with endless "OK / Cancel" popups, but this is an important exception: it's just too easy to accidentally delete millions of samples by clicking on the wrong link.

Usability Improvement: Hypertext links have been changed to use blue text on a grey background with no underlining.   Top

If you don't like this change, tell me what you do want to see.

Except pink. Pink is never coming back :)

Usability Improvement: Column value highlighting has been changed to white-on-dark-grey for medium values and white-on-black for extreme values.  Top

The previous combination (black-on-medium-grey was used for medium values, and white-on-black for extreme values) didn't look right, possibly because the foreground colors were different.

Now, the foreground color is the same (white, for "this is a highlighted value") and the background color changes (medium grey for "this is a medium value" versus black for "this is an extreme value").

Note that shades of light grey are reserved for row and menu item highlighting.

Usability Improvement: The About page now displays a list of the patches that have been applied.  Top

Previously you had to run an adhoc query to see which patches (if any) had been applied to your copy of Foxhound; now you just have to open the About page.

Usability Improvement: Banner warnings are displayed when the Do-Not-AutoDrop lists are filled in but not enabled.  Top

Banner warnings are displayed in the Do-Not-AutoDrop Lists section of the Monitor Options page whenever the lists are filled in but not checked as enabled:

 This Do-Not-AutoDrop User Id List has not been enabled so it will not have any effect. 

 This Do-Not-AutoDrop Connection Name List has not been enabled so it will not have any effect. 

Usability Improvement: PRIMARY KEY comments have been added to Adhoc CREATE VIEW definitions.  Top

Previously the Adhoc Schema view definitions showed all the column names and data types, but if you wanted to see the primary keys you had find the base table.

New "-- PRIMARY KEY" comments have now been added next to the FROM clauses in the CREATE VIEW statements, like this:

-- CREATE VIEW dba.alert (
--    alert_occurrence,             -- UNSIGNED BIGINT   
--    sampling_id,                  -- UNSIGNED INT   
--    sample_set_number,            -- UNSIGNED BIGINT   
--    alert_number,                 -- INTEGER   
--    alert_in_effect_at,           -- TIMESTAMP   
--    alert_description,            -- LONG VARCHAR   
--    email_status,                 -- LONG VARCHAR   
--    alert_is_clear_or_cancelled ) -- VARCHAR ( 1 )   
create VIEW alert AS 
SELECT * 
  FROM rroad_alert -- PRIMARY KEY ( alert_occurrence )
;

Usability Improvement: Separate "Help" links have been (re-)added to all the menus.  Top

Once upon a time all the menus had a Help link to the Table of Contents.

For some reason, those links were removed, so the only way to reach the Table of Contents was to click on one of the context-sensitive icons to open the Help frame, and then click on Table of Contents.

Time passes . . . the Foxhound Help has become a book about performance and tuning, and links aren't always what you need.

Sometimes you want to read about other subjects entirely, and for that you need the Table of Contents.

So . . . the Help links are back on all the menus.

Usability Improvement: Email failures are no longer recorded as "Info: Email failed:" exceptions.  Top

Now that well-documented email failure messages are displayed on the Monitor and History pages, there is no longer a need for "Info: Email failed:" exceptions in the Diagnostics section of the Foxhound Options page.

Usability Improvement: The Alert 2 Long heartbeat minimum threshold has been reduced from 100ms to 1ms.  Top

The default value is still 1s, which makes sense as a default... but there's no reason to forbid any value smaller than 100ms.

To put it another way, Foxhound ain't your nanny :)

Usability Improvement: The ODBC Administrator button is disabled when Foxhound is running as a service.  Top

Previously, the ODBC Administrator button could be pressed but it didn't do anything if Foxhound was running as a service.

(It's a Windows thing: the ODBC Administrator is not allowed to display a GUI when it is run by a service.)

The ODBC Administrator button is now disabled when Foxhound is running as a service.

Usability Improvement: Long ASACIS connection names are abbreviated with embedded ellipsis ... characters.  Top

This helps keep the connection sections from growing too wide:

Full Connection Names                           Abbreviations
---------------------------------------------   ---------------------
ASACIS_574694a664844efca19f15175018a043_45770   ASACIS_57469..._45770 
ASACIS_1e12b0c8deda4692ae97a27972122008_14981   ASACIS_1e12b..._14981 

Usability Improvement: The Idle Conns and Max Req columns are no longer highlighted on the Monitor and other pages.  Top

High values of Idle Conns and Max Req do not directly represent or contribute to performance bottlenecks, so they are no long color highlighted with white-on-dark-grey or white-on-black.

Usability Improvement: Some "Performance Tip:" labels in the Help have been changed to "Administrative Tip:".  Top

There's a big difference between database performance (latency, throughput, CPU usage, etc) and your performance (debugging, ease of use, best practices, etc).

The Foxhound Help contains many tips on both subjects, and now they have their own labels: Performance Tip: versus Administrative Tip:

Usability Improvement: More "Save" buttons have been added to long sections the Monitor Options page.  Top

It's hard enough to remember to "Click Save!", you shouldn't have to scroll up and down to find a Save button.

Usability Improvement: The Google custom search engine (CSE) has been replaced by the FreeFind.com search service.  Top

The Google CSE was difficult to maintain and it never worked very well.

Usability Improvement: The About page now shows the Foxhound SERVER name as well as the DBFOLDER to help tell multiple Foxhound engines apart.  Top

Foxhound database folder (DBFOLDER):  C:\ProgramData\RisingRoad\Foxhound5	 
      Foxhound server name (SERVER):  foxhound5

Usability Improvement: All Foxhound pages now display the current timestamp plus the Foxhound version.  Top

This stuff helps when screenshots are used for documentation and troubleshooting.

Usability Improvement: The message "Duplicate Foxhound sampling sessions" is not displayed for HA primary and secondary (mirror) servers.  Top

It is a frequent practice to have separate Foxhound sampling sessions for up to 5 servers in a basic High Availability setup: arbiter, partner 1, partner 2, primary and secondary (mirror).

Previously, the Monitor pages for four of those targets would display this banner message:

Duplicate Foxhound sampling sessions. There is more than one Foxhound connection to this target database.

Thant message is now suppressed if the database disposition contains either of these substrings:

Updatable primary database.
Read-only secondary (mirror) database.

The reason is, it's probably not a mistake to monitor pairs of HA servers (partner and primary, partner and secondary) that share the same target databases.

Usability Improvement: Adhoc query examples are arranged alphabetically by title.  Top

For more information see Examples of Adhoc Queries.

Usability Improvement: The HTML page TITLEs now start with the sampling id to make it clear which browser tab is showing which target database.  Top

Here's the format now used:

[ID] - [Target Database] [(DSN)] - Monitor Database - Foxhound5
[ID] - [Target Database] [(DSN)] - Sample History - Foxhound5
[ID] - [Target Database] [(DSN)] - Connection History - Foxhound5
[ID] - [Target Database] [(DSN)] - Monitor Options - Foxhound5

Usability Improvement: Direct menu links to the Monitor and Sample History pages have been added to the Monitor Options page.  Top

It's important to be able to navigate Foxhound with the fewest clicks possible.

Usability Improvement: A template for supporting HTTPS has been added to all the shortcut command files that start the Foxhound database.  Top

These comments

REM For HTTPS protocol...
REM -xs https(identity="C:\Users\Public\Documents\SQL Anywhere 17\Samples\Certificates\rsaserver.id";identity_password=test;port=443;maxsize=0;to=600;kto=600)^

have been added to these command files

$start_foxhound5_default_browser.bat
$start_foxhound5_default_browser_debug.bat
$start_foxhound5_engine.bat

Usability Improvement: Patches are stored in the database to be automatically re-applied when the setup is re-executed.  Top

When you install one or more patches to a particular build of Foxhound, those patches are stored in the database as well as being applied.

Later, if you re-run the setup to reinstall the same build of Foxhound, those patches are automatically re-applied as part of the post-setup process; you don't have find the patch files or restart Foxhound to apply them.

Note that each patch can only be applied (and re-applied) to the exact same Foxhound build for which the patch was provided.


Behavior Change: To avoid conflicts the Starting Multiple Copies of Foxhound port numbers 49xxx have been changed to 50xxx.  Top

Previously the HTTP port number range 49xxx suggested by the Starting Multiple Copies of Foxhound Help topic could cause conflicts with other processes. The suggested range has been changed to 50xxx.

Behavior Change: The "Purge uninteresting connection data" feature has been removed.  Top

This feature was omitted when the Foxhound Purge process was completely rewritten.

The Purge process is no longer able to delete some connection-level sample data without deleting the entire sample; i.e. all the connection, database and server-level data.

Behavior Change: The Purge process no longer forces extra checkpoints while it is running.  Top

This feature was omitted when the Foxhound Purge process was completely rewritten.

Because of this change, up-to-date Before/After/Change row count values could no longer be displayed in the Purge Run Report, and they have been replaced by the Rows Deleted column.

Behavior Change: Some sample Foxhound scripts have been moved to a separate scripts subfolder.  Top

The new C:\ProgramData\RisingRoad\Foxhound5\scripts subfolder now contains these files:
$backup_foxhound5_log.bat
$create_SQL_Anywhere_17_bin64_service.bat
$run_most_recent_mini_restore.bat
OFSS_1_setup.sql
OFSS_2_run_the_OFSS_monitor.sql
OFSS_3_load_OFSS_batches_into_Foxhound.sql

Behavior Change: Schema changes have been made to the views used for adhoc queries.  Top

To see all the changes, go to Adhoc Views and click on "(Show The Changes Made To Adhoc Views In Foxhound 5)".

Behavior Change: By default the Purge process starts once an hour, on the hour.  Top

Is this a Behavior Change, or a New Feature? . . .

Previously, the purge process ran every 20 minutes, or not at all.

Now, there's a 24 x 7 schedule under your control, with the default set to run the purge every hour on the hour.

Behavior Change: Only generated OFSS connection string names are allowed to end with "(offline)".  Top

Foxhound now uses the trailing substring "(offline)" to identify OFSS connection strings, so you can't name your own connection strings that way.

For more information see OFSS Connection String Names.

Behavior Change: The new inserted_order column now appears in the list of Adhoc Reporting Primary Keys associated with a server message.  Top

When a server message appears at the top of the Monitor or History page, the "inserted order" will appear as the third number in the list of Adhoc Reporting Primary Keys:

Samples and
Messages
 
[14,43562,3925]
 
10:18:33 AM   -- I. Finished checkpoint of "ddd" (ddd. db) at Fri Jul 12 2019 10:18 Help  (239ms) 

For more information see the Monitor Database Page - [9,9999,99] Adhoc Reporting Primary Keys.

Behavior Change: The purge process no longer puts "Older samples purged at" eyecatcher messages in the Sample History page.   Top

This feature was omitted when the Foxhound Purge process was completely rewritten.

Behavior Change: Foxhound no longer requires a non-authenticated (non-OEM) copy of SQL Anywhere to run its own database.  Top

Foxhound no longer displays this error message: Foxhound itself cannot be run using the OEM or AUTHENTICATED editions of SQL Anywhere.

Behavior Change: Historical diagnostic exception data is no longer copied from an old Foxhound database to a new one.  Top

Old exception data has sometimes been confusing, but never helpful, when displayed by the Diagnostics section of the Foxhound Options page.

This change applies to both the Mini-Restore process and to the Foxhound setup process when you are upgrading to a new version or build or re-installing the same build.

It does not apply to a full database restore; old diagnostic data is restored along with everything else.

Behavior Change: The Purge process may now delete all samples from a stopped sampling session.  Top

Previously, if the Foxhound Options - Purge "after [nnn] days" setting included all the remaining samples for a sample session (i.e., the sample session was stopped more than [nnn] days ago), the Purge process would automatically preserve a few of the most recent samples.

The Foxhound Purge process has been streamlined, and it will now delete all the samples from a session that was stopped more than [nnn] days ago.

Behavior Change: The transaction log is no longer available for restoring recent changes after restoring an old database backup.  Top

This is a side-effect of an Enhancement: The size of the Foxhound transaction log is automatically limited by the dbsrv17 -m truncate log on checkpoint option.

The good news is, you can return to the previous backup behavior by removing the dbsrv17 -m option, and start running $backup_foxhound5_log.bat in the scripts subfolder.

For more information see Transaction Log Backup.

Behavior Change: All the "demo" ODBC connection strings on the Foxhound Menu page now specify DRIVER=SQL Anywhere Native.   Top

This may or may not be an example of "best practices" because DRIVER=SQL Anywhere Native doesn't always work properly.

In particular, when connecting to a target database running on an earlier and/or 32-bit version of SQL Anywhere, you might have better luck with an explicit setting like SQL Anywhere 16.

Behavior Change: ADHOC / SQL are now the credentials for displaying the Adhoc Schema database.  Top

The Adhoc Schema database is a separate SQL Anywhere database delivered with Foxhound for documentation purposes only.

For more information see How do I see the schema for adhoc reporting?

Previously the login credentials were DBA / SQL, but since there's no reason for a documentation reader to have DBA privileges, the login credentials have been changed to ADHOC / SQL.

Behavior Change: Several additions and changes have been made to the Foxhound Requirements.  Top

Here are all the Requirements with the changes highlighted and explained:

1. Windows - Foxhound works with target databases running on other operating systems but the Foxhound engine itself only runs on Windows, and has been tested on the 64-bit version of Microsoft Windows 10.

Foxhound is no longer being tested on Windows versions earlier than 10.

2. ODBC - Foxhound itself uses ODBC to connect to your target databases. You don't necessarily need ODBC installed on the servers running your target databases, and you can specify DSN-less connections for Foxhound by using the "String" tab on the main menu page.

3. Chrome, Firefox - The Foxhound client has been tested with the latest versions of Chrome and Firefox.

Foxhound is no longer being tested on IE.

4. JavaScript - Foxhound needs "JavaScript" or "Active scripting" to be enabled in your browser.

5. SQL Anywhere 6, 7, 8, 9, 10, 11, 12, 16 and 17 for target databases - Foxhound has also been tested with target databases created with SQL Anywhere 5.5 and running on SQL Anywhere 6 software.

6. SQL Anywhere 17 for Foxhound - The Foxhound database must run on its own instance of the 32-bit or 64-bit SQL Anywhere 17 network server build 4882 or later. This restriction does NOT apply to your target databases which can run on any version of SQL Anywhere 6, 7, 8, 9, 10, 11, 12, 16 and 17.

Two changes have been made to this requirement...

The Foxhound's own database now requires SQL Anywhere 17 build 4882 or later.

Foxhound no longer runs on SQL Anywhere 16, and the SQLANY16 and FOXHOUND5SVER environment variables are no longer used by the Foxhound shortcuts.

This change was made for several reasons:

  1. SQL Anywhere 17 is now stable and mature.

  2. SAP has stopped mainstream maintenance of SQL Anywhere 16.

  3. The new features and performance improvements in SQL Anywhere 17 are now being used inside Foxhound.

  4. The number of Foxhound runtime environments has been cut from four to two (32-bit and 64-bit version 17 only).

The Foxhound database only runs on its own instance of dbsrv17.exe.

This statement has always been true, but it is now clearly documented in the Foxhound Requirements.

In particular, do not start another database on the same engine as Foxhound, and do not start the Foxhound database on an engine that is already running another database.

7. SQLANY17 - The delivered Foxhound shortcuts expect that the SQLANY17 environment variable will be created by the SQL Anywhere 17 installation (which will happen by default). If that is not the case you may have to modify the corresponding *.bat files. Here is the default setting for Windows 10:

   SET SQLANY17=C:\Program Files\SQL Anywhere 17

The SQLANY16 environment variable is no longer used by Foxhound.

Foxhound is no longer being tested on Windows versions earlier than 10.

8. FOXHOUND5 - The FOXHOUND5 environment variable is created by the Foxhound installation to contain the drive and path of the folder where Foxhound is installed. It is no longer required by the delivered Windows shortcuts or by any of the code inside Foxhound. It is used by several of the optional Windows command files in the scripts subfolder, and by the $post_setup.bat file which is launched by the Foxhound installation process. Here is the default setting for Windows 10:

   SET FOXHOUND5=C:\ProgramData\RisingRoad\Foxhound5\

FOXHOUND5 replaces FOXHOUND4 as the environment variable created by the Foxhound 5 setup, and it is no longer required.

Foxhound is no longer being tested on Windows versions earlier than 10.

9. Disk space - The Foxhound database file may grow in size at a rate of 100K per hour per target database connection... or more; your mileage may vary.

In this case, Foxhound behavior hasn't changed but this description has been improved.

10. OFSS - The Offline Foxhound Sampling Service (OFSS) is only supported for subject databases running on SQL Anywhere versions 12, 16 and 17.

OFSS is a new feature in Foxhound 5, and this requirement is simply a statement of where it works and doesn't work.

11. Data Upgrade - The Foxhound 5 installation process will copy and upgrade the data from an existing Foxhound Version 3, 4 or 5 database, but it will ignore a Version 1 or 2 database.

If you install Foxhound 5 on a computer that already has a copy of Foxhound 1 or 2, that earlier copy will be ignored and the Foxhound 5 setup will create a "fresh installation" (no sampling sessions or other user-specified options and settings).

If you really want to upgrade your Foxhound 1 or 2 database to Foxhound 5, you can first upgrade it to Foxhound 3 or 4 and from there to Foxhound 5; contact breck.carter@gmail.com to get a free copy of Foxhound 4.

Behavior Change: The Start menu for Foxhound5 has been rearranged into a simple numbered list.  Top

Here's the New Look compared with the Old Look...

Foxhound 5                       Foxhound 4
==============================   ===========================================
1 Start Foxhound                 Start Foxhound via default browser 
2 Adhoc Query via ISQL           Adhoc Query Foxhound Database via ISQL
3 Backup Database                Backup Foxhound Database 
  -                              Backup Foxhound Transaction Log  [moved to scripts subfolder]
4 Help                           Help 
  -                              ReadMe  [removed]
5 FAQ                    [new]   -
  -                              Start Foxhound via Chrome   [removed]      
  -                              Start Foxhound via Firefox  [removed]      
  -                              Start Foxhound via IE       [removed] 
6 Debug Start Foxhound           Start Foxhound via default browser - debug
  -                              Start Foxhound via Chrome - debug   [removed]    
  -                              Start Foxhound via Firefox - debug  [removed] 
  -                              Start Foxhound via IE - debug       [removed] 
7 Start Foxhound Engine          Start Foxhound Engine        
8 Stop Foxhound Engine           Stop Foxhound Engine      
9 Mini-Restore           [new]   -      
10 Unsetup Foxhound              Unsetup Foxhound     
11 Admin Update via ISQL [new]   -

Behavior Change: The Use Extreme Settings button no longer affects any AutoDrop settings.  Top

The Use Extreme Settings button on the Monitor Options window is intended for experimentation and training purposes, and it works by changing most settings to "aggressive" values that have highly visible results.

However, some settings are too dangerous to change without explicit user involvement... and that now includes anything to do with AutoDrop.

Therefore, the following settings on the Monitor Options page are now unaffected by the Use Extreme Settings button:

   12. AutoDrop Criteria
 
       AutoDrop #1 enabled: and threshold settings     - unaffected
       AutoDrop #2 enabled: and threshold settings     - unaffected 
       AutoDrop #3 enabled: and threshold settings     - unaffected 
       AutoDrop #4 enabled: and threshold settings     - unaffected 
       AutoDrop #5 enabled: and threshold settings     - unaffected  
       AutoDrop #6 enabled: and threshold settings     - unaffected  
 
   13. Do-Not-AutoDrop Lists
 
       Do-Not-AutoDrop User Id List enabled:                                             - unaffected
       Exclude this semicolon-separated list of user ids from being AutoDropped:         - unaffected
       Do-Not-AutoDrop Connection Name List enabled:                                     - unaffected
       Exclude this semicolon-separated list of connection names from being AutoDropped: - unaffected

Behavior Change: The Stop Foxhound Engine button has been removed from the Foxhound Options page.  Top

You can use the Windows shortcut Start - Foxhound5 - 8 Stop Foxhound Engine instead.

Behavior Change: The ADHOC user id cannot be used in SQL Central to connect to the Foxhound database.  Top

You can use ISQL but not SQL Central; that door has been closed.

Could not connect to the database.
RAISERROR executed: SQL Central connections to the Foxhound database by user id "ADHOC" are not allowed.
[SAP][ODBC Driver][SQL Anywhere]RAISERROR executed: SQL Central connections to the Foxhound database by user id "ADHOC" are not allowed.

Behavior Change: The purge process preserves "Purge Run Report" and "Diagnostics" data for at least one year.  Top

The "Enable purging after [nnn] days" applies to everything except the purge_run, exception_diagnostic and exception_dump tables.

Data in those tables is preserved for one year after which it is subject to the purge process.

For more information see the Foxhound Purge process.

Behavior Change: FOXHOUND5UPGRADE=yyyymmdd and nnn may preserve too many samples for multiple OFSS databases.  Top

This really should have been a Bug Fix, but it's called a Behavior Change because the description reads "preserve" rather than "delete too many samples".

It only affects offline (OFSS) databases where samples are gathered in batches, not target databases where samples are gathered by direct connections from Foxhound.

The effect is small: only a few (if any) OFSS samples are preserved by a database upgrade when they should have been excluded.

As a possible workaround, try running the Foxhound Purge process to delete the samples that should have been excluded by the FOXHOUND5UPGRADE=yyyymmdd or nnn option:

Foxhound Options - section 6. Purge - check Enable purging after [nnn] days - Start Manual Purge Now.

Behavior Change: HTML documentation for earlier Foxhound versions has been moved to bcarter.com.  Top

In order to improve the performance of web searches, old material has been moved away from the main Foxhound domain name risingroad.com to a different domain bcarter.com.

Links to those archival pages remain where they were: at the bottom of the Foxhound home page www.risingroad.com/foxhound/index.html.

Behavior Change: The SQL Anywhere user id 'foxhound1' has been replaced by ADMIN.  Top

An earlier version of the Administrator Authentication feature was delivered in Foxhound 4 build 4740 patch 1.

The Foxhound 4 build 4740 patch 1 SQL Anywhere user id 'foxhound1' does not exist in Foxhound5. It is replaced by the SQL Anywhere user id ADMIN with the default password SQL which can be changed but doesn't have to be.

The Foxhound4 build 4740 patch 1 current Login password is used as the password for the Foxhound GUI user id 'admin' in Foxhound5.

For more information see How To Configure Authentication.

Behavior Change: It may take a very long time to upgrade all the data in a very large Foxhound 3 or 4 database.  Top

For example, a 20G Foxhound 4 database took almost 5 hours to upgrade when the default FOXHOUND5UPGRADE=ALL was used.

Most of that time was required to retrofit two new features to the old data: string de-duplication to save disk space, and setting the connection flags:

2h 45m  de-duplicate string values
1h 36m  set connection flags
   30m  other tasks
4h 51m  total

Note that string de-duplication and connection flags do not add much overhead to the sampling process, but they do take a lot of time when upgrading large databases.

If you don't need the old sample data, use FOXHOUND5UPGRADE=OPTIONS, yyyymmdd or nnn; for example:

******************************************************************
*** PLEASE READ THIS, AND CONFIRM OR CHANGE **********************
******************************************************************
***
*** "FOXHOUND5UPGRADE" specifies how much data is to be upgraded.
***
*** If you want to CHANGE the setting, type in a new value...
***    ALL       - upgrade all the data
***    OPTIONS   - no samples, just the Foxhound options
***    yyyymmdd  - options plus samples since yyyymmdd
***    nnn       - options plus last nnn days of samples
***    NOTHING   - don't upgrade any data
*** and press Enter to continue.
***
*** If you LIKE the current setting...
***    FOXHOUND5UPGRADE=ALL which means upgrade all the data
*** just press Enter.
******************************************************************
Current FOXHOUND5UPGRADE=ALL
New     FOXHOUND5UPGRADE=Jul 31 2015 12:00:07 AM 

Behavior Change: The Foxhound database may contain a lot of free space after upgrading a very large Foxhound 3 or 4 database.  Top

For example, a 20G Foxhound 4 database file stayed the same size but the free space grew from 15M to 6.3G because of string de-duplication.

If you want to upgrade all your data without pre-allocating any free space, use FOXHOUND5UPGRADE=100000 instead of the default FOXHOUND5UPGRADE=ALL.

Behavior Change: The $MULTI* and $TEN_INSTANCES* sample command files have been replaced with DIY instructions.  Top

Previously, two sets of sample command files were delivered with Foxhound to demonstrate the Starting Multiple Copies of Foxhound Help topic:

$MULTI_Step_1_copy_all.bat    - Set up 30 Foxhound servers on one computer
$MULTI_Step_1b_copy_one.bat
$MULTI_Step_2_dbsrv16_all.bat
$MULTI_Step_2b_dbsrv16_one.bat
$MULTI_Step_3_browser_all.bat
$MULTI_Step_3b_browser_one.bat
$MULTI_Step_4_dbstop_all.bat
$TEN_INSTANCES_1_copy.bat     - Set up 10 Foxhound servers on one computer
$TEN_INSTANCES_2_dbsrv.bat
$TEN_INSTANCES_3_browser.bat
$TEN_INSTANCES_4_dbstop.bat

Other changes, such as the new DBFOLDER and SERVER parameters and the new Mini-Backup feature have made it difficult to maintain the general-purpose nature of these sample files, and the result would be difficult to understand and customize.

Another disadvantage is these sample files didn't show how to set up Windows services.

Therefore, these scripts have been replaced by do-it-yourself instructions in the Starting Multiple Copies of Foxhound Help topic.


Bug Fix: The error "unable to load dll" has been eliminated.  Top

Previously Foxhound would sometimes fail to start because it couldn't load either of the Windows API support DLLs.

This has been fixed.

Bug Fix: The Display Schema page no longer displays "Value out of range for destination" for billion-row tables.   Top

Previously a target table with over 1,000,000,000 rows would cause the Display Schema feature to fail with SQLCODE 158 Value nnn out of range for destination.

This has been fixed.

Bug Fix: The Connection Timeout and Timeout Retry options have been removed to prevent unresponsiveness.  Top

These features caused Foxhound to become unresponsive when the Database Monitor was unable to make a network connection to a target database.

Bug Fix: Ping-Only Sampling no longer causes Foxhound to become unresponsive.  Top

Previously Foxhound could become unresponsive when Ping-Only Sampling was stopped and restarted, or when full sampling was incorrectly attempted for the utility database on an arbiter server.

This has been fixed.

Bug Fix: Large Foxhound databases no longer become unresponsive on startup.  Top

Previously slow queries could cause large Foxhound databases to become unresponsive on startup.

This has been fixed.

Bug Fix: The patch process now skips files that don't have the matching build number in the file name.  Top

Previously Foxhound would attempt to process any file named patch*.* on startup.

This has been fixed.

Bug Fix: The phrase "server-level Conns Blocked" has been removed from the Help for the Rollback Log and Uncommitted columns.  Top

There is no such statistic "server-level Conns Blocked" displayed by Foxhound.

This has been fixed.

Bug Fix: Several connection-level properties are no longer set to zero when SPs: ..N is displayed.  Top

Previously Foxhound would display several connection-level statistics as zero when it was unable to create or call the rroad_connection_properties procedure on the target database; i.e. when SPs: ..N was displayed on the Foxhound Monitor page.

This has been fixed.

Bug Fix: The Foxhound Purge process no longer deletes too many ping_log rows.  Top

Previously, when the Foxhound Purge process was deleting "orphan" rows for deleted sampling sessions, it may have also deleted ping_log rows belonging to sampling sessions that had not been deleted.

This has been fixed.

Bug Fix: Alert and AutoDrop emails have been changed to display properly in HTML browsers.  Top

The Foxhound Alert and AutoDrop emails have been completely redesigned and redeveloped to recognize the facts that HTML email bodies are not the same as HTML browser pages, and that Foxhound emails may be displayed on computers that don't have access to Foxhound.

In particular, the HTML sent via email has been vastly simplified, with very little actually included the email bodies and the rest delivered as email attachments.

Bug Fix: Bad input no longer causes exceptions like "Cannot convert '0000-01-00 00:00:**.870136' to a timestamp"  Top

Foxhound now bypasses individual invalid SQL Anywhere property values received from target databases, rather than raising exceptions and bypassing entire samples.

Bug Fix: HTML generated by Foxhound has been checked with validator.w3.org.  Top

You might still find a few "impurities" in Foxhound HTML but it's a lot cleaner than it used to be.

Bug Fix: The "Active Alerts" links at the bottom of the Foxhound Menu - Monitor tab now go to the correct locations.  Top

Previously, these "Active Alerts" links didn't go to the actual Alert entry.

Instead, they went to the row immediately below (earlier than) the Alert entries, so you had to scroll up to see the Alerts.

This has been fixed.

Bug Fix: All misleading references to "temporary file usage" have been changed to "temporary space usage".  Top

Even if there is no temporary file, as with an in-memory no write database, temporary space is allocated and used by the engine, and that's why these titles and descriptions had to change:
Alert #21. Temp space usage. The total temporary space used by all connections has been [1G] or larger for [10] or more recent samples.
Alert #22. Conn space file usage. At least one single connection has used [512M] or more of temporary space during [10] or more recent samples.
AutoDrop #4. Temp space usage. Automatically drop each connection that uses [512M] or more of temporary space for [10] or more samples.

Bug Fix: Incorrect row ordering of the Monitor and History connection sections has been fixed.  Top

Previously, the connection section sorting did not work properly for the following columns: Disk Reads, Disk Writes, Log Writes, Index Adds, Lookups and Full Index Comps.

This has been fixed.

Bug Fix: Misleading error messages have been removed from the Foxhound shortcuts.  Top

Previously the Start - Foxhound5 shortcuts sometimes displayed unnecessary error messages immediately followed by other messages telling you to ignore the first message, like this:
Ping database failed -- Database server not found. 
*** Ignore "Ping database failed -- Database server not found."

The underlying command files have now been changed to suppress both the error and "Ignore" messages:

Bug Fix: Incorrect GOTO statements and labels and other errors have been fixed in Foxhound command files.  Top

Some bad code has been fixed in these files:

$adhoc_query_foxhound5.bat                  2 Adhoc Query via ISQL 
$backup_foxhound5.bat                       3 Backup Database 
$backup_foxhound5_log.bat                   [scripts subfolder]

Bug Fix: The activation error message "Unsupported edition name GA" has been suppressed.  Top

Previously if something went awry during the Foxhound installation, the retry may have failed with this bogus error message:

Please provide the correct type of registration key.
[Unsupported activation expected [Unsupported edition name GA]] was expected, but a New Basic Key was provided instead.
If you purchased the wrong type of key, contact Breck.Carter@gmail.com

That error message has now been suppressed, and depending on what caused the first installation to fail, the retry may now work.

Bug Fix: A corrupted Previous back arrow image no longer appears on the connections section of the History page.  Top

Up and down arrow images are now displayed on the Previous and Next links at the top of the connections section on the History page, instead of special left and right arrow text characters.

Bug Fix: Several adhoc query views now exclude zombie rows belonging to deleted sampling sessions.  Top

Previously it was possible for five adhoc query views to select rows that belong to sampling sessions that no longer exist.

For performance reasons, rows in five child tables are not immediately deleted when the parent rroad_sampling_options rows are deleted, but are left to the purge process to delete.

These "zombie" rows should be excluded from adhoc query views, and WHERE EXISTS predicates have been added for that purpose:

CREATE VIEW sample_detail AS SELECT * FROM rroad_group_1_property_pivot
 WHERE EXISTS ( SELECT * 
                  FROM rroad_sampling_options 
                 WHERE rroad_sampling_options.sampling_id = rroad_group_1_property_pivot.sampling_id ) -- only include rows in sample sessions that have not been deleted
;

Bug Fix: The Help description of how SQL Anywhere connection numbers are assigned has been fixed.  Top

Previously the Help incorrectly stated that large connection numbers like 1000000065 were assigned to web services.

The Help has now been corrected to read "Small consecutive numbers 1 through 999,999,999 are assigned to external client server connections and to web service (CREATE SERVICE) connections."

Bug Fix: The Foxhound Menu now displays Stop instead of Cancel when the status is Ping OK.  Top

Previously, the Monitor column of the Monitor tab on the Foxhound Menu page displayed a "Cancel" button for a target database where sampling was enabled but the Status column was not "Sampling OK".

That didn't work properly for ping-only databases where the Status column is displayed as "Ping OK"; that indicates sampling is running OK but the word Cancel implies sampling is failing to start.

That behavior has changed to display "Cancel" only if the Status column was neither "Sampling OK" nor "Ping OK".

In other words, that button is now displayed as "Stop" instead of "Cancel" if the Status column is "Ping OK".

Bug Fix: A better method is used to fill the alert.sample_set_number and other similar adhoc view columns.  Top

Previously, the alert.sample_set_number column often didn't match any sample_detail row, so the [sample_detail columns] would be NULL in queries like this:

SELECT [alert columns],
       [sample_detail columns ]
  FROM alert
          LEFT OUTER JOIN sample_detail
                       ON sample_detail.sample_set_number = alert.sample_set_number;

A different technique is now used to set alert.sample_set_number to point to the most recent successful sample... if that can be determined.

The phrase "if that can be determined" means "this process doesn't always work"... but it usually does :)

This change has also been applied to the all_clear.sample_set_number and alert_cancelled.sample_set_number columns.

Bug Fix: The circular email setup links between the Monitor Options and Foxhound Options pages now preserve the target database context.  Top

Previously, when the "See Foxhound Options" and "See Monitor Options" links were used to jump back and forth between the two options pages, you would end up on the [Default Settings] instead of the original [settings for a specific target database].

This behavior encouraged mistakes to be made; i.e., you would start entering changes to the [Default Settings] instead of a specific target database.

This behavior has been changed so that, when possible, the sampling_id for the current target database is passed back and forth with the links.

Bug Fix: The current Monitor sampling id is included in all the menu links to the Foxhound Options and Monitor Options pages.  Top

Previously, most of the Foxhound menu links to the Foxhound Options and Monitor Options pages implicitly or explicitly passed zero sampling_id values which means [Default Settings].

This behavior encouraged mistakes to be made when the Monitor Options page is directly or indirectly reached; i.e., you would start entering changes to the [Default Settings] instead of a specific target database.

This behavior has been changed so that non-zero sampling_id values are explicitly passed by the Foxhound menu links to the Foxhound Options and Monitor Options pages.

Bug Fix: DEFAULT AUTOINCREMENT and GET_IDENTITY have been replaced by CREATE SEQUENCE and NEXTVAL for multiple tables.  Top

Foxhound code relies on primary key values that are unique across several different tables.

SQL Anywhere's DEFAULT AUTOINCREMENT and GET_IDENTITY features were never intended for that purpose, but that's what Foxhound used... and there have been problems including the dreaded SQLCODE -193 Primary key is not unique.

The CREATE SEQUENCE and NEXTVAL features are now used instead, and life is good :)

Bug Fix: HTML email lines are limited to 1000 characters including the CR and LF.  Top

For more information see this section of the IETF Internet Message Format standard.

Bug Fix: The new DBFOLDER environment variable is used instead of FOXHOUND5 in some command file contexts.  Top

This change was made to fix problems when Starting Multiple Copies of Foxhound.

The following table shows which command files now use which environment variables:

                                            %DBFOLDER%  %SERVER%  %FOXHOUND5%
                                               used?      used?      used?
------------------------------------------     -----      -----      -----
$backup_foxhound5.bat                           yes        yes     
$mini_restore_foxhound5.bat                     yes        yes     
$start_foxhound5_default_browser_debug.bat      yes        yes     
$start_foxhound5_default_browser.bat            yes        yes     
$start_foxhound5_engine.bat                     yes        yes     
$stop_foxhound5_engine.bat                                 yes
scripts$backup_foxhound5_log.bat                yes        
scripts\$run_most_recent_mini_restore.bat                             yes

Bug Fix: The new SERVER environment variable is used instead of the literal value 'foxhound5' in some command file contexts.  Top

This change was made to fix problems when Starting Multiple Copies of Foxhound.

The following table shows which command files now use which environment variables:

                                            %DBFOLDER%  %SERVER%  %FOXHOUND5%
                                               used?      used?      used?
------------------------------------------     -----      -----      -----
$backup_foxhound5.bat                           yes        yes     
$mini_restore_foxhound5.bat                     yes        yes     
$start_foxhound5_default_browser_debug.bat      yes        yes     
$start_foxhound5_default_browser.bat            yes        yes     
$start_foxhound5_engine.bat                     yes        yes     
$stop_foxhound5_engine.bat                                 yes
scripts$backup_foxhound5_log.bat                yes        
scripts\$run_most_recent_mini_restore.bat                             yes

Bug Fix: Foxhound now uses DB_PROPERTY ( 'FILE' ) instead of xp_getenv ( 'FOXHOUND5' ) to determine where foxhound5.db is located.  Top

This change was made to fix problems when Starting Multiple Copies of Foxhound.

The following table shows which command files now use which environment variables:

                                            %DBFOLDER%  %SERVER%  %FOXHOUND5%
                                               used?      used?      used?
------------------------------------------     -----      -----      -----
$backup_foxhound5.bat                           yes        yes     
$mini_restore_foxhound5.bat                     yes        yes     
$start_foxhound5_default_browser_debug.bat      yes        yes     
$start_foxhound5_default_browser.bat            yes        yes     
$start_foxhound5_engine.bat                     yes        yes     
$stop_foxhound5_engine.bat                                 yes
scripts$backup_foxhound5_log.bat                yes        
scripts\$run_most_recent_mini_restore.bat                             yes

Bug Fix: The Help no longer states that GRANT EXECUTE ON sa_disk_free_space is an alternative to GRANT MANAGE ANY DBSPACE.  Top

See the following section in Connecting to Target Databases:

Target SQL
Anywhere  
Version          Symptom                     Reason                  Solution(s)
 
16 and later     Foxhound doesn't display    Foxhound is not         GRANT MANAGE ANY DBSPACE
                 anything in Free Disk       allowed to call the       TO FOXHOUND;
                 Space Sys, Temp, Log,       sa_disk_free_space()
                 Other, and doesn't issue    procedure on the         
                 Alerts 5, 6, 7 or 8 about   target database.
                 low disk space.                                      

Bug Fix: The patch process can now handle a patch file larger than 999,999 bytes.  Top

Once upon a time (true story!) the Foxhound 4 patch process had to be patched before big patch could be delivered :)

Bug Fix: A bogus persistent idle second Foxhound connection is ignored when checking for "Duplicate Foxhound sampling sessions".  Top

When the Foxhound Administrator Authentication feature is enabled, and Administrator mode is in use, Foxhound may incorrectly open a persistent idle second connection to each target database.

This behavior is caused by a flaw in SQL Anywhere related to the sa_set_http_option ( 'SessionID', [new_session_id] ) function call and FORWARD TO operations.

Foxhound tries to ignore this bogus connection when checking for "Duplicate Foxhound sampling sessions".

For more information see The Story Of Bogus Duplicate Connections.

Bug Fix: The String tab on the Foxhound Menu page no longer ignores whatever a Read-Only user selects in the "Choose a connection string:" dropdown.  Top

The solution involved using the HTML INPUT READONLY attribute instead of DISABLED.

Bug Fix: The Name: and String: fields on the String tab of the Foxhound Menu page are no longer empty when displayed.  Top

The String tab of the Foxhound Menu page must always display a value, even if that value is "-- Enter a name --".

Bug Fix: The sampling id is now displayed in the top line of the Connection History page.  Top

The Connection History page doesn't display the target database in a drop-down list box because it makes no sense to switch from one target to another: Connections are specific to individual targets.

However, that's no reason not to display the sampling id, especially when several different Connection History pages are displayed.

Bug Fix: The target database drop-down list box ORDER BY has been changed to name and sampling id.  Top

The Monitor, Sample History and Monitor Options pages all display drop-down list boxes containing target database names.

Previously, a DSN and a connection string with the same name would be displayed with the DSN first; e.g.,

2 - Inventory16 (DSN)
1 - Inventory16

This has been changed to use the sampling id as the secondary ORDER BY value, after the name:

1 - Inventory16
2 - Inventory16 (DSN)

Bug Fix: Several changes have been made to an earlier version of the Administrator Authentication feature.  Top

Previously, a patch to Foxhound Version 4 build 4740 implemented an earlier version of the Administrator Authentication feature.

Here is an overview of the differences between the earlier version and the one included in Foxhound Version 5:

Bug Fix: The Monitor Options page allows complete control over the protocol (http, https) used in email bodies.  Top

Foxhound now allows control over whether http:// or https:// is used in HTML URLs for links embedded in Alert, AutoDrop and other emails.

If you don't provide an explicit value for the protocol on the Monitor Options page, Foxhound will choose a default based on what the browser is currently using, and this default is also displayed on the Monitor Options page.

For more information see Protocol://host:port for URLs in emails.

Bug Fix: The Monitor tab of the Foxhound Menu page only shows sample details when the Monitor Status is Sampling OK.  Top

The sample details columns on the Foxhound dashboard are only useful for target databases that are being actively sampled. \\\\\ xxx \\\\\

Previously, sample details from the most recent successful sample were shown even if those samples were very old, and even if sampling was turned off.

That has been changed to only display Flags, Heartbeat, Unsch Req, Conns, Blocked, CPU Time and Fav? values when the Monitor Status is Sampling OK.

Bug Fix: The Current Req Status is correctly set to Blocked by lock when the connection is blocked by a locked row.  Top

Previously the connection-level Current Req Status value may have been set to Blocked by mutex instead of Blocked by lock when the blocking connection also held a mutex lock in addition to the row lock that caused the block.

That has been fixed.

Bug Fix: The connection-level Throughput Req and Current Req Status are not displayed for SQL Anywhere 9 target databases.  Top

That's because the ReqCountActive and ReqStatus connection properties aren't supported for SQL Anywhere 9

Bug Fix: The ReqTiming statistics are not displayed for SQL Anywhere 9 target databases.  Top

That's because the ReqTime* connection properties aren't supported for SQL Anywhere 9:

Waiting Time, Busy, Wait, Idle 
    ReqTimeActive
    ReqTimeBlockContention
    ReqTimeBlockIO
    ReqTimeBlockLock
    ReqTimeUnscheduled

Bug Fix: The BlockedOn, LockName, LockObjectOID, LockObjectType, LockRowID and LockTableOID values are no longer limited to 100,000,000.  Top

Previously these BIGINT connection-level property values were set to zero if their input values were larger than 100,000,000.

Larger input values are now being accepted as-is because these properties are identifiers, not measurements, and they should not be checked for invalid "out of range" values.

Bug Fix: The History page no longer displays a "SQL error" message when the sampling session no longer exists.  Top

Previously, if you used the Foxhound menu page to delete a sampling session, then switched back to a stale History page showing that sampling session, you may have seen a SQL exception:

SQL error: Column 'selected_tab' in table 'rroad_session_options' cannot be NULL

The code's been changed to display this instead:

The requested Foxhound sampling session is no longer available, probably because it has been deleted.
Click here to display the Foxhound main menu.

EBF 1: New FAQ: How do I move the Foxhound database to a different location?  Top

See How do I move the Foxhound database to a different location?

EBF 1: Bug Fix: The Mini-Restore command files now properly handle missing foxhound5.db and foxhound5.log files.  Top

Previously the Mini-Restore script would incorrectly stop with a "foxhound5.db not found" error even though that file is not required or even expected to exist:

$mini_restore_foxhound5.bat         used by the shortcut Foxhound5 - 9 Mini-Restore

This script has been fixed.

EBF 1: New FAQ: 9 Mini-Restore ... foxhound5.db not found  Top

See Message: 9 Mini-Restore ... foxhound5.db not found

EBF 1: Bug Fix: Out of range property values are fixed by the Foxhound Monitor.  Top

Previously, out of range PROPERTY(), DB_PROPERTY() and CONNECTION_PROPERTY() values received from a target database would prevent the Foxhound Monitor from recording a sample. When this happened, Foxhound would record an exception that could be displayed in the Diagnostics section of the Foxhound Options page:

17876	2020-04-03 15:09:34.464 Full Build 5432a 1000040434 204.w5(204eh-d2) SQLCODE = -158, SQLSTATE = 22003, ERRORMSG() = Value 18446744073709548295 out of range for destination [ddd]
17877	2020-04-03 15:09:44.585 Full Build 5432a 1000040434 204.q6(204eh-c4) SQLCODE = -158, SQLSTATE = 22003, ERRORMSG() = Value 18446744073709551612 out of range for destination [ddd]
17890	2020-04-03 15:11:53.007 Full Build 5432a 1000040434 204.k1(204eh-e3) SQLCODE = -158, SQLSTATE = 22003, ERRORMSG() = Value '18446744073709551615' out of range for destination [ddd]

This has now been fixed; the Foxhound Monitor now fixes these out of range values by changing them to acceptable values; e.g., zero.

A separate bug fix ("Foxhound Monitor sampling stopped if CollectStatistics = No") prevents most "Value out of range for destination" errors; this bug fix takes care of anything else that slips through.

EBF 1: Bug Fix: Foxhound Monitor sampling stopped if CollectStatistics = No  Top

Foxhound cannot collect performance statistics if the target server CollectStatistics feature is turned off.

Previously, Foxhound would fail with a variety of error message; e.g., Value 18446744073709548295 out of range for destination.

Now, Foxhound stops sampling and displays these messages:

-- Foxhound requires target PROPERTY ( CollectStatistics ) = Yes; i.e., do not specify dbsrv -k - sampling stopped -- 
-- Foxhound requires target PROPERTY ( CollectStatistics ) = Yes; i.e., do not specify dbsrv -k - sampling stopped at -- 

This can happen when the target server is started with the -k option, or when CALL sa_server_option ( 'CollectStatistics', 'NO' ) is executed on the target database.

If this problem was caused by starting the target server with the -k option, stop and restart the server without -k.

If this problem was caused by a CALL sa_server_option ( 'CollectStatistics', 'NO' ) on a target database, run a CALL sa_server_option ( 'CollectStatistics', 'YES' ).

Then click on Start Sampling on the Foxhound Monitor page.

EBF 1: Behavior Change: FOXHOUND5UPGRADE=ALL does not set connection flags when upgrading Foxhound 4 or earlier databases, to save time.  Top

It takes a long time for all the samples in a large Foxhound 3 or 4 database to be upgraded to Version 5. There are two reasons for this: String de-duplication of existing Last Statement and Last Plan Text columns, and calculation of connection flags.

The default FOXHOUND5UPGRADE=ALL option has been changed to suppress the calculation of connection flags for old databases.

If you want the connection flags to be calculated for old databases, either upgrade with the new FOXHOUND5UPGRADE=ALLPLUS setting, or call the rroad_recalculate_flags() procedure after upgrading (see this section in the Help: Adhoc Queries - Recalculate Connection Flags).

EBF 1: Behavior Change: FOXHOUND5UPGRADE=ALLPLUS required to set connection flags when upgrading Foxhound 4 or earlier databases.  Top

It takes a long time for all the samples in a large Foxhound 3 or 4 database to be upgraded to Version 5. There are two reasons for this: String de-duplication of existing Last Statement and Last Plan Text columns, and calculation of connection flags.

In order to save time, the default FOXHOUND5UPGRADE=ALL option has been changed to suppress the calculation of connection flags.

The FOXHOUND5UPGRADE=ALLPLUS option has been added to do everything that ALL did, plus calculate the connection flags for old samples.

You can also the rroad_recalculate_flags() procedure after upgrading (see this section in the Help: Adhoc Queries - Recalculate Connection Flags)

EBF 1: Behavior Change: An Info message is recorded for each out of range SQL Anywhere property value.  Top

Each time an input SQL Anywhere property value is modified because it is out of range, an information diagnostic message is recorded to show the original value.

This is done for the first 500 out of range values encountered during one connection to the target database. After that, the values are still modified but messages are not recorded to avoid message storms. To start recording messages again, stop and start sampling for that target database.

These messages can be displayed in Foxhound Options - Diagnostics section.

The property names are identified by the "call location ..." numbers, and those are listed in this FAQ entry.

532a call location ... Info: BIGINT property value "...' out of range ... to ...
532b call location ... Info: DECIMAL property value "...' out of range ... to ...
532c call location ... Info: UNSIGNED BIGINT property value "...' out of range ... to ...

EBF 1: New FAQ: 532a call location ... Error: BIGINT property value "...' out of range ... to ...  Top

See 532a call location ... Error: BIGINT property value "...' out of range ... to ...

EBF 1: Bug Fix: All of the installed Foxhound Help files have been given the same file timestamp.  Top

Previously some of the Help files installed by the Foxhound setup didn't have the same file timestamp as all the other installed files.

This has been fixed so that all files installed by each Foxhound build have the same file timestamps.

EBF 1: Bug Fix: Repeated "Permission denied" messages suppressed when SPs: NNN.  Top

Previously, when the Foxhound Monitor displayed "SPs: NNN" because it was not allowed to create three special procedures on the target database, Foxhound would keep trying (and failing) to create those procedures.

Even though the Monitor was still able to connect to the target database and gather samples, it would record three separate diagnostic messages for each sample:

5 2020-05-08 15:00:50.540 Full Build 5432a 1000000092 701.e3(701eh3) Management of procedure rroad_engine_properties failed on ddd17_FOXHOUND: SQLCODE = -660, SQLSTATE = WO005, 
   ERRORMSG() = Server 'p001': [SAP][ODBC Driver][SQL Anywhere]Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement [1-ddd17_FOXHOUND]
6 2020-05-08 15:00:50.555 Full Build 5432a 1000000092 702.e3(702eh3) Management of procedure rroad_database_properties failed on ddd17_FOXHOUND: SQLCODE = -660, SQLSTATE = WO005,  
   ERRORMSG() = Server 'p001': [SAP][ODBC Driver][SQL Anywhere]Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement [1-ddd17_FOXHOUND]
7 2020-05-08 15:00:50.555 Full Build 5432a 1000000092 700.e3(700eh3) Management of procedure rroad_connection_properties failed on ddd17_FOXHOUND: SQLCODE = -660, SQLSTATE = WO005,  
   ERRORMSG() = Server 'p001': [SAP][ODBC Driver][SQL Anywhere]Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement [1-ddd17_FOXHOUND]
8 2020-05-08 15:01:00.138 Full Build 5432a 1000000092 701.e3(701eh3) Management of procedure rroad_engine_properties failed on ddd17_FOXHOUND: SQLCODE = -660, SQLSTATE = WO005,  
   ERRORMSG() = Server 'p001': [SAP][ODBC Driver][SQL Anywhere]Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement [1-ddd17_FOXHOUND]
9 2020-05-08 15:01:00.154 Full Build 5432a 1000000092 702.e3(702eh3) Management of procedure rroad_database_properties failed on ddd17_FOXHOUND: SQLCODE = -660, SQLSTATE = WO005,  
   ERRORMSG() = Server 'p001': [SAP][ODBC Driver][SQL Anywhere]Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement [1-ddd17_FOXHOUND]
10 2020-05-08 15:01:00.170 Full Build 5432a 1000000092 700.e3(700eh3) Management of procedure rroad_connection_properties failed on ddd17_FOXHOUND: SQLCODE = -660, SQLSTATE = WO005,  
   ERRORMSG() = Server 'p001': [SAP][ODBC Driver][SQL Anywhere]Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement [1-ddd17_FOXHOUND]

This has been fixed so that Foxhound only tries to create the special procedures once for each connection to the target database; that suppresses the repeated "Permission denied" messages.

This fix has the unintended consequence of slower SPs: NNN performance even after permission is granted for Foxhound to create the procedures. The workaround is to stop and restart sampling for that target database; that forces Foxhound to start a new connection and subsequently create the procedures.

EBF 1: Behavior Change: Empty or missing numeric performance statistics set to zero instead of NULL in sample_detail rows for successful samples.  Top

Previously several numeric performance statistics in the sample_detail table could be set to NULL when values could not be calculated. For example, sample_detail.interval_msec could be set to NULL for the first successful sample after sampling was stopped and restarted because no immediately previous successful sample existed to support the calculation of an interval.

This behavior has been changed to use zero values as part of an ongoing refactoring process to eliminate NULL values in successful Foxhound performance statistics.

EBF 1: Bug Fix: OFSS CPU statistics are correctly adjusted for connections making heavy use of intra-query parallelism.  Top

SQL Anywhere does not return meaningful CPU usage properties for parent and child connections making heavy use of intra-query parallelism. In particular, each child connection is assigned the total CPU usage for all child connections while the parent connection is assigned zero.

Previously the connection-level intra-query parallelism CPU usage statistics were adjusted for direct Foxhound target databases so the displayed amounts made sense, but a different (and incorrect) method was used for OFSS subject databases.

This has been fixed to use the same adjustments for Foxhound target and OFSS subject databases.

EBF 1: Bug Fix: Monitor sample calculations for OFSS subject databases changed to agree with direct Foxhound target databases.  Top

Previously there were significant errors in the way sample calculations were performed for offline (OFSS) subject databases.

This has been fixed to use the same calculations for OFSS subject and Foxhound target databases.

EBF 1: Bug Fix: The Block Reason and Locked Row Query fields are now displayed for OFSS subject databases.  Top

Previously the connection-level Block Reason and Locked Row Query fields were not captured or displayed for OFSS databases.

This has been fixed.

EBF 1: Behavior Change: Negative ApproximateCPUTime connection-level property values are ignored.  Top

Previously Foxhound reported negative CONNECTION_PROPERTY ApproximateCPUTime values as exceptions and changed them to zero.

These bogus values are coming from the SQL Anywhere target database server and nothing can be done to diagnose or fix the problem.

Foxhound's behavior has been changed to treat negative ApproximateCPUTime connection-level property values as zero without reporting any exceptions.

EBF 1: Usability: Connections section sorted in ascending order by "Current Req Status" in Alert #23 Blocked connections emails.  Top

Previously the connections sections for both Alert #23 and Alert #24 emails were sorted in ascending order by "Conns Blocked":

Alert #23. Blocked connections. The number of blocked connections has reached [10] or more during [10] or more recent samples.
Alert #24. Conn blocking others. At least one single connection has blocked [5] or more other connections during [10] or more recent samples.

That sort order makes sense for Alert #24 Conn blocking others because it brings the responsible connection to the top.

However, the sort order for Alert #23 Blocked connections has been changed to ascending order by "Current Req Status" to bring the "Blocked ..." connections to the top, as follows:

Current Req Status in ASC order
Blocked by lock
Blocked by mutex
Blocked by semaphore
Executing
Idle
Waiting for I/O
Waiting for shared resource
Waiting for thread

EBF 1: Behavior Change: Any errors and exceptions raised for sp_delete_file() calls are ignored.  Top

Foxhound now ignores any error or exception raised by a call to sp_delete_file() because there's no reason to raise an alarm when a silent deletion fails.

EBF 1: Bug Fix: SPs: NNN avoided by restarting sampling for updatable before readonly databases when Foxhound is restarted.  Top

When Foxhound is restarted, sampling is restarted for target databases that were being sampled before the upgrade started.

If the build number has changed because Foxhound was upgraded, Foxhound tries to replace the three "Foxhound SPs" (stored procedures) on the target databases with new versions:

rroad_connection_properties 
rroad_database_properties 
rroad_engine_properties 

Foxhound can't do this directly for readonly target databases because, well, they're not updatable. This includes High Availability secondary (mirror) databases and Read-Only Scale Out copy databases.

Previously this sometimes prevented "SPs: YYY" from being displayed on the Monitor and History pages; i.e., SPs: NNN or SPs: YNY or some other combination involving N would appear.

Foxhound has been changed to restart sampling for updatable databases before readonly databases so the Foxhound SPs will be replaced on the updatable primary database first. SQL Anywhere will then automatically send the new Foxhound SPs to the readonly secondary and copy databases before Foxhound connects to those databases.

When Foxhound does connect to the secondary and copy databases it won't have to update the Foxhound SPs because they're already up to date, and SPs: YYY will appear on the Monitor and History pages.

As part of this change, Foxhound waits 20 seconds before restarting sampling for the first readonly database after restarting sampling for one or more updatable databases. This was done to allow more time for the Foxhound SPs to be updated.

EBF 1: Bug Fix: Foxhound excludes offline (OFSS) subject databases when starting or stopping sampling sessions.  Top

Foxhound code which starts and stops sampling sessions as been modified to exclude offline (OFSS) subject databases.

The incorrect code didn't cause any problems (possibly because Foxhound doesn't connect directly to offline databases so it can't start or stop sampling) but it was worth fixing anyway.

EBF 1: Bug Fix: Foxhound no longer raises bogus exceptions "Item ... already exists" when sampling is started for duplicate target databases.  Top

Previously, Foxhound sometimes raised bogus "Item 'rroad_..._properties' already exists" exceptions when sampling was started for duplicate target databases; e.g., for a High Availability primary database and the corresponding partner database which are one and the same at the physical level.

15 2020-07-01 10:17:14.306 Full Build 5479a 1000000022 701.e3(701eh3) Management of procedure rroad_engine_properties failed on primary_demo: 
   SQLCODE = -660, SQLSTATE = WO005, ERRORMSG() = Server 'p003': [SAP][ODBC Driver][SQL Anywhere]Item 'rroad_engine_properties' already exists [5-primary_demo]
17 2020-07-01 10:17:14.405 Full Build 5479a 1000000021 702.e3(702eh3) Management of procedure rroad_database_properties failed on partner1_demo: 
   SQLCODE = -660, SQLSTATE = WO005, ERRORMSG() = Server 'p002': [SAP][ODBC Driver][SQL Anywhere]Item 'rroad_database_properties' already exists [3-partner1_demo]
19 2020-07-01 10:17:14.427 Full Build 5479a 1000000021 700.e3(700eh3) Management of procedure rroad_connection_properties failed on partner1_demo: 
   SQLCODE = -660, SQLSTATE = WO005, ERRORMSG() = Server 'p002': [SAP][ODBC Driver][SQL Anywhere]Item 'rroad_connection_properties' already exists [3-partner1_demo]

This prevented "SPs: YYY" from being displayed on the Monitor and History pages for one of the duplicate databases; i.e., SPs: NNN or SPs: YNY or some other combination involving N would appear.

This has been fixed for English target databases by ignoring exceptions where ERRORMSG() LIKE '%Item ''rroad%properties'' already exists%'.

This fix doesn't work for non-English target databases; the bogus exceptions will still be produced, and the workaround is to stop and start sampling so SPs: YYY is displayed on the Monitor and History pages.

EBF 1: Behavior Change: Any exception raised by a DROP rroad_xxx_properties stored procedure is ignored.  Top

Foxhound now ignores any exception raised by an attempt to DROP a Foxhound SPs: YYY stored procedure from a target database; e.g., Procedure 'rroad_database_properties' not found:

12 2020-07-02 12:53:33.261 Full Build 5480a 1000000031 702.d4(702eh3) Management of procedure rroad_database_properties failed on ddd17: SQLCODE = -660, SQLSTATE = WO005, 
   RRORMSG() = Server 'p005': [SAP][ODBC Driver][SQL Anywhere]Procedure 'rroad_database_properties' not found [7-ddd17]

This change was made because there's no reason to raise an alarm when a silent DROP fails.

EBF 1: Bug Fix: Foxhound automatically schedules a Mini-Backup to be performed after certain user actions.  Top

Previously, Foxhound did not schedule a Mini-Backup after the Start All Sampling button was pressed in the Monitor section of the Foxhound Menu page, so it was possible that sampling would not be correctly started after a subsequent Mini-Restore.

Also, Foxhound did not schedule a Mini-Backup after the following user actions were performed on the Monitor page:

This has been fixed so that Foxhound automatically schedules a Mini-Backup to be performed after any of those user actions. This ensures that Foxhound's behavior is consistent after a Mini-Restore.