Foxhound 2.0 FAQ
Foxhound 2.0 FAQ Home      Foxhound Home      RisingRoad      Breck.Carter@gmail.com     


How ... ? (general)

How can the Heartbeat time be larger than the Sample time?
How do I backup my Foxhound database?
How do I backup my Foxhound database on a regular basis?
How do I change the ADHOC password?
How do I change the Alerts criteria? (threshold settings, etcetera)
How do I display the Help again, after I have turned it off?
How do I figure out what went wrong during an installation?
How do I find the post_setup_trace.txt file?
How do I force Foxhound to use the 32-bit version of SQL Anywhere?
How do I get a copy of Foxhound?
How do I get a registration key for Foxhound?
How do I get an activation key for Foxhound?
How do I get an HTTP request log for Foxhound?
How do I get something to show up in the Last Statement column?
How do I get something to show up in the Total Waits, Waiting Time columns?
How do I get the Foxhound drop-down lists and buttons to display properly in Internet Explorer 9?
How do I get the new Global Database Id value to show up when I change it?
How do I get the new value of the FOXHOUND2 environment variable to show up after Foxhound is installed?
How do I get the "Send Test Email" button to respond?
How do I hide and show the Help for Foxhound?
How do I install a new version of Foxhound?
How do I install Foxhound?
How do I install the correct version of SQL Anywhere to run Foxhound?
How do I install version 12 of SQL Anywhere on the same machine used to run an earlier version of SQL Anywhere?
How do I keep the Foxhound database file from growing so large?
How do I keep the Foxhound log file from growing so large?
How do I make Foxhound web pages available on the internet?
How do I make the post-setup process run faster when a large Foxhound database is being upgraded?
How do I make the upgrade process run faster?
How do I measure latency and throughput?
How do I monitor a large number of databases?
How do I move Foxhound to a different disk drive?
How do I move the Foxhound transaction log to a different physical disk drive?
How do I move the SQL Anywhere temporary file for Foxhound to a different physical drive?
How do I protect the security of my target database?
How do I read the Foxhound exception messages?
How do I reduce the amount of space used by the Foxhound database file?
How do I reduce the amount of space used by the Foxhound transaction log?
How do I reinstall an earlier build of Foxhound?
How do I reinstall Foxhound?
How do I remove Foxhound from my system?
How do I rename a connection string on the String tab of the Foxhound Menu page?
How do I renew the Rental Edition of Foxhound?
How do I report unexpected errors and exceptions?
How do I restore the Foxhound database from a backup?
How do I restore the old build of Foxhound after installing a new build?
How do I run adhoc queries on the Foxhound database?
How do I run Foxhound as a service?
How do I run the Foxhound "unsetup" process?
How do I "Save As" an existing connection string to a new string with a different name on the String tab of the Foxhound Menu page?
How do I see Foxhound diagnostics, errors and exceptions?
How do I see the schema for adhoc reporting?
How do I set the environment variable used by Foxhound?
How do I set up Foxhound to monitor a large number of target databases?
How do I show the Help for Foxhound?
How do I shrink the size of the Foxhound database?
How do I specify the HTTPS transport-layer security for Foxhound?
How do I start 10 copies of Foxhound on a single computer?
How do I start Foxhound?
How do I start Foxhound in "debug mode"?
How do I start Foxhound in "safe mode"?
How do I start Foxhound with the 32-bit version of SQL Anywhere when both the 32-bit and 64-bit versions of SQL Anywhere are installed?
How do I start multiple copies of Foxhound on a single computer?
How do I stop and restart Foxhound?
How do I stop Foxhound?
How do I stop the "User Id:" and "Password:" from being redisplayed on the Foxhound Menu page?
How do I tell different databases apart in Alert emails?
How do I tell Foxhound to send Alert emails via the Gmail SMTP server smtp.gmail.com?
How do I tell Foxhound to use an HTTP port other than 80?
How do I tell if Foxhound has been started in safe mode?
How do I tell if Foxhound is running on the 32-bit or 64-bit version of SQL Anywhere?
How do I turn "safe mode" on and off?
How do I uninstall Foxhound?
How do I "unsetup" Foxhound?
How do I upgrade Foxhound from one edition to another?
How do I upgrade to a new version of Foxhound without losing any of my data?
How do I upgrade to the Basic Edition of Foxhound?
How do I upgrade to the Extended Edition of Foxhound?
How do the different FOXHOUND2UPGRADE values work?
How do the Foxhound backup shortcuts work?
How many target databases can one copy of Foxhound monitor?
How much overhead does the Foxhound connection add to the target database?

[ Top ]
Question: How do I backup my Foxhound database?

Answer:

Use one or both of the Foxhound shortcuts:

All Programs 
   - Foxhound2 
      - Tools 
         - Backup Foxhound Database 
         - Backup Foxhound Transaction Log

See also...
How do I backup my Foxhound database on a regular basis?
How do the Foxhound backup shortcuts work?
How do I restore the Foxhound database from a backup?


[ Top ]
Question: How do I backup my Foxhound database on a regular basis?

Answer: Here's how to set up a scheduled backup task on Windows XP:

1. Click on start - All Programs - Accessories - System Tools - Scheduled Tasks.

2. Doubleclick on Add Scheduled Task.

3. Proceed with the Scheduled Task Wizard, using the Browse button to specify this command to execute:

C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2\$backup_foxhound2.bat
Here's how to set up a scheduled backup task on Vista or Windows 7:
1. Click on start - All Programs - Accessories - System Tools - Task Scheduler.

2. Click on Action - Create Basic Task...

3. Proceed with the Create Basic Task Wizard, using the Browse button to specify this command to execute:

C:\ProgramData\RisingRoad\Foxhound2\$backup_foxhound2.bat
Once you have set up a scheduled task, you can click on right mouse - Run to make sure the backup task runs ok.

Here's where the backups are stored on Windows XP:

C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2\backup\generation1 (the oldest)
C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2\backup\generation2
C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2\backup\generation3 (the latest)
and on Vista and Windows 7:
C:\ProgramData\RisingRoad\Foxhound2\backup\generation1 (the oldest)
C:\ProgramData\RisingRoad\Foxhound2\backup\generation2
C:\ProgramData\RisingRoad\Foxhound2\backup\generation3 (the latest)


Caution: If you are using the Windows Vista or Windows 7 Task Scheduler to take regular backups of your Foxhound database using the technique described here, you should reboot your computer after installing a new version of Foxhound; see The $backup_foxhound2.bat file looked for a path specification in the FOXHOUND2 environment variable and it was empty.

Caution: If you are using the Windows Vista or Windows 7 Task Scheduler to take regular backups of your Foxhound database using the technique described here, be careful not to accidentally create two copies of the same scheduled task; see Why doesn't the Foxhound backup process create the generation2 subfolder?


See also...
How do I backup my Foxhound database?
How do the Foxhound backup shortcuts work?
Help - Introduction - Backup and Restore
The $backup_foxhound2.bat file looked for a path specification in the FOXHOUND2 environment variable and it was empty.
Why doesn't the Foxhound backup process create the generation2 subfolder?


[ Top ]
Question: How do I change the ADHOC password?

Answer:

Use dbisql to connect to the Foxhound database with the original password for the ADHOC user id...

-c "ENG=foxhound2;DBN=f;UID=ADHOC;PWD=SQL"
...then use the GRANT CONNECT command to change the password:
GRANT CONNECT TO ADHOC IDENTIFIED BY 'JqDCt64Kfy73';
Now you can use the new password to connect:
-c "ENG=foxhound2;DBN=f;UID=ADHOC;PWD=JqDCt64Kfy73"

See also...
How do I run adhoc queries on the Foxhound database?
How do I see the schema for adhoc reporting?


[ Top ]
Question: How do I change the Alerts criteria? (threshold settings, etcetera)

Answer: Alerts criteria are specific to each Monitor session.

Use the Monitor Options button on the Foxhound menu to open the Monitor Options page, and then (if necessary) pick a different target database from the drop-down list ans click on Switch Display to show the options for that page.

See also...
Help - Monitor Options


[ Top ]
Question: How do I display the Help again, after I have turned it off?

Answer:

Use Foxhound Options - Show Help to turn it back on, and then redisplay the page you were looking at.


[ Top ]
Question: How do I figure out what went wrong during an installation?

Answer: If the problem occurred during the post-setup part of the Foxhound installation, a complete record of everything that happened may be found in the post_setup_trace.txt file located here on Windows XP:

C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2\setup\post_setup_trace.txt
and here on Vista and Windows 7:
C:\ProgramData\RisingRoad\Foxhound2\setup\post_setup_trace.txt

See also...
How do I see Foxhound diagnostics, errors and exceptions?
How do I backup my Foxhound database?
How do the Foxhound backup shortcuts work?


[ Top ]
Question: How do I get a copy of Foxhound?

Answer: Foxhound Version 2 comes in two parts: An Installshield setup file and a registration key.

The setup file can be downloaded from the Foxhound home page.

A registration or activation key for a new copy of Foxhound Version 2 can be purchased as follows:

Rental Key $49.95

Basic Initial Activation Key $295.00

Extended Initial Activation Key $495.00

What are the differences among the different editions of Foxhound: Rental, Basic and Extended?

If you already have the Basic Edition of Foxhound Version 2 installed, you can purchase an upgrade key:

Basic To Extended Activation Upgrade Key $200.00

If you previously purchased Foxhound Version 1.2, you don't need a key for Version 2... it's free.


If you previously purchased Foxhound Version 1.0 or 1.1 you can upgrade for a reduced price:

Basic Version Upgrade Key 1.0 to 2.0 $200.00
Basic Version Upgrade Key 1.1 to 2.0 $100.00
Extended Version Upgrade Key 1.0 to 2.0 $300.00
Extended Version Upgrade Key 1.1 to 2.0 $200.00

For more information about editions, see What are the differences among the different editions of Foxhound: Rental, Basic and Extended?

For more information about activation keys, see What are the differences among all the activation keys?


It is also possible to obtain Foxhound via Purchase Order and Invoice; contact Breck.Carter@gmail.com.


See also...
How do I install Foxhound?
How do I reinstall Foxhound?
How do I upgrade Foxhound from one edition to another?
What is Foxhound?
What are the Foxhound system requirements?
What are the differences among the different editions of Foxhound: Rental, Basic and Extended?
What are the differences among all the activation keys?
What happens when a copy of Foxhound expires?


[ Top ]
Question: How do I get an HTTP request log for Foxhound?

Answer:

At the very least, you must add both the dbn=f and the log=filespec network protocol parameters to the dbsrv12 -xs http(...) parameter when starting Foxhound.

Don't forget the dbn=f parameter; it's not documented as being required, but if you leave it out nothing will be written to the log file.

Also, if you include the lf= network protocol parameter with embedded spaces, the whole http() parameter must be enclosed in double quotes: dbsrv12 -xs "http(...)"

Here is an excerpt from the C:\ProgramData\RisingRoad\Foxhound2\$start_foxhound2_engine.bat command file showing a modified -xs http(...) parameter:

"%SQLANY12%\%BIN%\dbspawn.exe"^
  -f^
  "%SQLANY12%\%BIN%\dbsrv12.exe"^
  -c 25p^
  -ch 50p^
  -cr-^
  -gk all^
  -gn 120^
  -gna 0^
  -n foxhound2^
  -o foxhound2_debug.txt^
  -oe foxhound2_debug_startup.txt^
  -on 1M^
  -qn^
  -sb 0^
  -x tcpip^
  -xd^
  -xs "http(dbn=f;log=C:\temp\foxhound_http_log.txt;lf=@T - @I - @U - @R - @L - @W - @E;lopt=all;lsize=1M;port=80;maxsize=0;to=600;kto=600)"^
  foxhound2.db^
  -n f

Here's what the resulting output file C:\temp\foxhound_http_log.txt looks like:

11/13 15:18:23.771 - ::1 - / - 200 OK - 597 - 1.143 - 
11/13 15:18:23.845 - ::1 - /rroad_help_frame?f=foxhound_menu - 200 OK - 18319 - 0.065 - 
11/13 15:18:23.882 - ::1 - /rroad_display_image?f=help.gif - 200 OK - 1261 - 0.010 - 
11/13 15:18:26.483 - ::1 - /rroad_menu - 200 OK - 43596 - 2.706 - 
11/13 15:18:26.498 - ::1 - /rroad_display_image?f=foxhound_100_75_feathered.JPG - 200 OK - 3027 - 0.001 - 
11/13 15:18:26.499 - ::1 - /rroad_display_image?f=help.gif - 200 OK - 1261 - 0.000 - 
11/13 15:18:28.195 - ::1 - /rroad_menu?zt=3&sf1=Automatic%20Refresh&z1=49751546-ba06-472d-84c1-7ec195de3ee2 - 200 OK - 43616 - 0.166 - 
11/13 15:18:28.209 - ::1 - /rroad_display_image?f=help.gif - 200 OK - 1261 - 0.000 - 
11/13 15:18:28.209 - ::1 - /rroad_display_image?f=foxhound_100_75_feathered.JPG - 200 OK - 3027 - 0.001 - 
11/13 15:18:29.399 - ::1 - /foxhound?t=rroad_monitor_database3&zi=4 - 200 OK - 618 - 0.010 - 
11/13 15:18:29.456 - ::1 - /rroad_help_frame?f=foxhound_monitor - 200 OK - 73640 - 0.025 - 
11/13 15:18:29.485 - ::1 - /rroad_display_image?f=help.gif - 200 OK - 1261 - 0.001 - 
11/13 15:18:36.627 - ::1 - /rroad_monitor_database3?zi=4 - 200 OK - 40843 - 7.197 - 
11/13 15:18:36.671 - ::1 - /rroad_display_image?f=help.gif - 200 OK - 1261 - 0.001 - 
11/13 15:18:38.449 - ::1 - /rroad_menu?zt=3&sf1=Automatic%20Refresh&z1=49751546-ba06-472d-84c1-7ec195de3ee2 - 200 OK - 43418 - 0.217 - 
11/13 15:18:38.464 - ::1 - /rroad_display_image?f=foxhound_100_75_feathered.JPG - 200 OK - 3027 - 0.001 - 
11/13 15:18:38.470 - ::1 - /rroad_display_image?f=help.gif - 200 OK - 1261 - 0.001 - 

See also...
SQL Anywhere 12 Help - DatabaseName (DBN) protocol option
SQL Anywhere 12 Help - LogFile (LOG) protocol option
SQL Anywhere 12 Help - LogFormat protocol (LF) option
SQL Anywhere 12 Help - LogOptions (LOPT) protocol option
SQL Anywhere 12 Help - LogMaxSize (LSIZE) protocol option


[ Top ]
Question: How do I get the Foxhound drop-down lists and buttons to display properly in Internet Explorer 9?

Answer:

If you're not willing to switch to Google Chrome, try this in Internet Explorer 9:

   Alt + Tools
      Internet Options
         Advanced tab 
            Scroll down to the "Browsing" section and
            uncheck "Enable visual styles on buttons and controls in webpages".

This tells Internet Explorer to stop trying to apply the Windows visual style to all web pages, and return to using the default Internet Explorer style.

See also...
Understanding Internet Explorer Advanced Options


[ Top ]
Question: How do I get the new Global Database Id value to show up when I change it?

Answer:

Stop and re-start the Foxhound Monitor sampling session to see the new value.


[ Top ]
Question: How do I get the "Send Test Email" button to respond?

Answer:

Try putting a valid value in the "SMTP Port:" field; use 25 for standard SMTP and 587 for smtp.gmail.com.


[ Top ]
Question: How do I get something to show up in the Last Statement column?

Answer: When starting a SQL Anywhere Version 8 or later target database, turn on the capturing of the most recently-prepared SQL statement for each connection:

  • Specify the -zl server command line option when starting the engine, or
  • call sa_server_option() while the database is running:

    CALL sa_server_option ( 'Remember_last_statement', 'ON'  );  -- Version 8
    CALL sa_server_option ( 'RememberLastStatement',   'ON'  );  -- Version 9
    CALL sa_server_option ( 'RememberLastStatement',   'YES' );  -- Version 10
    CALL sa_server_option ( 'RememberLastStatement',   'YES' );  -- Version 11
    CALL sa_server_option ( 'RememberLastStatement',   'YES' );  -- Version 12
If that doesn't work, try this (see the explanation below):
SET TEMPORARY OPTION MAX_CLIENT_STATEMENTS_CACHED = '0';
or this:
SET OPTION PUBLIC.MAX_CLIENT_STATEMENTS_CACHED = '0';

The Last Statement column may be empty after ISQL displays the result set from a SELECT statement, even if 'RememberLastStatement' is turned on.


Another reason the Last Statement column may be empty is that SQL Anywhere is reusing a previously-prepared SQL statement. This may happen even if the application code is using dynamic SQL; here is an example:

A PowerBuilder 10.5 application repeatedly executes the following embedded SQL statement written in PowerScript, using an ODBC connection to a SQL Anywhere 10.0.1 database:

UPDATE inventory
   SET item_count = item_count + 1
 WHERE item_id = :ll_pkey
 USING itr_sql;

Each execution provides a different value for the ll_pkey host variable (420001, 680001, 350001, ...) but otherwise the SQL remains the same. Nothing shows up in the LastStatement connection property even though dbsrv10 -zl (capture most recently-prepared SQL statement) is specified.

Request-level logging shows that the statement is prepared twice, but after the second PREPARE it starts doing CACHED_DROP_STMT and VALIDATE_STMT operations... no more DROP_STMT or PREPARE operations. This has the side-effect of causing the original SQL statement to no longer show up in the LastStatement connection property.

=,<,21,PREPARE,update inventory SET item_count =item_count + 1 WHERE item_id =? 
+1,>,21,PREPARE,65548
=,<,22,COMMIT
=,<,21,EXEC,65548
=,H,21,0,int,420001  
=,>,21,EXEC
+1,<,21,COMMIT
=,>.,21
+1,<,21,DROP_STMT,65548
=,>,21,DROP_STMT

=,<,21,PREPARE,update inventory SET item_count =item_count + 1 WHERE item_id =? 
=,>,21,PREPARE,65549
=,<,21,EXEC,65549
=,H,21,0,int,680001  
=,>,21,EXEC
=,<,21,COMMIT
=,>.,21
=,<,21,CACHED_DROP_STMT,65549

=,>,21
=,<,21,VALIDATE_STMT,65549
=,>,21
=,<,21,EXEC,65549
=,H,21,0,int,350001  
=,>,21,EXEC
=,<,21,COMMIT
+1,>.,21
=,<,21,CACHED_DROP_STMT,65549

=,>,21
=,<,21,VALIDATE_STMT,65549
=,>,21
=,<,21,EXEC,65549
+1,H,21,0,int,10001  
=,>,21,EXEC
=,<,21,COMMIT
+1,>.,21
=,<,21,CACHED_DROP_STMT,65549

... and so on.

This optimization isn't done by PowerBuilder, it's done by SQL Anywhere itself. It is a new feature in SQL Anywhere Version 10, called client statement caching, and it is done by these client interfaces: ODBC, OLE DB, ADO.NET, embedded SQL and the iAnywhere JDBC driver. It is not done for Open Client, jConnect, or HTTP connections.

A really crude workaround is to use PowerBuilder's own EXECUTE IMMEDIATE feature to stop this optimization, which in turn will force the SQL to show up in the LastStatement connection property.

A better workaround is to just turn off the client statement caching feature:

   SET TEMPORARY OPTION MAX_CLIENT_STATEMENTS_CACHED = '0'; -- 0 to 100, default 10

These workarounds have a dark side: the performance penalty that results from turning off the optimization. In the long run, it may be better to live without seeing Last Statement.

See also...
How do I get something to show up in the Total Waits, Waiting Time columns?


[ Top ]
Question: How do I get something to show up in the Total Waits, Waiting Time columns?

Answer: When starting a SQL Anywhere Version 9 or later target database, turn on the capturing of timing information for each connection:

  • Specify the -zt server command line option (SQL Anywhere 9 or later), or
  • call sa_server_option() to turn on 'RequestTiming' (SQL Anywhere 10 or later):

    CALL sa_server_option ( 'RequestTiming', 'YES' );

See also...
How do I get something to show up in the Last Statement column?


[ Top ]
Question: How do I hide and show the Help for Foxhound?

Answer:

The "Hide Help" / "Show Help" buttons have been removed from the Foxhound Menu and other pages in Foxhound 1.2.

Now you can use the "Show Help" checkbox on the Foxhound Options page to turn the Help display on and off.


[ Top ]
Question: How do I install a new version of Foxhound?

Answer: Here's how to install a new version of Foxhound while at the same time preserving some or all of your existing Foxhound data:

  1. Run the Foxhound "unsetup" process: start - All Programs - Foxhound2 - Tools - Unsetup Foxhound

    This will reverse the actions of the original Foxhound InstallShield setup process, but it will not remove the Foxhound database from your system; see Why is it called "unsetup" instead of "uninstall"?

  2. Run the new Installshield setup you have downloaded (see How do I install Foxhound?).

  3. The post-setup process will ask how much data you want to preserve; just press Enter for ALL data:
    
    

    See also How do the different FOXHOUND2UPGRADE values work?

  4. When you restart Foxhound you won't need to provide a registration key... unless you specified NOTHING in Step 3.


Caution: A successful installation overwrites existing files. It is your responsibility to make a backup of your existing Foxhound installation if you want one. The simplest way to make a complete backup is to stop the Foxhound engine, then make a copy of the entire Foxhound2 folder and subfolders... do this before installing the new version of Foxhound.

By default, Foxhound is installed in this location on Windows XP:

C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2
and on Vista and Windows 7 it is here:
C:\ProgramData\RisingRoad\Foxhound2

Note: Before overwriting the current foxhound.db and log files, the post-setup process will move them to the backup\previous_build subfolder under the locations listed above.

Caution: If you are running Foxhound as a service, stop the service before installing the new version. The installation process needs to stop and restart the existing Foxhound database, and it probably won't be able to do that if it's already running as a service.

Caution: If you are using the Windows Vista or Windows 7 Task Scheduler to take regular backups of your Foxhound database using the technique described here, you should reboot your computer after installing a new version of Foxhound; see The $backup_foxhound2.bat file looked for a path specification in the FOXHOUND2 environment variable and it was empty.


See also...
How do the different FOXHOUND2UPGRADE values work?
How do I install Foxhound?
How do I reinstall Foxhound?
Another version of this product is already installed.
Why is it called "unsetup" instead of "uninstall"?
How do I remove Foxhound from my system?
How do I backup my Foxhound database?
How do I backup my Foxhound database on a regular basis?
How do the Foxhound backup shortcuts work?
The $backup_foxhound2.bat file looked for a path specification in the FOXHOUND2 environment variable and it was empty.


[ Top ]
Question: How do I install Foxhound?

Answer:

Step 1: Download the Foxhound Installshield setup file from the Foxhound home page.

Step 2: Run Installshield setup file; it should display this dialog box when it starts up:


If you see this error message instead, you already have a copy of Foxhound installed and you have to run the Foxhound "unsetup" process before doing Step 2:

The unsetup process will not delete your Foxhound database. For more information see:

Another version of this product is already installed.

Why is it called "unsetup" instead of "uninstall"? and


Step 3: When the Installshield setup portion of the Foxhound installation is complete, this dialog box will appear; click on the Post-Setup button to continue the installation.

This part is critical; if you don't let the post-setup process run, Foxhound won't be fully installed:

Step 4: When the post-setup process finishes, press Enter to start the Foxhound engine:


See also...
How do I get a copy of Foxhound?
What is Foxhound?
What are the Foxhound system requirements?
How do I install a new version of Foxhound?
How do I reinstall Foxhound?
Another version of this product is already installed.
Why is it called "unsetup" instead of "uninstall"?
How do I remove Foxhound from my system?


[ Top ]
Question: How do I install the correct version of SQL Anywhere to run Foxhound?

Answer: The Foxhound system requirements states that "the Foxhound engine itself needs the 32-bit or 64-bit version of SQL Anywhere 12.0.1.3298 or later to run."

If you have a setup disk for SQL Anywhere 12.0.0, you will need to run it,

then download and run the "maintenance release" to 12.0.1,

then download and run an "EBF" for build 12.0.1.3298 or later.

If you have a setup disk for SQL Anywhere 12.0.1, you will need to run it,

then download and run an "EBF" for build 12.0.1.3298 or later.

Downloads may be found at downloads.sybase.com/swd/base.do?client=support:

- Change the fields to "Display All products in all months".

- Click on the "Go" button to refresh the display.

- Scroll down to the section "Platform: Windows x86/Windows x64".

- Scroll further to find the "SQL Anywhere - Maintenance Release, Upgrade of 12.0.0 to 12.0.1 14 Feb 2011"

- EBFs are listed above the maintenance release.

See also...
What are the Foxhound system requirements?
SQL Anywhere downloads
How do I install version 12 of SQL Anywhere on the same machine used to run an earlier version of SQL Anywhere?


[ Top ]
Question: How do I install version 12 of SQL Anywhere on the same machine used to run an earlier version of SQL Anywhere?

Answer: Follow the normal process for installing SQL Anywhere 12; version 12 of SQL Anywhere can coexist on the same computer as all earlier versions from 5.5 through 11.

There is one caveat, however: The SQL Anywhere 12 installation modifies the Windows PATH environment variable. If you have been relying on the PATH to determine where SQL Anywhere utilities such as dbbackup.exe and dbvalid.exe are located, your Windows command lines and batch files may start executing the version 12 copies of those utilities instead of the version you want. Either change the PATH variable, or modify your Windows command lines to explicitly specify the folder containing the utilities.

Each version of SQL Anywhere comes with its own environment variable that makes it easier to code commands; here's an example of how to use the SQLANY10 environment variable to execute the version 10 copy of dbvalid.exe:

   "%SQLANY10%\win32\dbvalid.exe" -c "ENG=ddd10;DBN=ddd10;UID=dba;PWD=sql" -d -o dbvalid_log_ddd10.txt

Here's a list of the environment variables for each version:

  • Version 5.5: SQLANY
  • Version 6: ASANY

  • Version 7: ASANY7

  • Version 8: ASANY8

  • Version 9: ASANY9

  • Version 10: SQLANY10

  • Version 11: SQLANY11

  • Version 12: SQLANY12

See also...
How do I install the correct version of SQL Anywhere to run Foxhound?
What are the Foxhound system requirements?


[ Top ]
Question: How do I keep the Foxhound database file from growing so large?

Answer: There are two ways you can limit the growth of the Foxhound database:

  • Use the Foxhound Options - Connection Sampling Threshold feature to limit the amount of connection data recorded in the database, and/or
  • use the Foxhound Options - Purge Process feature to delete old sample data on a regular basis.

See also...

Help - Foxhound Options - Connection Sampling Threshold
Help - Foxhound Options - Purge Process
How do I keep the Foxhound log file from growing so large?
How do I shrink the size of the Foxhound database?


[ Top ]
Question: How do I keep the Foxhound log file from growing so large?

Answer: The easiest way is to regularly use the Foxhound2 - Tools - Backup Foxhound Database shortcut which will backup and restart the active Foxhound transaction log file, keeping only the three most recent backups and discarding older copies.

You can automate the backup task; see How do I backup my Foxhound database on a regular basis?

Another way to limit the transaction log size is to specify the dbsrv12 -m option in the following command files, to tell SQL Anywhere to truncate the transaction log whenever a checkpoint is performed:

$backup_foxhound2.bat
$start_foxhound2_chrome.bat
$start_foxhound2_chrome_debug.bat
$start_foxhound2_engine.bat
$start_foxhound2_firefox.bat
$start_foxhound2_firefox_debug.bat
$start_foxhound2_ie.bat
$start_foxhound2_ie_debug.bat

By default, those command files are installed here on Windows XP:

C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2
and on Windows 7 they are here:
C:\ProgramData\RisingRoad\Foxhound2

See also...
Help - Introduction - Backup and Restore
Help - Introduction - Controlling Growth
How do the Foxhound backup shortcuts work?
How do I keep the Foxhound database file from growing so large?


[ Top ]
Question: How do I make Foxhound web pages available on the internet?

Answer:

By default the built-in Foxhound web server is internet-ready so if the computer running Foxhound is visible on the internet then so are the Foxhound web pages.

For example, if the Foxhound engine is started on a computer with IP address aaa.bbb.ccc.ddd, you can display the Foxhound pages on another computer by specifying the following URL in a browser:

http://aaa.bbb.ccc.ddd/


[ Top ]
Question: How do I make the post-setup process run faster when a large Foxhound database is being upgraded?

Answer:

Try using the SATMP environment variable to put the SQL Anywhere temporary file on a different physical disk drive.


[ Top ]
Question: How do I measure latency and throughput?

Answer:

Latency, also known as response time or access time, is a measure of how long it takes the the database to respond to a single request.

The "Heartbeat / Sample Times" columns are the primary measurements of latency displayed by Foxhound. The Heartbeat is the round-trip elapsed time for a single SELECT dummy_col FROM DUMMY statement issued by Foxhound to the target database; the time is rounded upwards to the nearest tenth of a second so the minimum displayed value is 0.1s.

The Sample time is the round-trip time it takes Foxhound to request and receive three sets of performance statistics from the target database. The workload varies with the number of connections on the target database so the sample time is an indication of how long a non-trivial transaction takes rather than a benchmark measurement.

The Heartbeat time is usually smaller than the Sample time, but it is possible for the Hearbeat time to be larger; here is an example:

                               Heartbeat,
                                Sample
           Samples  Interval     Times
May 16 11:00:29 PM   50.1s    39.7s / .9s

The heartbeat query and the sample gathering process are performed separately, one after another, and their elapsed times are calculated separately: the Sample time does not include the Heartbeat time. It is possible that the target database did not respond to the heartbeat query for a long time, but then did respond to the subsequent sample queries on a timely basis.

Throughput, also known as bandwidth, is a measure of how many requests the database can respond to per unit of time.

The following Foxhound Monitor columns provide an indication of throughput:

  • The "Req" column shows the rate at which the server started processing a new request or resumed processing an existing request during the preceding interval. In this context, a request is defined as an atomic unit of work performed for a connection.

  • The "Commits" column shows the approximate rate at which COMMIT operations were performed in the previous interval. This number is approximate because a connection may issue a commit and disconnect between two Foxhound samples, and that commit won't be counted in this rate. Depending on how the database workload is structured, the commit count may or may not be the same as the transaction count.

  • The "Bytes In / Out" columns show the rates at which data was received by and sent back by the server from and to client connections in the previous interval.

Low latency is a generally a good thing, but so is high throughput, and the trick is to achieve a balance between the two.


[ Top ]
Question: How do I move Foxhound to a different disk drive?

Answer:

The long answer follows, but first here is the short answer...

1. Run the Foxhound "unsetup" process. This will remove the shortcuts and some other settings and files but it won't delete the Foxhound database.

2. Install Foxhound to a different "Destination Folder".

3. Move these two files from the old location to the new one, overwriting the two files that were created in Step 2: foxhound2.db and foxhound2.log

4. Start Foxhound.


Here is the long answer...

1. Run the Foxhound "unsetup" process to remove the shortcuts, menu items and other stuff.

See How do I run the Foxhound "unsetup" process?

2. Start running the Foxhound InstallShield setup, and proceed until the Destination Folder window appears.

3. Click Change on the Destination Folder window.

4. See the Change Current Destination Folder window appear.

5. Change the Folder Name: field.

For example, change it from C:\ProgramData\RisingRoad\Foxhound2\ to D:\Foxhound2\

6. Click OK on the Change Current Destination Folder window.

7. Click Next on the Destination Folder window.

8. Proceed with the installation, including the "Post Setup" process.

9. If you let the installation start the Foxhound engine, shut it down. 1

0. Use the "set foxhound2" command in a command window to verify that the FOXHOUND2 environment variable has the correct value:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Breck>set foxhound2
FOXHOUND2=D:\Foxhound2\

C:\Users\Breck>
11. Sometimes, for some unknown reason the old value of the FOXHOUND2 environment variable remains in use for a while after the setup runs:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Breck>set foxhound2
FOXHOUND2=C:\ProgramData\RisingRoad\Foxhound2\

C:\Users\Breck>

12. If necessary, you can reboot to put the new value into effect, or you just use Control Panel to display the environment variables which seems to have the same effect:

Start 
  - Control Panel 
    - System 
      - Advanced system settings 
        - Environment Variables... 

At this point, you can just click OK to close the Environment Variable window, then OK to close the System Properties window, and the FOXHOUND2 environment variable should be set OK.

You can also go further and check the actual value:

Start 
  - Control Panel 
    - System 
      - Advanced system settings 
        - Environment Variables... 
          - System variables 
              - select FOXHOUND2 
              - verify that it contains D:\Foxhound2\
              - if not, click Edit... and fix it.

At this point, whether or not you had to fix the value, you should see the new value of the FOXHOUND2 environment variable if you repeat Step 10.

13. Before starting Foxhound, copy or move the following files from C:\ProgramData\RisingRoad\Foxhound2 to D:\Foxhound2:

foxhound2.db
foxhound2.log

14. Now you can start and use Foxhound. You will not have to activate Foxhound again.

See also...
How do I run the Foxhound "unsetup" process?
How do I install Foxhound?


[ Top ]
Question: How do I move the Foxhound transaction log to a different physical disk drive?

Answer:

  1. Shut down Foxhound if it is running.

  2. Create a folder for the transaction log on a different physical drive; e.g., G:\data\foxhound_log

  3. Move the foxhound2.log file to that folder. By default, foxhound2.log is installed in this location on Windows XP:
    C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2
    and on Vista and Windows 7 it is here:
    C:\ProgramData\RisingRoad\Foxhound2

  4. Run dblog.exe to modify the foxhound2.db file to point to the new location for the foxhound2.log file:

    PAUSE Have you shut down the database?
    
    "%SQLANY12%\Bin32\dblog.exe" -t "G:\data\foxhound_log\foxhound2.log" "%FOXHOUND2%\foxhound2.db"
    
    PAUSE
    

  5. Here's what the output looks like:

    C:\temp>PAUSE Have you shut down the database?
    Press any key to continue . . .
    
    C:\temp>"C:\Program Files\SQL Anywhere 12\Bin32\dblog.exe" -t "G:\data\foxhound_
    log\foxhound2.log" "C:\ProgramData\RisingRoad\Foxhound2\\foxhound2.db"
    SQL Anywhere Transaction Log Utility Version 12.0.1.3356
    "C:\ProgramData\RisingRoad\Foxhound2\\foxhound2.db" was using log file "foxhound
    1.log"
    "C:\ProgramData\RisingRoad\Foxhound2\\foxhound2.db" is using no log mirror file
    "C:\ProgramData\RisingRoad\Foxhound2\\foxhound2.db" is now using log file "G:\da
    ta\foxhound_log\foxhound2.log"
    Transaction log starting offset is 0011371032
    Transaction log current relative offset is 0474894106
    
    C:\temp>PAUSE
    Press any key to continue . . .
    

  6. Now you can start Foxhound again.


[ Top ]
Question: How do I move the SQL Anywhere temporary file for Foxhound to a different physical drive?

Answer:

One method is to set the SATMP environment variable to specify the folder where SQL Anywhere will put all its temporary files:

Control Panel in Windows XP...

  System 
      - Advanced tab 
         - Environment Variables button 
            - System variables 
               - New button
                  - New System Variable dialog box
                    Variable name:  SATMP
                    Variable value: F:\data\SQL_Anywhere_temp

Control Panel in Windows 7... 

   System 
      - Advanced system settings 
         - Advanced tab 
            - Environment Variables button 
               - System variables 
                  - New... button
                     - New System Variable dialog box
                       Variable name:  SATMP
                       Variable value: F:\data\SQL_Anywhere_temp
In a batch file...

   SET SATMP=F:\data\SQL_Anywhere_temp

Another method is to modify the dbsrv12.exe command line which starts Foxhound to include the -dt F:\data\SQL_Anywhere_temp option; this will only affect the temporary file associated with the Foxhound database:

"%SQLANY12%\Bin64\dbspawn.exe"^
  -f^
  "%SQLANY12%\Bin64\dbsrv12.exe"^
  -c 25p^
  -ch 50p^
  -cr-^
  -dt F:\data\SQL_Anywhere_temp^
  -gk all^
  -gn 120^
  -gna 0^
  -n foxhound2^
  -o foxhound2_debug.txt^
  -oe foxhound2_debug_startup.txt^
  -on 1M^
  -qn^
  -sb 0^
  -x tcpip^
  -xd^
  -xs https(identity="%SQLANY12%\Bin64\rsaserver.id";identity_password=test;port=443;maxsize=0;to=600;kto=600)^
  foxhound2.db^
  -n f
Here's the list of Foxhound command files which contain the dbsrv12.exe command:
$backup_foxhound2.bat
$start_foxhound2_chrome.bat
$start_foxhound2_chrome_debug.bat
$start_foxhound2_engine.bat
$start_foxhound2_firefox.bat
$start_foxhound2_firefox_debug.bat
$start_foxhound2_ie.bat
$start_foxhound2_ie_debug.bat

By default, the Foxhound command files are installed in this location on Windows XP:

C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2
and on Vista and Windows 7 it is here:
C:\ProgramData\RisingRoad\Foxhound2


[ Top ]
Question: How do I protect the security of my target database?

Answer:

One way to protect the security of your target database is to use the HTTPS protocol. For more information see How do I specify the HTTPS transport-layer security for Foxhound?

Another technique is to create a new user id on the target database with no privileges other than CONNECT, and use that user id for Foxhound to connect:

-- Run this command on the target database:

GRANT CONNECT TO FOXHOUND IDENTIFIED BY SQL;

-- Set up a connection string like this on the String tab of the Foxhound Menu:

Name:   ddd12
String: ENG=ddd12; DBN=ddd12; UID=FOXHOUND; PWD=SQL; DRIVER=SQL Anywhere 12; 

The Display Schema feature should work OK with the new "FOXHOUND" user id. The Monitor Database feature should also work, but Foxhound's own performance might suffer because Foxhound can't create the three high-performance procedures on the target database it needs to gather performance data efficiently; in this case the Monitor page will display "SPs are OK: NNN" instead of "SPs are OK: YYY".

You can install those three procedures on the target database yourself; for step-by-step instructions see Help - Introduction - Connecting to Target Databases.

See also...
How do I specify the HTTPS transport-layer security for Foxhound?
Help - Introduction - Connecting to Target Databases


[ Top ]
Question: How do I reinstall an earlier build of Foxhound?

Answer: The regular re-installation process will work for an earlier build. HOWEVER, the post-upgrade process will NOT copy the data from your current Foxhound database to the one that's being installed when the current installed build number is later than the one that's being installed. That means you lose your sample data and option settings, and it means you will have to activate Foxhound as if it were a brand new installation.

You can preserve some of your data if you plan ahead and take a backup of your current Foxhound database before installing a new version. Then, if you decide to re-install the old version, you can do a restore rather than run another installation process. You will lose all the sample data recorded while the new version was running, plus all the changes you made to option settings... but you will get your old data back and you won't have to activate Foxhound again.

See also...
How do I reinstall Foxhound?
How do I backup my Foxhound database?
How do I backup my Foxhound database on a regular basis?
How do the Foxhound backup shortcuts work?
How do I restore the Foxhound database from a backup?


[ Top ]
Question: How do I reinstall Foxhound?

Answer:


Note: A successful installation overwrites existing files. It is your responsibility to make a backup of your existing Foxhound installation if you want one. The simplest way to make a complete backup is to stop the Foxhound engine, then make a copy of the entire Foxhound2 folder and subfolders... do this BEFORE installing the new version of Foxhound.

By default, Foxhound is installed in this location on Windows XP:

C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2
and on Vista and Windows 7 it is here:
C:\ProgramData\RisingRoad\Foxhound2

To reinstall Foxhound, run the InstallShield setup.

What you do next depends on which dialog box appears...


If you see a dialog box that looks like this, you have to run the Foxhound "unsetup" process first and then run the Foxhound InstallShield setup as described below:

The unsetup process will not delete your Foxhound database; for more information see Another version of this product is already installed.


If you see this dialog box, you can proceed with the reinstallation:

When the InstallShield process reaches the end, click on the Post-Setup button to continue the installation.

This part is critical; if you don't let the post-setup process run, the old installation of Foxhound will not be replaced:

The post-setup process will ask how much data you want to preserve; just press Enter for ALL data:


See also How do the different FOXHOUND2UPGRADE values work?


If you see this dialog box, click on Remove to run the Foxhound "unsetup" process, and then run the Foxhound InstallShield setup as described above.

Do not click on Modify or Repair; they won't damage anything, but nothing will happen when you click on the Post-Setup button at the end of Modify or Repair process:


Caution: If you are using the Windows Vista or Windows 7 Task Scheduler to take regular backups of your Foxhound database using the technique described here, you should reboot your computer after installing a new version of Foxhound; see The $backup_foxhound2.bat file looked for a path specification in the FOXHOUND2 environment variable and it was empty.

See also...
How do the different FOXHOUND2UPGRADE values work?
How do I install Foxhound?
How do I install a new version of Foxhound?
Another version of this product is already installed.
Why is it called "unsetup" instead of "uninstall"?
How do I remove Foxhound from my system?
How do I backup my Foxhound database?
How do I backup my Foxhound database on a regular basis?
How do the Foxhound backup shortcuts work?
Help - Introduction - Backup and Restore
The $backup_foxhound2.bat file looked for a path specification in the FOXHOUND2 environment variable and it was empty.


[ Top ]
Question: How do I remove Foxhound from my system?

Answer: First, stop the Foxhound database if it's running.

You can do this by clicking on start - All Programs - Foxhound2 - Tools - Stop Foxhound Engine.

Second, run the Foxhound "unsetup" process. There are three ways to do this:

  • Click on start - All Programs - Foxhound2 - Tools - Unsetup Foxhound, or
  • use the Control Panel - Add or Remove Programs dialog to remove Foxhound Version 1, or

  • run this command: MsiExec.exe /X{B6CE87CB-2838-49AC-9E48-6E867BDD4B93}

Third, delete the Foxhound2 folder and all the files and subfolders.

By default, Foxhound is installed in this location on Windows XP:

C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2
and on Vista and Windows 7 it is here:
C:\ProgramData\RisingRoad\Foxhound2

See also...
How do I install Foxhound?
How do I install a new version of Foxhound?
How do I reinstall Foxhound?
Another version of this product is already installed.
Why is it called "unsetup" instead of "uninstall"?


[ Top ]
Question: How do I rename a connection string on the String tab of the Foxhound Menu page?

Answer:

There is no "Rename" button; you have to copy-and-save and then delete:

  1. Select the connection string with the old name on the String tab of the Foxhound Menu page.

  2. Type the new name in the "Name:" field.

  3. Click on the Save button.

  4. Select the connection string with the old name again.

  5. Click on the Delete button.


[ Top ]
Question: How do I report unexpected errors and exceptions?

Answer:

First, use the Foxhound Options - Diagnostics - Display Diagnostics button to see if there are any diagnostic messages associated with this problem. If so, use the Export Diagnostics button to copy the Foxhound diagnostic messages to a text file.

C:\temp\foxhound_diagnostics.txt
Then, run this adhoc query to determine if Foxhound has captured any diagnostic dumps associated with those diagnostic messages; see How do I run adhoc queries on the Foxhound database?
SELECT exception_id, 
       dump_id,  
       dump_inserted_at
  FROM exception_dump
 ORDER BY exception_id,
       dump_id;
If so, run this adhoc query to copy the diagnostic dumps to another text file:
SELECT *
  FROM exception_dump
 ORDER BY exception_id,
       dump_id;
OUTPUT TO 'C:\temp\foxhound_dumps.txt';
Finally, send both files to Breck.Carter@gmail.com

See also...
Help - Foxhound Options - Diagnostics
How do I run adhoc queries on the Foxhound database?


[ Top ]
Question: How do I restore the Foxhound database from a backup?

Answer:

A typical Foxhound backup consists of a full backup of the database and log files, plus zero or more subsequent incremental log backup files, created by running the following shortcuts:

Foxhound2
   - Tools
      - Backup Foxhound Database
      - Backup Foxhound Transaction Log

Here is a step-by-step example of a Foxhound restore (for a detailed description of the restore process see this article Which log backups are required to restore a database?):

1. Verify that the full and incremental backup files exist; in this example there is a full backup of the database and log plus two incremental log backup files:

C:\ProgramData\RisingRoad\Foxhound2\backup\generation3\foxhound2.db
C:\ProgramData\RisingRoad\Foxhound2\backup\generation3\foxhound2.log

C:\ProgramData\RisingRoad\Foxhound2\backup\generation3\logs\111124AA.log
C:\ProgramData\RisingRoad\Foxhound2\backup\generation3\logs\111124AB.log
Note that the latest backups are always placed in the "generation3" folder; earlier backups may be found in "generation2" and "generation1".

2. Copy the full backup database file from the "generation3" folder to the main "Foxhound2" folder:

From: C:\ProgramData\RisingRoad\Foxhound2\backup\generation3\foxhound2.db

To:   C:\ProgramData\RisingRoad\Foxhound2\foxhound2.db

3. Prepare a command file to apply all the transaction log files that exist in the "generation3" and "generation3\logs" folders:

"%SQLANY12%\bin64\dbsrv12.exe"^
  -gn 120^
  -o C:\ProgramData\RisingRoad\Foxhound2\foxhound2_debug.txt^
  -oe C:\ProgramData\RisingRoad\Foxhound2\foxhound2_debug_startup.txt^
  -on 1M^
  C:\ProgramData\RisingRoad\Foxhound2\foxhound2.db^
  -ad C:\ProgramData\RisingRoad\Foxhound2\backup\generation3
PAUSE
"%SQLANY12%\bin64\dbsrv12.exe"^
  -gn 120^
  -o C:\ProgramData\RisingRoad\Foxhound2\foxhound2_debug.txt^
  -oe C:\ProgramData\RisingRoad\Foxhound2\foxhound2_debug_startup.txt^
  -on 1M^
  C:\ProgramData\RisingRoad\Foxhound2\foxhound2.db^
  -ad C:\ProgramData\RisingRoad\Foxhound2\backup\generation3\logs
PAUSE

4. Run that command file; here are some excerpts from the foxhound2_debug.txt file:

I. 11/24 09:01:18. SQL Anywhere Network Server Version 12.0.1.3298 I. 11/24 09:01:18. Developer edition, not licensed for deployment.
...
I. 11/24 09:01:18. Starting database "foxhound2" (C:\ProgramData\RisingRoad\Foxhound2\foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:18. Database recovery in progress
I. 11/24 09:01:18.     Last checkpoint at Thu Nov 24 2011 08:29
I. 11/24 09:01:18.     Checkpoint log...
I. 11/24 09:01:19.     Transaction log: C:\ProgramData\RisingRoad\Foxhound2\backup\generation3\foxhound2.log...
I. 11/24 09:01:20.     Checkpointing...
I. 11/24 09:01:20. Starting checkpoint of "foxhound2" (foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:21. Finished checkpoint of "foxhound2" (foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:21. Recovery complete
I. 11/24 09:01:21. Database server shutdown automatically after log applied
I. 11/24 09:01:21. Database server stopped at Thu Nov 24 2011 09:01

I. 11/24 09:01:29. SQL Anywhere Network Server Version 12.0.1.3298 I. 11/24 09:01:29. Developer edition, not licensed for deployment.
...
I. 11/24 09:01:29. Starting database "foxhound2" (C:\ProgramData\RisingRoad\Foxhound2\foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:30. Database recovery in progress
I. 11/24 09:01:30.     Last checkpoint at Thu Nov 24 2011 09:01
I. 11/24 09:01:30.     Transaction log: C:\ProgramData\RisingRoad\Foxhound2\backup\generation3\logs\111124AA.log...
I. 11/24 09:01:32. Starting checkpoint of "foxhound2" (foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:32. Finished checkpoint of "foxhound2" (foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:32. Starting checkpoint of "foxhound2" (foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:33. Finished checkpoint of "foxhound2" (foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:33.     Transaction log: C:\ProgramData\RisingRoad\Foxhound2\backup\generation3\logs\111124AB.log...
I. 11/24 09:01:33. Starting checkpoint of "foxhound2" (foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:33. Finished checkpoint of "foxhound2" (foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:33.     Checkpointing...
I. 11/24 09:01:33. Starting checkpoint of "foxhound2" (foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:34. Finished checkpoint of "foxhound2" (foxhound2.db) at Thu Nov 24 2011 09:01
I. 11/24 09:01:34. Recovery complete
I. 11/24 09:01:34. Database server shutdown automatically after log applied
I. 11/24 09:01:34. Database server stopped at Thu Nov 24 2011 09:01

5. Start the Foxhound engine normally.

See also...
How do I backup my Foxhound database?
How do I backup my Foxhound database on a regular basis?
How do the Foxhound backup shortcuts work?


[ Top ]
Question: How do I restore the old build of Foxhound after installing a new build?

Answer: Foxhound's executable code is stored together with Foxhound data inside the Foxhound database, so "restoring the old build of Foxhound" is the same as "restoring the old Foxhound database".

The post-setup process creates a backup copy of your existing Foxhound database, and you can restore that copy by copying the foxhound.db and foxhound.log files as follows:

On Windows XP, copy the foxhound.db and foxhound.log files from:
C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2\backup\previous_build
to:
C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2

On Windows Vista or Windows 7, copy the foxhound.db and foxhound.log files from:

C:\ProgramData\RisingRoad\Foxhound2\backup\previous_build
to:
C:\ProgramData\RisingRoad\Foxhound2

See also...
How do I backup my Foxhound database?
How do the Foxhound backup shortcuts work?
What is the upgrade policy for installing new builds of Foxhound?


[ Top ]
Question: How do I run adhoc queries on the Foxhound database?

Answer:

You can use the following connection parameters with dbisql, or with any other query tool that can connect to a SQL Anywhere database:

-c "ENG=foxhound2;DBN=f;UID=ADHOC;PWD=SQL"

Here are the views you can SELECT from; the ones highlighted in bold may be the most useful:

alert  One row per alert.
alert_cancelled  One row per alert cancellation.
alert_union  A view which gathers data from the alert, alert_cancelled, all_clear and sampling_options views to make reporting easier.
alerts_criteria  One row containing the Monitor Options page settings for each sampling session, plus rows for 'Factory Settings' and 'Saved Defaults'.
all_clear  One row per alert all-clear.
build_number  A single-row table containing some attributes of the current installation of the Foxhound database.
connection_string  One row for each connection string displayed on the String tab of the Foxhound main menu.
data_upgrade_history  One row for each time the data in an existing Foxhound database has been copied into a new Foxhound database as part of the installation process.
email_failure  One row for each time Foxhound failed in an attempt to send an Alert or other email.
exception_diagnostic  One row for each time Foxhound detected an error or other important event. In some cases, a single underlying error may result in two or more rows in exception_diagnostic recorded by nested exception handlers in Foxhound.
exception_dump  One row for each time Foxhound stored extra internal diagnostic information associated with an event recorded in exception_diagnostic.
expiry_date  A single-row table containing some attributes of the current installation of the Foxhound database.
global_options  A single-row table containing some options affecting how Foxhound behaves.
monitor_sampler_control  A single-row table containing some information about current execution of the Foxhound database.
peaks  One row for each Foxhound Monitor target database, holding various peak values and links to the corresponding samples.
purge_run  One row for each run of the Foxhound database purge process, holding information about the progress of the current run and the work accomplished by previous runs.
run_characteristics  A single-row table containing some information about current execution of the Foxhound database.
sample_detail  One row for each sample recorded by the Foxhound Database Monitor, holding various additional server and database-level properties and computed columns.
sample_connection  One row for each connection recorded for each Foxhound Database Monitor sample, holding various connection-level properties and computed columns.
sample_header  One row for each sample recorded by the Foxhound Database Monitor, holding various server and database-level properties and computed columns.
sampling_options  One row for each Foxhound Monitor target database, holding various options affecting how the Monitor behaves and information about the current status of the Monitor session.
saved_activation_key  A single-row table containing data that makes it possible to install a new Beta copy of Foxhound as an upgrade to an existing Basic or Extended edition, and then install a later GA copy as an upgrade to the existing Beta copy and have it automatically re-activated as a Basic or Extended edition.
serial_number  A single-row table containing the Foxhound serial number as shown on the About page.
session_options  One row for each HTTP session established during the current execution of the Foxhound database.
used_activation_key  One row for each different key used in the Foxhound activation process.

See also...
How do I see the schema for adhoc reporting?
How do I change the ADHOC password?

Here are some examples of queries that display Foxhound Monitor data:

-----------------------------------------------------------------------------------------------------------
[Top]   alert_union, sampling_options
-----------------------------------------------------------------------------------------------------------
-- All active alerts.

SELECT IF sampling_options.selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF AS connection_type,
       sampling_options.selected_name AS target_database,
       alert_union.*
  FROM sampling_options
          INNER JOIN alert_union
          ON alert_union.sampling_id = sampling_options.sampling_id
 WHERE alert_union.record_type                 = 'Alert'
   AND alert_union.alert_is_clear_or_cancelled = 'N'
 ORDER BY alert_union.sampling_id ASC,
       alert_union.sample_set_number DESC;

-----------------------------------------------------------------------------------------------------------
[Top]   alert_union, sampling_options
-----------------------------------------------------------------------------------------------------------
-- Count active alerts for each target database.

SELECT IF sampling_options.selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF AS connection_type,
       sampling_options.selected_name AS target_database,
       COUNT(*)
  FROM sampling_options
          INNER JOIN alert_union
          ON alert_union.sampling_id = sampling_options.sampling_id
 WHERE alert_union.record_type                 = 'Alert'
   AND alert_union.alert_is_clear_or_cancelled = 'N'
 GROUP BY sampling_options.selected_tab,
       sampling_options.selected_name,
       alert_union.sampling_id
 ORDER BY alert_union.sampling_id ASC;

-----------------------------------------------------------------------------------------------------------
[Top]   alert_union, sampling_options
-----------------------------------------------------------------------------------------------------------
-- All Alert #1 activity for a particular target database.

SELECT IF sampling_options.selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF AS connection_type,
       sampling_options.selected_name AS target_database,
       alert_union.*
  FROM sampling_options
          INNER JOIN alert_union
          ON alert_union.sampling_id = sampling_options.sampling_id
 WHERE alert_union.sampling_id = 2
   AND alert_union.alert_number = 1
 ORDER BY alert_union.recorded_at ASC;

-----------------------------------------------------------------------------------------------------------
[Top]   purge_run
-----------------------------------------------------------------------------------------------------------
-- Show the most recent 100 purge runs.
SELECT TOP 100 * 
  FROM purge_run
 ORDER BY run_number DESC;

-----------------------------------------------------------------------------------------------------------
[Top]   purge_run
-----------------------------------------------------------------------------------------------------------
-- Show purge runs up to a particlar point in time, with some columns copied to the front of the SELECT.

SELECT TOP 100
       run_number,
       progress,
       started_at,
       DATEDIFF ( second, started_at, completed_at ) AS sec,
       is_complete,
       old_sample_set_delete_count,
       uninteresting_connections_delete_count,
       sample_purge_interval,
       uninteresting_connections_purge_interval,
       purge_speed,
       * 
  FROM purge_run
 WHERE started_at <= '2012-07-27 8:20 PM'
 ORDER BY run_number DESC;

-----------------------------------------------------------------------------------------------------------
[Top]   sampling_options
-----------------------------------------------------------------------------------------------------------
-- All sample sessions.

SELECT sampling_id,
       IF selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF AS connection_type,
       selected_name AS target_database,
       sampling_should_be_running, 
       connection_status_message, 
       last_sample_finished_at
  FROM sampling_options
 ORDER BY selected_name;

-----------------------------------------------------------------------------------------------------------
[Top]   sample_header, sampling_options
-----------------------------------------------------------------------------------------------------------
-- Sample header data for the most recent 10 samples in each sample session.

SELECT sample_header.row_order,
       IF sampling_options.selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF AS connection_type,
       sampling_options.selected_name AS target_database,
       sample_header.*
  FROM sampling_options
       INNER JOIN ( SELECT *,
                           RANK() OVER sample_window AS row_order
                      FROM sample_header
                    WINDOW sample_window AS (
                              PARTITION BY sampling_id
                              ORDER BY sample_set_number DESC ) 
                  ) AS sample_header
       ON sample_header.sampling_id = sampling_options.sampling_id
 WHERE sample_header.row_order <= 10
 ORDER BY sampling_options.selected_name,
       sample_header.sample_set_number DESC;

-----------------------------------------------------------------------------------------------------------
[Top]   sample_header, sample_detail, sampling_options
-----------------------------------------------------------------------------------------------------------
-- Sample header and detail data for the most recent 10 samples in each sample session.

SELECT sample_header.row_order,
       IF sampling_options.selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF AS connection_type,
       sampling_options.selected_name AS target_database,
       '     HEADER:',
       sample_header.*,
       '     DETAIL:',
       sample_detail.*
  FROM sampling_options
       INNER JOIN ( SELECT *,
                           RANK() OVER sample_window AS row_order
                      FROM sample_header
                    WINDOW sample_window AS (
                              PARTITION BY sampling_id
                              ORDER BY sample_set_number DESC ) 
                  ) AS sample_header
       ON sample_header.sampling_id = sampling_options.sampling_id
       INNER JOIN sample_detail
       ON sample_detail.sample_set_number = sample_header.sample_set_number
 WHERE sample_header.row_order <= 10
 ORDER BY sampling_options.selected_name,
       sample_header.sample_set_number DESC;

-----------------------------------------------------------------------------------------------------------
[Top]   sample_header, sample_detail, sample_connection, sampling_options
-----------------------------------------------------------------------------------------------------------
-- Sample header, detail and connection data for the most recent 10 samples in each sample session.

SELECT sample_header.row_order,
       IF sampling_options.selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF AS connection_type,
       sampling_options.selected_name AS target_database,
       '     HEADER:',
       sample_header.*,
       '     DETAIL:',
       sample_detail.*,
       '     CONNECTION:',
       sample_connection.*
  FROM sampling_options
       INNER JOIN ( SELECT *,
                           RANK() OVER sample_window AS row_order
                      FROM sample_header
                    WINDOW sample_window AS (
                              PARTITION BY sampling_id
                              ORDER BY sample_set_number DESC ) 
                  ) AS sample_header
       ON sample_header.sampling_id = sampling_options.sampling_id
       INNER JOIN sample_detail
       ON sample_detail.sample_set_number = sample_header.sample_set_number
       LEFT OUTER JOIN sample_connection
       ON sample_connection.sample_set_number = sample_detail.sample_set_number
 WHERE sample_header.row_order <= 10
 ORDER BY sampling_options.selected_name,
       sample_header.sample_set_number DESC,
       sample_connection.connection_number;

-----------------------------------------------------------------------------------------------------------
[Top]   sample_detail
-----------------------------------------------------------------------------------------------------------
-- Sample detail data for selected samples from one target database.
--    [1,438407]
--    [1,438406]
--    [1,1497]
--    [1,89]
--    [1,88]

SELECT sample_detail.*
  FROM sample_detail
 WHERE sample_detail.sampling_id = 1
   AND sample_detail.sample_set_number IN ( 88, 89, 1497, 438406, 438407 )
 ORDER BY sample_detail.sample_set_number DESC;

-----------------------------------------------------------------------------------------------------------
[Top]   sample_header, sample_detail, sample_connection, sampling_options
-----------------------------------------------------------------------------------------------------------
-- Sample header, detail and connection data for selected samples from one target database.
--    [1,438407]
--    [1,438406]
--    [1,1497]
--    [1,89]
--    [1,88]

SELECT IF sampling_options.selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF AS connection_type,
       sampling_options.selected_name AS target_database,
       '     HEADER:',
       sample_header.*,
       '     DETAIL:',
       sample_detail.*,
       '     CONNECTION:',
       sample_connection.*
  FROM sampling_options
       INNER JOIN sample_header
       ON sample_header.sampling_id = sampling_options.sampling_id
       INNER JOIN sample_detail
       ON sample_detail.sample_set_number = sample_header.sample_set_number
       LEFT OUTER JOIN sample_connection
       ON sample_connection.sample_set_number = sample_detail.sample_set_number
 WHERE sample_header.sampling_id = 1
   AND sample_header.sample_set_number IN ( 88, 89, 1497, 438406, 438407 )
 ORDER BY sample_header.sample_set_number DESC,
       sample_connection.connection_number;

-----------------------------------------------------------------------------------------------------------
[Top]   sample_connection, sample_header
-----------------------------------------------------------------------------------------------------------
-- Recent blocked connections.

SELECT TOP 1000
       sample_connection.sampling_id,
       IF sampling_options.selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF AS connection_type,
       sampling_options.selected_name AS target_database,
       sample_connection.sample_set_number,
       sample_header.sample_finished_at           AS sample_recorded_at,
       sample_connection.connection_number        AS blocked_connection_number,
       sample_connection.BlockedOn                AS blocked_by_connection_number,
       sample_connection.LastReqTime,
       sample_connection.LastStatement,
       sample_connection.blocker_reason           AS reason_for_block,
       sample_connection.blocker_owner_name       AS owner_name,
       sample_connection.blocker_table_name       AS table_name,
       sample_connection.blocker_row_identifier   AS row_identifier
  FROM sampling_options
          INNER JOIN sample_connection
                  ON sample_connection.sampling_id = sampling_options.sampling_id
          INNER JOIN sample_header
                  ON sample_header.sampling_id       = sampling_options.sampling_id
                 AND sample_header.sample_set_number = sample_connection.sample_set_number
 WHERE sample_connection.BlockedOn <> 0
 ORDER BY sample_connection.sample_set_number DESC,
       sample_connection.connection_number ASC;

-----------------------------------------------------------------------------------------------------------
[Top]   sample_connection, sample_header, sampling_options
-----------------------------------------------------------------------------------------------------------
-- Long-running queries.
--    Each connection is uniquely identified by sampling_id, connection_number and LoginTime.
--    Each query is uniquely identified by sampling_id, connection_number, LoginTime and LastReqTime.

WITH long_running_query AS
   ( SELECT sample_connection.sampling_id               AS sampling_id, 
            sample_connection.connection_number         AS connection_number, 
            sample_connection.LoginTime                 AS LoginTime,
            sample_connection.LastReqTime               AS LastReqTime,
            MIN ( sample_connection.sample_set_number ) AS from_sample_set_number, 
            MAX ( sample_connection.sample_set_number ) AS to_sample_set_number 
       FROM sample_connection
      WHERE sample_connection.ReqStatus = 'Executing'
        AND sample_connection.time_since_last_request > 0
        AND TRIM ( COALESCE ( sample_connection.LastStatement, '' ) ) <> ''
      GROUP BY sample_connection.sampling_id, 
            sample_connection.connection_number, 
            sample_connection.LoginTime,
            sample_connection.LastReqTime
     HAVING from_sample_set_number <> to_sample_set_number )
SELECT long_running_query.sampling_id                AS sampling_id,
       IF sampling_options.selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF                                        AS connection_type,
       sampling_options.selected_name                AS target_database,
       long_running_query.connection_number          AS connection_number, 
       long_running_query.to_sample_set_number       AS sample_set_number,
       long_running_query.LoginTime                  AS LoginTime,
       long_running_query.LastReqTime                AS started_at,
       sample_header.sample_finished_at              AS recorded_at,
       CAST ( sample_connection.time_since_last_request / 1000 AS BIGINT )  AS elapsed_seconds,
       sample_connection.LastStatement               AS LastStatement 
  FROM sampling_options
          INNER JOIN long_running_query
                  ON long_running_query.sampling_id = sampling_options.sampling_id
          INNER JOIN sample_header
                  ON sample_header.sampling_id       = sampling_options.sampling_id
                 AND sample_header.sample_set_number = long_running_query.to_sample_set_number
          INNER JOIN sample_connection
                  ON sample_connection.sample_set_number = long_running_query.to_sample_set_number 
                 AND sample_connection.connection_number = long_running_query.connection_number;

-----------------------------------------------------------------------------------------------------------
[Top]   sample_detail, sampling_options
-----------------------------------------------------------------------------------------------------------
-- Latency and throughput history plus 100-sample moving averages.

SELECT IF sampling_options.selected_tab = 1 
          THEN 'DSN' 
          ELSE 'String' 
       END IF AS connection_type,
       sampling_options.selected_name AS target_database,
       sample_detail.sample_set_number,
       sample_detail.sample_recorded_at,
       ( sample_detail.interval_msec / 1000.0 )                AS interval_sec,
       sample_detail.ConnCount                                 AS connections,
       sample_detail.interval_CPU_percent                      AS CPU_percent,
       ( sample_detail.canarian_query_elapsed_msec / 1000.0 )  AS heartbeat_sec,
       ( sample_detail.sample_elapsed_msec         / 1000.0 )  AS sample_sec,
       sample_detail.interval_Req    / interval_sec            AS requests_per_sec,
       sample_detail.interval_Commit / interval_sec            AS commits_per_sec,
       ( sample_detail.interval_BytesReceived 
         + sample_detail.interval_BytesSent ) / interval_sec   AS bytes_per_sec,   
       AVG ( connections )      OVER moving_window             AS avg_connections,
       AVG ( CPU_percent )      OVER moving_window             AS avg_CPU_percent,
       AVG ( heartbeat_sec )    OVER moving_window             AS avg_heartbeat_sec,
       AVG ( sample_sec )       OVER moving_window             AS avg_sample_sec, 
       AVG ( requests_per_sec ) OVER moving_window             AS avg_requests_per_sec, 
       AVG ( commits_per_sec )  OVER moving_window             AS avg_commits_per_sec  
  FROM sampling_options
       INNER JOIN sample_detail
          ON sample_detail.sampling_id = sampling_options.sampling_id
 WHERE sample_detail.sampling_id = 4
   AND sample_detail.sample_lost = 'N'
   AND sample_detail.sample_recorded_at BETWEEN 'Feb 21 1:14:49 PM' AND 'Feb 21 3:32:34 PM'
WINDOW moving_window AS
          ( ORDER BY sample_detail.sample_set_number DESC
            ROWS BETWEEN CURRENT ROW AND 99 FOLLOWING )
 ORDER BY sample_detail.sample_set_number DESC;
-----------------------------------------------------------------------------------------------------------

See also...
How do I see the schema for adhoc reporting?
How do I change the ADHOC password?


[ Top ]
Question: How do I run Foxhound as a service?

Answer:

See Help - Introduction - Running Foxhound as a Service.


[ Top ]
Question: How do I run the Foxhound "unsetup" process?

Answer: There are three ways to run the Foxhound "unsetup" process:

  • Click on start - All Programs - Foxhound2 - Tools - Unsetup Foxhound, or
  • use the Control Panel - Add or Remove Programs dialog to remove Foxhound Version 1, or

  • run this command: MsiExec.exe /X{B6CE87CB-2838-49AC-9E48-6E867BDD4B93}

See also...
Why is it called "unsetup" instead of "uninstall"?
How do I remove Foxhound from my system?


[ Top ]
Question: How do I "Save As" an existing connection string to a new string with a different name on the String tab of the Foxhound Menu page?

Answer:

There is no "Save As" button; you have to change the name and then save:

  1. Select the existing connection string on the String tab of the Foxhound Menu page.

  2. Type the new name in the "Name:" field.

  3. Click on the Save button.


[ Top ]
Question: How do I see Foxhound diagnostics, errors and exceptions?

Answer:

You can use Foxhound Options - Display Diagnostics to see messages recorded by Foxhound itself.

Here is an example of a Foxhound exception message with an explanation of the different sections:

exception id: 1, 2, 3...
|   date and time of the exception
|   |                       Foxhound build number
|   |                       |                Foxhound connection number that detected the exception
|   |                       |                |          exception location within Foxhound code
|   |                       |                |          |              diagnostic text: variable format              target database id and name
|   |                       |                |          |              |                                                                    |
67  2011-11-11 11:49:08.768 Full Build 4013a 1000009471 701.a3(701eh1) Permission denied: Cannot CREATE PROCEDURE rroad_engine_properties. [5-ddd12]

Also, you can use one of these "debug" shortcuts to start Foxhound

All Programs - Foxhound1 - Tools - Start Foxhound via Chrome - debug

All Programs - Foxhound1 - Tools - Start Foxhound via Firefox - debug

All Programs - Foxhound1 - Tools - Start Foxhound via IE - debug
so that messages produced by the SQL Anywhere engine will be captured to this file on Windows XP:
C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2\foxhound2_debug.txt
and this file on Vista and Windows 7:
C:\ProgramData\RisingRoad\Foxhound2\foxhound2_debug.txt

See also...
How do I report unexpected errors and exceptions?
How do I start Foxhound in "debug mode"?
How do I start Foxhound in "safe mode"?
How do I figure out what went wrong during an installation?


[ Top ]
Question: How do I see the schema for adhoc reporting?

Answer:

A separate empty database file adhoc_schema1.db is delivered with Foxhound, containing all the views and underlying tables that are available for adhoc reporting.

You can view these tables and views by selecting this connection string on the String tab of the Foxhound menu

Adhoc Schema - autostart and connect
and clicking Display Schema.

For the record (and in case you delete that connection string), here's how to auto-start and connect to this database:

ENG=adhoc_schema1; DBN=adhoc_schema1; UID=DBA; PWD=sql; DRIVER=SQL Anywhere 12; 
START=C:\Program Files\SQL Anywhere 12\Bin32\dbeng12.exe; 
DBF=C:\ProgramData\RisingRoad\Foxhound2\adhoc_schema1.db; AUTOSTART=YES;  

See also...
How do I run adhoc queries on the Foxhound database?
How do I see the schema for adhoc reporting?
How do I change the ADHOC password?


[ Top ]
Question: How do I set up Foxhound to monitor a large number of target databases?

Answer:

See Help - Monitor Options - Manage Multiple Monitor Sessions.


[ Top ]
Question: How do I shrink the size of the Foxhound database?

Answer:

One method is to use the Foxhound upgrade process to purge old sample data by reinstalling Foxhound and specifying FOXHOUND2UPGRADE = yyyymmdd or nnn when the prompt appears during the post-setup process. For more information see

How do I reinstall Foxhound?
and
How do the different FOXHOUND2UPGRADE values work?

Even if you use a very old value of FOXHOUND2UPGRADE = yyyymmdd or a very large value of FOXHOUND2UPGRADE = nnn to copy all of the sample data, the Foxhound database will probably shrink somewhat because the reinstallation process removes free space.

Another method is to let the purge process delete old and/or uninteresting sample data and then reinstall Foxhound as follows:

  • Use the Foxhound Options - Purge Process feature to speed up the deletion of old sample data.
  • Wait until the background purge process has had enough time to increase the amount of free space to the level you want; for example, from 2% to 75%.

    This may take a few hours or even days if you have a lot of data to delete; watch the amount of free space displayed by the Foxhound Options - Purge Process feature.

  • Reinstall Foxhound following these instructions.

    This process will create and reload a new Foxhhound database with just the remaining data and much less free space.

See also...
How do I reinstall Foxhound?
How do the different FOXHOUND2UPGRADE values work?
Help - Foxhound Options - Purge Process
How do I keep the Foxhound database file from growing so large?
How do I keep the Foxhound log file from growing so large?


[ Top ]
Question: How do I specify the HTTPS transport-layer security for Foxhound?

Answer: You can modify the Foxhound startup command line to specify RSA encryption and the HTTPS protocol as follows:

  • Obtain an identity certificate and the associated private key for your Foxhound installation.
  • Store the identity certificate file in a known location.

  • Change the -xs option to specify https on the dbsrv12.exe command line used to start Foxhound.

    Specify the identity certificate file and private key in the -xs https identity= and identity_password= parameters.

    Note that the default port for HTTPS is 443.

Here is an example of a dbsrv12.exe command line modified to allow only HTTPS access to Foxhound data using the sample certificate that comes with SQL Anywhere 12:

"%SQLANY12%\Bin64\dbspawn.exe"^
  -f^
  "%SQLANY12%\Bin64\dbsrv12.exe"^
  -c 25p^
  -ch 50p^
  -cr-^
  -gk all^
  -gn 120^
  -gna 0^
  -n foxhound2^
  -o foxhound2_debug.txt^
  -oe foxhound2_debug_startup.txt^
  -on 1M^
  -qn^
  -sb 0^
  -x tcpip^
  -xd^
  -xs https(identity="%SQLANY12%\Bin64\rsaserver.id";identity_password=test;port=443;maxsize=0;to=600;kto=600)^
  foxhound2.db^
  -n f

If you want to allow both HTTP and HTTPS access, specify both as follows:

  -xs http(port=80;maxsize=0;to=600;kto=600),https(identity="%SQLANY12%\Bin64\rsaserver.id";identity_password=test;port=443;maxsize=0;to=600;kto=600)^
Here's the list of Foxhound command files which contain the dbsrv12.exe -xs option:
$backup_foxhound2.bat
$start_foxhound2_chrome.bat
$start_foxhound2_chrome_debug.bat
$start_foxhound2_engine.bat
$start_foxhound2_firefox.bat
$start_foxhound2_firefox_debug.bat
$start_foxhound2_ie.bat
$start_foxhound2_ie_debug.bat

By default, Foxhound is installed in this location on Windows XP:

C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2
and on Vista and Windows 7 it is here:
C:\ProgramData\RisingRoad\Foxhound2

See also...
How do I tell Foxhound to use an HTTP port other than 80?


[ Top ]
Question: How do I start Foxhound?

Answer: Starting Foxhound is a two-step process: Starting the Foxhound database in a SQL Anywhere engine, and connecting to the Foxhound HTTP server from your browser.

Method 1: The following desktop shortcuts do both steps:

All Programs - Foxhound1 - Start Foxhound via Chrome

All Programs - Foxhound1 - Start Foxhound via Firefox

All Programs - Foxhound1 - Start Foxhound via IE
The shortcuts above work even if the SQL Anywhere engine is already running; they just ignore the error message produced because the engine's already running, and they press on connecting to Foxhound from the browser.

Method 2: The following "debug" versions of those shortcuts do exactly the same thing, except that (a) they stop the Foxhound database if it is running, before starting it again, and (b) they display any diagnostic messages produced if the Foxhound database fails to start:

All Programs - Foxhound1 - Tools - Start Foxhound via Chrome - debug

All Programs - Foxhound1 - Tools - Start Foxhound via Firefox - debug

All Programs - Foxhound1 - Tools - Start Foxhound via IE - debug

Method 3: You can also start the Foxhound database and open the browser in separate steps:

Start - All Programs - Foxhound2 - Tools - Start Foxhound Engine

Specify http://localhost in your browser.

See also...
How do I start Foxhound in "debug mode"?
How do I start Foxhound in "safe mode"?
How do I see Foxhound diagnostics, errors and exceptions?
How do I stop Foxhound?
How do I stop and restart Foxhound?
How do I start multiple copies of Foxhound on a single computer?


[ Top ]
Question: How do I start Foxhound in "debug mode"?

Answer: The following shortcuts help with debugging. Each one stops the Foxhound database if it's running, starts the Foxhound database, displays any diagnostic messages that might have been produced, and then connects to Foxhound from your browser:

All Programs - Foxhound1 - Tools - Start Foxhound via Chrome - debug

All Programs - Foxhound1 - Tools - Start Foxhound via Firefox - debug

All Programs - Foxhound1 - Tools - Start Foxhound via IE - debug
See also...
How do I start Foxhound?
How do I start Foxhound in "safe mode"?
How do I see Foxhound diagnostics, errors and exceptions?
How do I stop Foxhound?
How do I stop and restart Foxhound?
How do I start multiple copies of Foxhound on a single computer?


[ Top ]
Question: How do I start Foxhound in "safe mode"?

Answer: Safe mode startup, also known as "safe startup", stops sampling of all target databases by the Foxhound Monitor when Foxhound is started, and then temporarily disables most Monitor functionality. This sometimes helps if Foxhound is unresponsive when it starts.

Here's how you can turn safe mode startup on and off to "reset" Foxhound:

  1. Stop Foxhound.

  2. Turn on safe mode startup by creating a text file named startup.txt containing these exact 4 characters
    safe
    and placing that file in the Foxhound installation folder.

    By default, Foxhound is installed in this location on Windows XP:

    C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2
    and on Vista and Windows 7 it is here:
    C:\ProgramData\RisingRoad\Foxhound2

  3. Start Foxhound. All the Monitor sessions will now be stopped, and most Monitor functionality will be disabled (the History page will still work, however).

  4. Stop Foxhound.

  5. Turn safe mode startup off by deleting or renaming the startup.txt file described above.

  6. Start Foxhound. All the Monitor sessions will still be stopped, but all Monitor functionality will be available again.

See also...
How do I start Foxhound in "debug mode"?
How do I see Foxhound diagnostics, errors and exceptions?
Why is Foxhound unresponsive when it starts?
How do I see Foxhound diagnostics, errors and exceptions?


[ Top ]
Question: How do I start Foxhound with the 32-bit version of SQL Anywhere when both the 32-bit and 64-bit versions of SQL Anywhere are installed?

Answer:

First, set the FOXHOUND2BIN environment variable to Bin32 as follows:

Control Panel in Windows XP...

  System 
      - Advanced tab 
         - Environment Variables button 
            - System variables 
               - New button
                  - New System Variable dialog box
                    Variable name:  FOXHOUND2BIN
                    Variable value: Bin32

Control Panel in Windows 7... 

   System 
      - Advanced system settings 
         - Advanced tab 
            - Environment Variables button 
               - System variables 
                  - New... button
                     - New System Variable dialog box
                       Variable name:  FOXHOUND2BIN
                       Variable value: Bin32
Then, shut down and restart Foxhound.

See also...
How do I tell if Foxhound is running on the 32-bit or 64-bit version of SQL Anywhere?
What environment variables are used by Foxhound?


[ Top ]
Question: How do I start multiple copies of Foxhound on a single computer?

Answer: You can use the Extended Edition of Foxhound to start up to 10 different copies of the Foxhound database on one computer, each running as a separate server and monitoring a separate set of target databases.

Here's how to set it up:

  1. Make sure your original copy of the Foxhound database is activated as an Extended Edition copy.

  2. Stop and/or delete any Foxhound Monitor sampling sessions you don't want to run on all copies of Foxhound.
    Your original copy of the Foxhound database is going to serve as a model or template for the other nine copies. In other words, when the nine new copies are first started they will contain exactly the same settings as the original copy, and you can only customize each copy after it is started.
  3. Shut down your original copy of the Foxhound database.

  4. Make 9 file copies (see example 1 below) of your original foxhound2.db file in nine different folders.
    By default, Foxhound is installed in this location on Windows XP:
    C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2
    and on Vista and Windows 7 it is here:
    C:\ProgramData\RisingRoad\Foxhound2
  5. Use dbsrv12.exe (see example 2 below) to start your original Foxhound database plus the nine copies as follows:

    • use different runtime server names: foxhound2, foxhound2b, foxhound2c, ..., foxhound2j

    • use different HTTP ports; e.g., 49301, ... 49310

    • choose cache memory options carefully; e.g., -c 5p -ch 10p

  6. Start 10 browser sessions (see example 3 below) using the different HTTP ports.

  7. Use Monitor Options - 2. Manage Multiple Monitor Sessions in each browser session to set up the target databases for each copy of Foxhound.

  8. See example 4 below for a script to stop all 10 copies of Foxhound.

Here is a sample Windows command file that makes the 9 copies in nine different folders and then starts all 10 copies of Foxhound:

Example 1: Make 9 Copies Of Foxhound   [Top]

REM ******************************************************************
ECHO Making nine Foxhound database copies...

CD /D "%FOXHOUND2%"

MD b
MD c
MD d
MD e
MD f
MD g
MD h
MD i
MD j

COPY /V /Y foxhound2.db b
COPY /V /Y rroad2.dll   b
COPY /V /Y rroad264.dll b

COPY /V /Y foxhound2.db c
COPY /V /Y rroad2.dll   c
COPY /V /Y rroad264.dll c

COPY /V /Y foxhound2.db d
COPY /V /Y rroad2.dll   d
COPY /V /Y rroad264.dll d

COPY /V /Y foxhound2.db e
COPY /V /Y rroad2.dll   e
COPY /V /Y rroad264.dll e

COPY /V /Y foxhound2.db f
COPY /V /Y rroad2.dll   f
COPY /V /Y rroad264.dll f

COPY /V /Y foxhound2.db g
COPY /V /Y rroad2.dll   g
COPY /V /Y rroad264.dll g

COPY /V /Y foxhound2.db h
COPY /V /Y rroad2.dll   h
COPY /V /Y rroad264.dll h

COPY /V /Y foxhound2.db i
COPY /V /Y rroad2.dll   i
COPY /V /Y rroad264.dll i

COPY /V /Y foxhound2.db j
COPY /V /Y rroad2.dll   j
COPY /V /Y rroad264.dll j

PAUSE

Example 2: Start 10 Copies Of Foxhound   [Top]

REM ******************************************************************
ECHO Starting ten Foxhound engines...

SET BIN=Bin32
IF EXIST "%SQLANY12%\Bin64\dbsrv12.exe" (SET BIN=Bin64)
IF "%FOXHOUND2BIN%"=="Bin32" (SET BIN=Bin32)

CD /D "%FOXHOUND2%"

REM Maintenance Note: This script does not use the
REM    same set of dbsrv12 options as the other
REM    scripts that launch Foxhound...
REM       $backup_foxhound2.bat
REM       $start_foxhound2_engine.bat
REM       $start_foxhound2_chrome.bat
REM       $start_foxhound2_chrome_debug.bat
REM       $start_foxhound2_firefox.bat
REM       $start_foxhound2_firefox_debug.bat
REM       $start_foxhound2_ie.bat
REM       $start_foxhound2_ie_debug.bat

IF EXIST "%FOXHOUND2%\foxhound2_debug_startup.txt" DEL /F /Q "%FOXHOUND2%\foxhound2_debug_startup.txt"

"%SQLANY12%\%BIN%\dbspawn.exe" -f "%SQLANY12%\%BIN%\dbsrv12.exe" -c 5p -ch 10p -cr- -gk all -gn 120 -gna 0^
  -n foxhound2 -o foxhound2_debug.txt -oe foxhound2_debug_startup.txt^
  -o 1M -sb 0 -x tcpip(port=49201) -xd -xs http(port=49301;maxsize=0;to=600;kto=600) foxhound2.db -n f

IF ERRORLEVEL 1 GOTO dbsrv12_failure

IF EXIST "%FOXHOUND2%\b\foxhound2_debug_startup.txt" DEL /F /Q "%FOXHOUND2%\b\foxhound2_debug_startup.txt"

"%SQLANY12%\%BIN%\dbspawn.exe" -f "%SQLANY12%\%BIN%\dbsrv12.exe" -c 5p -ch 10p -cr- -gk all -gn 120 -gna 0^
  -n foxhound2b -o b\foxhound2_debug.txt -oe b\foxhound2_debug_startup.txt^
  -o 1M -sb 0 -x tcpip(port=49202) -xd -xs http(port=49302;maxsize=0;to=600;kto=600) b\foxhound2.db -n f

IF ERRORLEVEL 1 GOTO dbsrv12_failure

IF EXIST "%FOXHOUND2%\c\foxhound2_debug_startup.txt" DEL /F /Q "%FOXHOUND2%\c\foxhound2_debug_startup.txt"

"%SQLANY12%\%BIN%\dbspawn.exe" -f "%SQLANY12%\%BIN%\dbsrv12.exe" -c 5p -ch 10p -cr- -gk all -gn 120 -gna 0^
  -n foxhound2c -o c\foxhound2_debug.txt -oe c\foxhound2_debug_startup.txt^
  -o 1M -sb 0 -x tcpip(port=49203) -xd -xs http(port=49303;maxsize=0;to=600;kto=600) c\foxhound2.db -n f

IF ERRORLEVEL 1 GOTO dbsrv12_failure

IF EXIST "%FOXHOUND2%\d\foxhound2_debug_startup.txt" DEL /F /Q "%FOXHOUND2%\d\foxhound2_debug_startup.txt"

"%SQLANY12%\%BIN%\dbspawn.exe" -f "%SQLANY12%\%BIN%\dbsrv12.exe" -c 5p -ch 10p -cr- -gk all -gn 120 -gna 0^
  -n foxhound2d -o d\foxhound2_debug.txt -oe d\foxhound2_debug_startup.txt^
  -o 1M -sb 0 -x tcpip(port=49204) -xd -xs http(port=49304;maxsize=0;to=600;kto=600) d\foxhound2.db -n f

IF ERRORLEVEL 1 GOTO dbsrv12_failure

IF EXIST "%FOXHOUND2%\e\foxhound2_debug_startup.txt" DEL /F /Q "%FOXHOUND2%\e\foxhound2_debug_startup.txt"

"%SQLANY12%\%BIN%\dbspawn.exe" -f "%SQLANY12%\%BIN%\dbsrv12.exe" -c 5p -ch 10p -cr- -gk all -gn 120 -gna 0^
  -n foxhound2e -o e\foxhound2_debug.txt -oe e\foxhound2_debug_startup.txt^
  -o 1M -sb 0 -x tcpip(port=49205) -xd -xs http(port=49305;maxsize=0;to=600;kto=600) e\foxhound2.db -n f

IF ERRORLEVEL 1 GOTO dbsrv12_failure

IF EXIST "%FOXHOUND2%\f\foxhound2_debug_startup.txt" DEL /F /Q "%FOXHOUND2%\f\foxhound2_debug_startup.txt"

"%SQLANY12%\%BIN%\dbspawn.exe" -f "%SQLANY12%\%BIN%\dbsrv12.exe" -c 5p -ch 10p -cr- -gk all -gn 120 -gna 0^
  -n foxhound2f -o f\foxhound2_debug.txt -oe f\foxhound2_debug_startup.txt^
  -o 1M -sb 0 -x tcpip(port=49206) -xd -xs http(port=49306;maxsize=0;to=600;kto=600) f\foxhound2.db -n f

IF ERRORLEVEL 1 GOTO dbsrv12_failure

IF EXIST "%FOXHOUND2%\g\foxhound2_debug_startup.txt" DEL /F /Q "%FOXHOUND2%\g\foxhound2_debug_startup.txt"

"%SQLANY12%\%BIN%\dbspawn.exe" -f "%SQLANY12%\%BIN%\dbsrv12.exe" -c 5p -ch 10p -cr- -gk all -gn 120 -gna 0^
  -n foxhound2g -o g\foxhound2_debug.txt -oe g\foxhound2_debug_startup.txt^
  -o 1M -sb 0 -x tcpip(port=49207) -xd -xs http(port=49307;maxsize=0;to=600;kto=600) g\foxhound2.db -n f

IF ERRORLEVEL 1 GOTO dbsrv12_failure

IF EXIST "%FOXHOUND2%\h\foxhound2_debug_startup.txt" DEL /F /Q "%FOXHOUND2%\h\foxhound2_debug_startup.txt"

"%SQLANY12%\%BIN%\dbspawn.exe" -f "%SQLANY12%\%BIN%\dbsrv12.exe" -c 5p -ch 10p -cr- -gk all -gn 120 -gna 0^
  -n foxhound2h -o h\foxhound2_debug.txt -oe h\foxhound2_debug_startup.txt^
  -o 1M -sb 0 -x tcpip(port=49208) -xd -xs http(port=49308;maxsize=0;to=600;kto=600) h\foxhound2.db -n f

IF ERRORLEVEL 1 GOTO dbsrv12_failure

IF EXIST "%FOXHOUND2%\i\foxhound2_debug_startup.txt" DEL /F /Q "%FOXHOUND2%\i\foxhound2_debug_startup.txt"

"%SQLANY12%\%BIN%\dbspawn.exe" -f "%SQLANY12%\%BIN%\dbsrv12.exe" -c 5p -ch 10p -cr- -gk all -gn 120 -gna 0^
  -n foxhound2i -o i\foxhound2_debug.txt -oe i\foxhound2_debug_startup.txt^
  -o 1M -sb 0 -x tcpip(port=49209) -xd -xs http(port=49309;maxsize=0;to=600;kto=600) i\foxhound2.db -n f

IF ERRORLEVEL 1 GOTO dbsrv12_failure

IF EXIST "%FOXHOUND2%\j\foxhound2_debug_startup.txt" DEL /F /Q "%FOXHOUND2%\j\foxhound2_debug_startup.txt"

"%SQLANY12%\%BIN%\dbspawn.exe" -f "%SQLANY12%\%BIN%\dbsrv12.exe" -c 5p -ch 10p -cr- -gk all -gn 120 -gna 0^
  -n foxhound2j -o j\foxhound2_debug.txt -oe j\foxhound2_debug_startup.txt^
  -o 1M -sb 0 -x tcpip(port=49210) -xd -xs http(port=49310;maxsize=0;to=600;kto=600) j\foxhound2.db -n f

IF ERRORLEVEL 1 ( GOTO dbsrv12_failure ) ELSE ( GOTO dbsrv12_success )

:dbsrv12_failure
ECHO ******************************************************************
ECHO *** ERROR ********************************************************
ECHO *** dbspawn/dbsrv12 set ERRORLEVEL = %ERRORLEVEL%
ECHO *** To display startup diagnostics,
PAUSE
IF NOT EXIST "%FOXHOUND2%\foxhound2_debug_startup.txt" ( GOTO file_does_not_exist ) ELSE ( GOTO file_exists ) 

:file_does_not_exist
REM ******************************************************************
ECHO *** No startup diagnostics are available.
PAUSE
GOTO end

:file_exists
REM ******************************************************************
TYPE "%FOXHOUND2%\foxhound2_debug_startup.txt"
PAUSE
GOTO end

:dbsrv12_success
REM ******************************************************************
IF NOT EXIST "%FOXHOUND2%\foxhound2_debug_startup.txt" ( GOTO end ) ELSE ( GOTO display_file ) 

:display_file
ECHO ******************************************************************
ECHO *** ERROR ********************************************************
ECHO *** To display startup diagnostics,
PAUSE
TYPE "%FOXHOUND2%\foxhound2_debug_startup.txt"
GOTO end

:end
REM ******************************************************************
ECHO All done...
PAUSE
EXIT

Example 3: Start 10 Foxhound Browser Sessions   [Top]

REM ******************************************************************
ECHO Starting ten Chrome browser sessions...

IF EXIST "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" ( GOTO use_AppData ) ELSE ( GOTO use_LocalSettings )
 
:use_AppData
START "f01" "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" http://localhost:49301/foxhound
START "f02" "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" http://localhost:49302/foxhound
START "f03" "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" http://localhost:49303/foxhound
START "f04" "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" http://localhost:49304/foxhound
START "f05" "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" http://localhost:49305/foxhound
START "f06" "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" http://localhost:49306/foxhound
START "f07" "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" http://localhost:49307/foxhound
START "f08" "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" http://localhost:49308/foxhound
START "f09" "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" http://localhost:49309/foxhound
START "f10" "%UserProfile%\AppData\Local\Google\Chrome\Application\chrome.exe" http://localhost:49310/foxhound

GOTO end

:use_LocalSettings
START "f01" "%UserProfile%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" http://localhost:49301/foxhound
START "f02" "%UserProfile%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" http://localhost:49302/foxhound
START "f03" "%UserProfile%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" http://localhost:49303/foxhound
START "f04" "%UserProfile%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" http://localhost:49304/foxhound
START "f05" "%UserProfile%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" http://localhost:49305/foxhound
START "f06" "%UserProfile%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" http://localhost:49306/foxhound
START "f07" "%UserProfile%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" http://localhost:49307/foxhound
START "f08" "%UserProfile%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" http://localhost:49308/foxhound
START "f09" "%UserProfile%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" http://localhost:49309/foxhound
START "f10" "%UserProfile%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" http://localhost:49310/foxhound

:end
PAUSE

Example 4: Stop 10 Copies Of Foxhound   [Top]

REM ******************************************************************
ECHO Stopping ten Foxhound engines...

SET BIN=Bin32
IF EXIST "%SQLANY12%\Bin64\dbsrv12.exe" (SET BIN=Bin64)
IF "%FOXHOUND2BIN%"=="Bin32" (SET BIN=Bin32)

"%SQLANY12%\%BIN%\dbstop.exe" -c "ENG=foxhound2;UID=STOPPER;PWD=SQL" -y
"%SQLANY12%\%BIN%\dbstop.exe" -c "ENG=foxhound2b;UID=STOPPER;PWD=SQL" -y
"%SQLANY12%\%BIN%\dbstop.exe" -c "ENG=foxhound2c;UID=STOPPER;PWD=SQL" -y
"%SQLANY12%\%BIN%\dbstop.exe" -c "ENG=foxhound2d;UID=STOPPER;PWD=SQL" -y
"%SQLANY12%\%BIN%\dbstop.exe" -c "ENG=foxhound2e;UID=STOPPER;PWD=SQL" -y
"%SQLANY12%\%BIN%\dbstop.exe" -c "ENG=foxhound2f;UID=STOPPER;PWD=SQL" -y
"%SQLANY12%\%BIN%\dbstop.exe" -c "ENG=foxhound2g;UID=STOPPER;PWD=SQL" -y
"%SQLANY12%\%BIN%\dbstop.exe" -c "ENG=foxhound2h;UID=STOPPER;PWD=SQL" -y
"%SQLANY12%\%BIN%\dbstop.exe" -c "ENG=foxhound2i;UID=STOPPER;PWD=SQL" -y
"%SQLANY12%\%BIN%\dbstop.exe" -c "ENG=foxhound2j;UID=STOPPER;PWD=SQL" -y

PAUSE

See also...
How do I start Foxhound?
How do I tell Foxhound to use an HTTP port other than 80?


[ Top ]
Question: How do I stop and restart Foxhound?

Answer: Follow the instructions here:

How do I stop Foxhound?
How do I start Foxhound?
Alternative: The following shortcuts help with debugging. Each one stops the SQL Anywhere engine if it's running, starts it again with extra diagnostics turned on, and then connects to Foxhound from your browser:
All Programs - Foxhound1 - Tools - Start Foxhound via Chrome - debug

All Programs - Foxhound1 - Tools - Start Foxhound via Firefox - debug

All Programs - Foxhound1 - Tools - Start Foxhound via IE - debug
See also...
How do I start Foxhound?
How do I stop Foxhound?


[ Top ]
Question: How do I stop Foxhound?

Answer: Method 1: Use the following desktop shortcut:

Start - All Programs - Foxhound2 - Tools - Stop Foxhound Engine
Method 2: Go to the Foxhound Options page, scroll to the bottom and click on the Stop Foxhound Engine button.

Method 3: Open the Processes tab in Task Manager, click on the "Image Name" column name to sort the process names alphabetically, select the dbsrv12.exe task that's running the Foxhound database and then click on the End Process button.

Caution: If you have two or more SQL Anywhere engines running it can be difficult to determine which one's running the Foxhound database.
See also...
How do I start Foxhound?
How do I stop and restart Foxhound?


[ Top ]
Question: How do I stop the "User Id:" and "Password:" from being redisplayed on the Foxhound Menu page?

Answer:

If you are using Firefox as your browser, try unchecking "Remember passwords for sites" on the Firefox - Tools - Options - Security tab.


[ Top ]
Question: How do I tell different databases apart in Alert emails?

Answer:

  • Specify a different DSN or Connection String name for each target database when starting a Foxhound Monitor session for that database, or
  • set the GlobalDBId property to a different non-default value for each target database that uses Version 7 or later of SQL Anywhere. If the target database GlobalDBId property is set to a non-default value, that value will be shown in (parentheses) after the DSN or Connection String name in Alert emails. This makes it easier to tell different remote databases apart in a replicating or synchronizing environment.

Here's how to set the GlobalDBId option:

   SET OPTION PUBLIC.global_database_id = '47';

Here's how to display the value after you've set it:

   SELECT DB_PROPERTY ( 'GlobalDBId' )

Here are the non-default GlobalDBId value ranges:

  • Versions 7.0.0 through 8.0.0: 1 to 2147483646
  • Versions 8.0.1 and later: 0 to 2147483646


[ Top ]
Question: How do I tell if Foxhound has been started in safe mode?

Answer:

The Foxhound About page displays Y or N for "Foxhound is running in safe mode:"

See also...
How do I start Foxhound in "safe mode"?


[ Top ]
Question: How do I tell if Foxhound is running on the 32-bit or 64-bit version of SQL Anywhere?

Answer:

The Foxhound About page displays rroad1.dll or rroad164.dll for "Foxhound Windows API support DLL:"

  • rroad1.dll means Foxhound is running on the 32-bit version of SQL Anywhere.

  • rroad164.dll means Foxhound is running on the 64-bit version of SQL Anywhere.

See also...
How do I start Foxhound with the 32-bit version of SQL Anywhere when both the 32-bit and 64-bit versions of SQL Anywhere are installed?
What environment variables are used by Foxhound?


[ Top ]
Question: How do I tell Foxhound to send Alert emails via the Gmail SMTP server smtp.gmail.com?

Answer:

In order to use smtp.gmail.com you need to provide three pieces of identification:

  1. a Google Mail account,

  2. the password for that account and

  3. the SSL certificate currently used by Google Mail.

Items 1 and 2 are easy to get; here's how to get number 3:

  • Choose a folder to store the SSL certificate; e.g., c:\temp

  • Open this link to the Equifax SSL certificate in your browser: Download - Equifax Secure Certificate Authority (Base-64 encoded X.509)

  • Click right-mouse - Save As... on the certificate displayed in your browser.

  • Choose a File name: c:\temp\Equifax_Secure_Certificate_Authority.cer

  • Choose a Save as type: Web Page, Complete

  • Click on Save.

Now you can fill in the blanks on the Foxhound Options page:

2. Global Email Settings

                 SMTP Sender: xxx@yyy.com	
                 SMTP Server: smtp.gmail.com
                   SMTP Port: 587
                SMTP Timeout: 60
SMTP Authorization User Name: zzz@gmail.com
 SMTP Authorization Password: ********
   SMTP Certificate Filespec: c:\temp\Equifax_Secure_Certificate_Authority.cer

Before actually sending any emails, you must also fill in the "Email address(es) for Alerts:" field on the Monitor Options page:

2. Database-Specific Email Settings for [Default Settings]

             Send Alert emails:	
  Email address(es) for alerts: aaa@bbb.com	
            Use HTML in emails:	
Host[:port] for URLs in emails:	

See also...
SMTP Error Codes & SMTP Status Codes & SMTP Reply Codes Reference 2010


[ Top ]
Question: How do I tell Foxhound to use an HTTP port other than 80?

Answer: You can edit one or more of the following Windows command files to specify a different HTTP port:

$backup_foxhound2.bat
$start_foxhound2_chrome.bat
$start_foxhound2_chrome_debug.bat
$start_foxhound2_engine.bat
$start_foxhound2_firefox.bat
$start_foxhound2_firefox_debug.bat
$start_foxhound2_ie.bat
$start_foxhound2_ie_debug.bat
By default, these command file are installed in this location on Windows XP:
C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound2
and in this location on Vista and Windows 7:
C:\ProgramData\RisingRoad\Foxhound2
Look for a line inside each command file that says this:
-xs http(port=80;maxsize=0;to=600;kto=600)^
and change the 80 to something else, like 12345:
-xs http(port=12345;maxsize=0;to=600;kto=600)^
Then, look for a line that says this:
http://localhost/foxhound
and if you find it (all the "chrome", "firefox" and "ie" command files have it) change it like this:
http://localhost:12345/foxhound

See also...
How do I specify the HTTPS transport-layer security for Foxhound?
What HTTP port should I use for Foxhound?
IANA port number assignments
Can't start HTTP listener on address 127.0.0.1:80
Database server shutdown due to startup error


[ Top ]
Question: How do I upgrade Foxhound from one edition to another?

Answer:

Step 1: Get a registration or activation key; see How do I get a copy of Foxhound?

Step 2: Open the Foxhound About page.

Step 3: Click on the "Renew or Upgrade Foxhound" button to open the Foxhound Activation page, and follow the instructions.

See also...
How do I get a copy of Foxhound?
What are the differences among the different editions of Foxhound: Rental, Basic and Extended?
What are the differences among all the activation keys?


[ Top ]
Question: How do the different FOXHOUND2UPGRADE values work?

Answer:

The most effective way to make the upgrade process faster is to change the FOXHOUND2UPGRADE value from ALL to some other value during the post-update stage of the Foxhound installation process:


Note: In all cases, Foxhound will preserve the existing copy of the Foxhound database and transaction log files in the backup\previous_build folder. See How do I restore the old build of Foxhound after installing a new build?

Here's how the different FOXHOUND2UPGRADE values work; the following descriptions apply even if you are "upgrading" to exactly the same version of Foxhound; i.e., you are reinstalling the same version in order to shrink and/or reorganize the Foxhound database.

  • ALL    Upgrade all the data.

    If sampling was enabled before the upgrade process was started, sampling will start again as soon as you start Foxhound after the upgrade is finished.

    In this case only, Foxhound will use the ALTER DBSPACE SYSTEM ADD command to expand the new Foxhound database file to accomodate all the data plus 10% before starting to copy the data. The new Foxhound database file won't be much (or any) smaller than the old one, but it will be reorganized by the upgrade process.

  • OPTIONS    Upgrade all the Foxhound settings and options, including the Foxhound activation status and the Monitor Options for all the target databases, but don't copy any of the sample data.

    If sampling was enabled before the upgrade process was started, sampling will start again as soon as you start Foxhound after the upgrade is finished.

    In this case, Foxhound will not use ALTER DBSPACE SYSTEM ADD to expand the new database file, with the result being the new Foxhound database file will be quite small.

  • yyyymmdd    Upgrade all the Foxhound options plus all the samples recorded since yyyymmdd. You can specify any valid timestamp as long as it at least 8 characters long and in the past, but no more than 100000 days in the past; e.g., 20110801, 2011-08-01 23:59:59.999, 2011-7-7 12 are all valid timestamps.
    Caution: If you specify a timestamp more than 100000 days in the past, Foxhound will use the OPTIONS setting and no samples at all will be copied.

    Foxhound chooses OPTIONS because it runs quickly so you don't have to wait so long if it was a mistake. To correct the error, restore the old copy of the Foxhound database and reinstall Foxhound again. See How do I restore the old build of Foxhound after installing a new build?

    If sampling was enabled before the upgrade process was started, sampling will start again as soon as you start Foxhound after the upgrade is finished.

    In this case, Foxhound will not use ALTER DBSPACE SYSTEM ADD to expand the new database file even if yyyymmdd is earlier than the earliest recorded sample. In other words, you can use an old yyyymmdd to copy all the data while at the same time reorganizing and shrinking the Foxhound database.

  • nnn    Upgrade all the Foxhound options plus all the samples recorded in the past nnn days. You can specify any positive integer from 1 to 100000.
    Caution: If you specify a number outside the range 1 to 100000, Foxhound will use the OPTIONS setting and no samples at all will be copied.

    Foxhound chooses OPTIONS because it runs quickly so you don't have to wait so long if it was a mistake. To correct the error, restore the old copy of the Foxhound database and reinstall Foxhound again. See How do I restore the old build of Foxhound after installing a new build?

    Here is the formula used to convert nnn into a timestamp: DATEADD ( DAY, -nnn, CURRENT TIMESTAMP )

    If sampling was enabled before the upgrade process was started, sampling will start again as soon as you start Foxhound after the upgrade is finished.

    In this case, Foxhound will not use ALTER DBSPACE SYSTEM ADD to expand the new database file even if nnn is earlier than the earliest recorded sample. In other words, you can use a large nnn to copy all the data while at the same time reorganizing and shrinking the Foxhound database.

  • NOTHING    Don't upgrade any data, no options or settings, not even the activation status.
    Note: Even in this case, Foxhound will preserve the existing copy of the Foxhound database and transaction log files in the backup\previous_build folder. See How do I restore the old build of Foxhound after installing a new build?

  • EVERYTHING    Same as ALL.

  • SETTINGS    Same as OPTIONS.

  • NONE    Same as NOTHING.

  • FRESH    Same as NOTHING.

If you specify an invalid value, Foxhound uses OPTIONS.

See also...
How do I install Foxhound?
How do I reinstall Foxhound?
How do I upgrade Foxhound from one edition to another?
How do I restore the old build of Foxhound after installing a new build?


[ Top ]
Question: How do the Foxhound backup shortcuts work?

Answer:

The All Programs - Foxhound2 - Tools - Backup Foxhound Database shortcut runs the following command file:

C:\ProgramData\RisingRoad\Foxhound2\$backup_foxhound2.bat

The $backup_foxhound2.bat command file creates a full online backup of both the Foxhound database file foxhound2.db and the transaction log foxhound2.log.

This process can be run even while Foxhound is busy monitoring databases, and the backup files it creates can be used to restore the Foxhound database after a problem occurs.

Here's how it works:

  1. The subfolder C:\ProgramData\RisingRoad\Foxhound2\backup is created if it doesn't exist already.

  2. The subfolder C:\ProgramData\RisingRoad\Foxhound2\backup\generation_temp is removed if it is exists; if it does exist, it means a previous backup failed, and the contents of this subfolder cannot be trusted.

  3. The subfolder C:\ProgramData\RisingRoad\Foxhound2\backup\generation_temp is created.

    This is where the full backup copies of foxhound2.db and foxhound2.log will be written.

    This subfolder will be renamed if the backup process is successful.

  4. The Foxhound database is started via dbsrv12.exe if it isn't running already.

    All full backups are created as online backups which require the SQL Anywhere engine to be running.

  5. The dbbackup.exe utility is run to create full backup copies of foxhound2.db and foxhound2.log.

    The dbbackup -x option is used to delete and restart the online transaction log to control its growth.

  6. If the dbbackup.exe utility worked, the backup subfolders are manipulated as follows:

    • The subfolder C:\ProgramData\RisingRoad\Foxhound2\backup\generation1 is removed if it exists.

    • generation2 is renamed to generation1 if it exists.

    • generation3 is renamed to generation2 if it exists.

    • generation_temp is renamed to generation3.


The All Programs - Foxhound2 - Tools - Backup Foxhound Transaction Log shortcut runs the following command file:

C:\ProgramData\RisingRoad\Foxhound2\$backup_foxhound2_log.bat

The $backup_foxhound2_log.bat command file creates an online incremental backup of the transaction log foxhound2.log and stores it together with the most recent full backup that was created by the $backup_foxhound2.bat command file.

This process can be run even while Foxhound is busy monitoring databases, and the backup files it creates can be used to restore the Foxhound database after a problem occurs.

The $backup_foxhound2_log.bat command file may be run multiple times after each run of $backup_foxhound2.bat.

Here's how it works:

  1. The subfolder C:\ProgramData\RisingRoad\Foxhound2\backup\generation3 is checked to make sure it exists and that it contains the foxhound2.db and foxhound2.log file.

    If not, the command file displays an error message and stops; there is no point in creating an incremental backup copy of the transaction log if there is no previous full backup to apply it to.

  2. The subfolder C:\ProgramData\RisingRoad\Foxhound2\backup\generation3\logs is created.

    This is where the incremental backup copies of foxhound2.log will be written.

  3. The dbbackup.exe utility is run to create the incremental backup copy of foxhound2.log.

    The dbbackup -x option is used to delete and restart the online transaction log to control its growth.

See also...
How do I backup my Foxhound database on a regular basis?
How do I restore the Foxhound database from a backup?


[ Top ]
Question: How many target databases can one copy of Foxhound monitor?

Answer: A single copy of the Basic edition of Foxhound is limited to monitoring 10 target databases, and the Extended edition can monitor up to 100 target databases.

See also...
How do I start multiple copies of Foxhound on a single computer?
What are the differences among the different editions of Foxhound: Rental, Basic and Extended?


[ Top ]
Question: How much overhead does the Foxhound connection add to the target database?

Answer:

Note: This FAQ does not discuss the impact of running the Foxhound database on the same computer as the target database. If both databases are heavily loaded it is probably a good idea to move Foxhound to a different computer.

Foxhound's overhead is approximately the same as a single persistent ODBC client-server connection that performs a small-to-medium (depending upon your point of view) amount of read-only query requests (three SELECTs) every ten seconds. The "Sample Times" column on the Monitor page shows how long it takes for Foxhound to do its work.

Generally speaking, if Foxhound's overhead causes any problems, the target database is already in serious difficulty for other reasons.

You can see the Foxhound connection in Foxhound itself; e.g., Foxhound-p001. It's not "zero impact" but it's not a heavy load either. The overhead goes up linearly with the number of other connections to the target database. For example, I have seen the CPU usage rise to 4% on a target database with 1000 idle connections; i.e., Foxhound was using 4% of the target server's CPU to gather information about 1000 connections every 10 seconds, even though those connections aren't doing anything.

Foxhound's overhead affects the CPU and client-server communications only; Foxhound performs no database disk I/O on the target database.

The Foxhound Monitor does almost all of its work inside its own SQL Anywhere server, so if you run that server on a different computer the impact on the target database server will be minimized. On the other hand, if you run Foxhound on the same box, and your target database is heavily loaded with a lot of connections, you can run into trouble.

Historically, Foxhound itself has had internal performance problems from time to time, but there has never been clear evidence of Foxhound adversely affecting a *target* database. "Clear evidence" would be a target database that performs well without Foxhound, and performs poorly with Foxhound.

One other factor has a large impact on Foxhound's own internal efficiency; here's a description:

In the status area of the Monitor page (just below the buttons), there is an SP OK: field over to the right. SPs OK: YYY, NNN or some combination of Ys and Ns indicates whether or not Foxhound has deployed, and is using, these three stored procedure on the target database: rroad_connection_properties, rroad_database_properties and rroad_engine_properties.

These stored procedures are used by Foxhound to improve the performance of the sampling process, but they are not absolutely required. If the user id that Foxhound uses to connect to the target database doesn't have the RESOURCE authority then Foxhound won't be able to CREATE these procedures on the target database.

The source code for the three procedures is in the Foxhound2 folder (C:\ProgramData\RisingRoad\Foxhound2 on Windows 7) so you can see what they do yourself:

rroad_connection_properties.sql
rroad_database_properties.sql
rroad_engine_properties.sql

The effect of these procedures is to reduce the number of rows of data, and the number of bytes, transferred from the target database to Foxhound every 10 seconds. That, in turn, has a significant effect on Foxhound itself if there a large number of connections. When those procedures are not available on the target database, Foxhound calls these three system procedures on the target database every ten seconds: sa_conn_properties(), sa_db_properties() and sa_eng_properties().

For more information about these procedures see Help - Introduction - Connecting to Target Databases.


This page was last generated on February 8, 2013. Foxhound 2.0 FAQ Home      Foxhound Home      RisingRoad      Breck.Carter@gmail.com