The Virtual Table Server (VTS) is an in-memory database that can be used to share data between virtual users. I have found this useful when I need my VUsers to pass data to each other; it’s certainly a much neater solution than writing to a file and having each VUser check the value in the file on every iteration.

Here is what the documentation has to say about it…

VTS Virtual Table Server (version 2.10)

Virtual Table Server (VTS) first edition, introduced the capability for LoadRunner virtual users, WinRunner and XRunner, to communicate in real time. Data extraction and communication was simplified but limited to column/queue level operations. The new Virtual Table Server II provides a higher degree of data manipulation and 5-10 times better performance. From row level queries, retrievals, updates, insertions, unqueue entries, to database access, VTS II provides the functionality and ease for enhanced inter-process, inter-virtual user communication

Mercury Virtual Table Server (VTS)

One of the limitations of LoadRunner is that a parameter file cannot be shared between different scripts, or between instances of the same script running on different load generators. VTS is an easy way to maintain a single data pool. This is less of a problem if you are using Performance Center, as it is smart enough to allow the same script to run on multiple generators and still maintain the “Select next row: unique” property.

Another limitation that the VTS solves is the ability to maintain information about which data values have been used *between* runs. If you have a script that consumes data (maybe it deletes records), data values can only be used once. This means that every time you run the script, you have to update the data file. Using VTS, you can mark the data as “dirty”, so the next time the script is run, it will use a different value.

Virtual Table Server (version 2) can be downloaded from the Mercury Support website. Note that even though the software is provided by Mercury, it is not officially supported.

Installation is simple, and the server can be configured to run on any port. The API and examples provided with the software work with C-based scripts. A Java API is also provided. JavaScript and VBScript vuser types are not supported.

The API is simple, but unfortunately does not allow you to write SQL queries; instead you must use the functions provided, like lrvtc_retrieve_row() and lrvtc_query_row(). Finally, the VTS can import from and export to a regular database (anything with an ODBC driver), or a text file.

This is a useful tool for anyone who uses LoadRunner to be aware of.


Published On: September 17, 2006Tags: ,


  1. Stuart Moncrieff September 28, 2006 at 8:30 pm

    Just a final note…

    Wilson Mar has written a good introduction to the Virtual Table Server.

    Also, be sure to read the documentation that comes with the software, and search the Mercury Support Knowledge Base and Discussion Forums for any additional tips.

  2. Chris Meisenzahl September 29, 2006 at 11:22 am

    Good post, I’ve been meaning to play with this tool for some time but never seem to get to it.

  3. Scott Moore November 3, 2006 at 12:17 am

    Also check out this presentation from Otto Strickland some years ago:

    Scott Moore

  4. Romano yamzon November 3, 2006 at 12:48 am

    Thanks to Stuart Moncrieff for pointing me into this direction ant to Mar Wilson’s write-up. This is the exact solution to the problem I am currently facing.

  5. Koffer February 1, 2007 at 6:49 pm

    Do you have some scripts using this technique to solve some complex problem? For example, make each virtual user take a single value while executing the scripts in Controller?

  6. Byron April 8, 2008 at 11:47 pm

    VTS only allows approximately 63 columns. Beyond 63, it returns a pointer to an empty array.

  7. Eldo April 22, 2008 at 3:58 pm

    Very informative article. Well Done !

  8. Nguyen Pham December 9, 2008 at 1:26 pm

    Could you show me the link to download it(VTS)?.

  9. sandeep Kota June 19, 2009 at 10:28 pm

    Hi every one the page is informative and further Scott Moore your post is quite helpful and the document even.

  10. Purushotham September 2, 2009 at 10:57 pm

    how i can navigate to mercury virtual table server

  11. Rishikesh March 30, 2010 at 9:03 pm

    Hi All,
    Can we use VTS in QTP based automation as well?
    that is, can we use VTS for QTP parameterization?

  12. higkoo August 30, 2010 at 11:24 pm

    Where to download it ?

  13. Guilherme October 14, 2010 at 5:10 am

    Could you show me the link to download it(VTS)?.

  14. GD Dennie February 9, 2011 at 5:07 am

    Anyone have examples of connecting to VTS with JAVA script?

  15. krishna July 23, 2011 at 12:38 am

    Could you please point me to the source where I can download the VTS installation files, I am unable to find in HP support site too..

    your help is highly appreciated

  16. Aakash Sharma November 10, 2011 at 8:25 pm

    Can you please tell if VTS2’s inter vuser communication can be recorded through .NET protocol?

  17. vijesh May 7, 2012 at 2:33 am

    in this blog you had mentioned ” Sharing of parameter file less of a problem if you are using Performance Center, as it is smart enough to allow the same script to run on multiple generators and still maintain the “Select next row: unique” property”.

    Can you pl sexpalin this? do you mean sharing of same parameter file across multiple script possible from ALM PC?

  18. Scott Moore May 29, 2012 at 12:42 am

    Just did a review of VTS on our blog ( and linked to this, but we have something new to introduce you to soon. Watch for SQUID on 5/30/12! 🙂

  19. tulasi August 27, 2015 at 2:14 pm

    HI I WANT to download the vts. where can i get it ???

  20. Archana2000 October 2, 2015 at 4:00 am

    Does VTS2 support java protocol. Please throw some light on this if u have implemented it

Comments are closed.