Working with external databases in ClearSCADA

I've been working with an external SQL database lately & trying to use ClearSCADA to present some data from it.  The hope is to give my users a single login & a cohesive user interface.  I realize ClearSCADA is not designed to be a general front end platform for any database, but given the fact that it offers the ability to query linked tables, I'm trying.  Below is what I've found so far in terms of limitations.  If anyone from Schneider happens across this, it may be good feedback for the developers. 
  • Joins appear to be done in ClearSCADA rather than the RDMS.  This leads to some very inefficient queries.  I've seen one of my queries turned into 20 queries and then joined in ClearSCADA.
  • The Mimic SQL List refreshes every 10 seconds.  Would be quite handy if this could be disabled and refreshed manually (via button or script).  On heavier queries, the page essentially freezes while the query runs.
  • There is no way to get a value from a row displayed in the mimic SQL list.
  • Any SQL queries built dynamically (based on user interaction) utilize VBScript which runs on the user's machine.  So, the content of the SQL queries could probably be read a potential hacker.  This exposes the internal structure of your database.
  • Are queries scrubbed for SQL injection?
  • When dealing with an external database, you must still use ClearSCADA's (fairly limited) flavor of SQL.  It would be very nice to use TSQL when talking to a SQL Server database for example.
  • The mimic list filter functionality also exposes database structure to the end user and allows them to change the query to perhaps display data that they were not intended to see.
  • For many users the browser will freeze if list displays more than 300 rows or so, but there is no paging functionality for external databases
  • SQL errors are shown directly on the grid which again exposes underlying database structure.
  • The "TOP" clause is processed in ClearSCADA as well (entire result set pulled into ClearSCADA, then pared down for display).  Again, this introduces inefficiency issues. Queries that 300ms in SQL Server, take several seconds in ClearSCADA.  Would not be a huge issue except for the fact that it runs every 10 seconds.

Again, I realize I'm doing more with ClearSCADA than it is designed for, but these are just the issues I've encountered so far.


Popular posts from this blog

Fixing Conan Lock Issues

Setting up Jenkins, GoogleTest, & Mercurial (with a local repository)

Making a standard ASP.NET listbox do multiselect without holding Ctrl