IDE For Sybase SAP Adaptive Server Enterprise

Code

Besides classical editors syntax coloring, code-formatting and auto-completion, SQLBrowser provides instant defect detection directly from code inception. It can prevent code submission if certain defects are detected. This prevents bugs from going to production. See Defect List for the list of detected defects. It also provides unique Joins auto-completion which greatly helps productivity. The editor is compatible with Version Control systems such as Subversion and Git.

Inspect

As the name suggests, SQLBrowser was initially built to browse through stored procedures. It features hyper-links to objects, dependencies analysis which allow fast navigations across tables and sub-procs. Offline batch-analysis (See 'Document' below)

Run

SQLBrowser runs scripts with performance options. Unlike other products, it supports very large result sets depending on the memory available to the program. The colored performance output let you quickly spot low performing statements. It also shows MonProcessActivity data. Output to Excel is naturally included.

Debug

SQLBrowser includes a step-by-step debugger with breakpoints which allow to step into code and understand either data issues or performance issues. Once you reached a specific breakpoint, the run pad let you iteratively fine tune a query in the context of the calling proc, i.e. bound variables and temporary tables. This is otherwise very difficult to achieve by hand. The Debugger also shows local variables by frame with the ability to modify them.

Monitor

SQLBrowser lets you watch a continuously refreshed monitoring table which shows immediately offending or long running processes. "Show-Plan" is available on right click as well as the statement line number when it is available. The monitoring also shows the current Locks. The monitoring snapshots are historized to allow backtracking. It also shows server level stats such as Total READ and WRITES.

Document

Look at these links link1, link2, link3, to see what Batch Analysis is about. SQLBrowser generates a website which contains a comprehensive report of all database objects showing code, cross references, usage stats and defects all navigable. The analysis also produces flat files (e.g. dependencies) for later off-line processing. This feature is a major advantage for team collaboration and fast offline issue lookup.

Info

SQLBrowser is an Integrated Development Environment for SAP Adaptive Server Enterprise. It is a Commercial Application for development teams or DBAs seriously involved with ASE. It is mainly deployed in the banking and insurance sector. Our biggest customer has more than 400 users working on servers containing more than 50,000,000 objects.

Licenses contract start from 10 users, please contact us for quotes.
For licensing details please send a email to Sales
For technical questions please send a email to Support

Download

Please read and agree with the License Agreement at the end of this page before downloading

Version 1609 - Jul 2023
  • fixed service_install.cmd issue preventing license server from starting with Java 17
Version 1608 - Jan 2023
  • views did not show correctly in batch analysis
  • fixed service_install.cmd
  • bundled with Java17 and Netbeans16
Version 1603 - Oct 2021
  • removed some parsing errors
  • bugs correction
  • far less vulnerabilities - 0 critical errors
  • AutoCompletion: allows for camel (or underscore) lookups e.g. select * from sdi --> spt_datatype_info
  • extended camel search to Object Finder, tick box is false by default
  • changed comment shortcut to Ctrl-Slash vs previous Alt-Shift-K
  • "bad alias" error introduced
  • using NetBeans Platform 12.5
  • bundled JDK is now OpenJDK11 for windows. Classes are still at level 8.
  • Default User Directory Location (preferences) has moved from .sqlbrowser to sqlbrowser in Roaming directory OLD Location: C:\Users\Nicolas\AppData\Roaming\.sqlbrowser\dev NEW Location: C:\Users\Nicolas\AppData\Roaming\sqlbrowser\dev If you provide a custom UserDir through --userdir option you should be fine Otherwise to migrate your preferences: - Stop sqlbrowser - Copy the content of .sqlbrowser directory to sqlbrowser - You should reclaim your preferences on startup
Version 1528 - Aug 2021
  • Better log lines for license validation
Version 1518 - Jan 2019
  • JRE version is 1.8.0_192
  • Jconnect version is 16.0 SP02 PL05
  • Fixed NPE when parsing dynamic procs like declare @v varchar(30) select @v = 'sp_who' exec @v @name=12 select 13
  • Fixed NPE when dynamic proc EXEC @name when @name is fetched from a cursor
  • Initial additions to support running license server on UN*X
  • Fixed potential issue when opening SSL Connections
Version 1496 - Jan 2018
  • better cmd launcher
  • management of "SQLB_" env variables
  • fixed bug in case insensitive installation (letters y and z case missed)
  • dep.txt ("show as file" menu in dependency panel) is now written in output dir
  • minor fixes
Version 1481 - Jul 2017
  • Runs with bundled JRE8, source.level=1.8
  • When batch_analysis directive was passed (non-interactive batch analysis) and an error occurred, the application did not exit.
  • Using connection properties ENCRYPT_PASSWORD and RETRY_WITH_NO_ENCRYPTION by default
Version 1467 - Jan 2017
  • Perf IO Message Limit is settable in Options, default 10,000
  • non alpha chars in alias _@$ made IO not shown
  • env variables/properties not trimmed properly
  • expand views in graph stopped working
  • missing 'needed-by' temporary tables in analysis
  • extracted code had trailing spaces
  • cmd (command history) was not postionned at most recent command
  • add defect "Variable Unused" on unused parameters
  • Better handling of timeouts on internal parsing queries
  • all temporary files now go in outputdir/tempfiles instead of System temporary directory
  • add title pragma (see documentation)
  • Server name with "MS" in their name were wrongly treated as microsoft servers
  • Better management of tabs for excel extracts
  • add filtering of tables through popup menu
  • Can pass -D or environment variable named "[SQLB_]argumentsFileName" to denote argument URL or file
  • Can pass -D or environment variable named "[SQLB_]licenseServerIpAndPort" in the form "host:port" to denote license server location
  • Must be able to pass argument file(s) as a URL rather than files only:
    For UNC Windows file path: \\remote\somedir\arguments.xml
    The corresponding valid file URI in Windows is: file://remote/somedir/arguments.xml
    For local Windows file path: C:\sqlbrowser\arguments.xml
    The corresponding valid file URI in Windows is: file:///c:/sqlbrowser/arguments.xml
Version 1407 - Nov 2015
  • Bad behaviour when server name contains "MS"
Version 1397 - Nov 2015
  • Bad reporting of MBPA "Not a Parameter of This Proc"
  • Add Git Module
  • add auto-completion of index names after "(index" (force-index construct)
  • When no alias is given, auto-completion proposes table.column which fails to compile. Columns should be expanded without alias
  • Wrong "Wrong alias given" issued on triggers with update t from deleted d
  • Intermittent Freezing during file opening requiring restart
  • F11 (run SQL at cursor) does not run when cursor is at file start
  • SQLBrowser could freeze on "NEW FILE" Action
  • Sorting Foreign Keys should happen by Popularity first and then Join Type
  • Export to Excel: also export cells colors
  • Export to Excel: export performance data to Excel (vs. Textual Export)
  • Output execution statistics in Excel rather than as Text. Keep coloring.
  • Batch Analysis: add queries used by tables HTML output for tables
  • Batch Analysis: also output JOINS section for views
  • Bundle Windows JRE 7 64Bits in distribution to avoid requirement to manually pre-install JDK/JRE
  • Unsigned int are showing as their negative int counterpart when value is above 2^31-1
  • Defect QGWO should also detect distinct and union without order by, in addition to group by
  • Cast errors: could not find type for things like select CAST("" as VARCHAR(100)), CAST(0.0 as float)
Version 1342 - May 2015
  • Add a link to the Online Documentation from the Help Menu
  • Export to Excel should respect columns re-ordering
  • Export to Excel should create auto-filter for all columns
  • Fix bad reporting of syntax error line sometimes
  • Minor Other Bug Fixes
Version 1333 - May 2015
  • This version Requires JDK 7
  • This version Requires a New License
  • Write Analysis: Missed temp table data propagation
  • Select on timestamp generates MUTS if result sets is turned on
  • Add option for dependency color propagation
  • Batch analysis is faster and consume less memory
  • Add the ENABLE_SSL Connection Property
  • Trim server properties SERV NAME & HOST
  • In Format & Add Newlines, do not insert NL in and if parent is BETWEEN
  • Order by a column label should not complain
  • Select 2 objects from diff db and generate drop: there is only 1 use database
  • Add locale choice in preferences to allow date time formatting independent from OS regional settings
  • Sort debugger variables in 2 groups: touched and untouched
  • (if many tempdb ?) also detect dump tran tempdb as a bad tempdb usage
  • Sqlbrowser should work with JDK 1.8
  • Debugger now optionally shows summary on Stop (default false)
  • Add color tags based on dependencies P1 calls P2, P1 is colored with P2 color. color reads as 'depends on <app>' colors for Tables read 'was populated with data from <app>'(document: colors is not only Write Ana)
  • Batch analysis: could miss some color tags
  • When selecting a defect node in defect panel, text is selected and other defect is highlighted
  • Joins auto-completion should show proposed joins by occurrence count order descending
  • Create defect MRIT: Return in Transaction
  • BCKSPC on WS should remove as many blanks up to previous TAB
  • BACKTAB goes too quickly to Server dropdown
  • Simplify aliases proposed in FK auto-completion
Version 1256 - 2014
  • This version Requires JDK 7
  • Debugger: Sort debugger variables by last change
  • Debugger: Step into dynamic SQL "exec @v" does not step into
  • Debugger: proper behavior of toggle breakpoint when clicking on the glyph
  • Debugger: current debugging line annotation (green) now overrides breakpoint annotation (red)
  • Auto completion: when server is busy, abandon earlier and/or don't block UI: created AutoCompletion Query Timeout preference
  • Auto completion: should use correlation name when no explicit alias is provided. Especially true for short temp table names
  • Auto completion: bad selection of completion item in join with database prefix
  • Auto completion: auto-completion added on temp tables
  • Auto completion: completion issue when comments are in the way (eg Bad Group By)
  • Defect Detection: added defect MPSI: Possible SQL Injection
  • Defect Detection: added defect MTPW: when passing same param twice
  • Defect Detection: fix QTJ2 (left or right join and star taken into account)
  • Defect Detection: QTJ2 should not warn when column is used in order by / group by / having
  • Defect Detection: in Assignment Type Mismatch, say var name
  • Monitor dark red and yellow should override green or pink
  • Monitor: paint all fields in light green in monitor when connection is from this host
  • Monitor: monitor not working when user not entitled in database holding locks (eg sybsecurity)
  • Lock table d..t does not recognize table t
  • Joins completion does not take root portion in account
  • Variable not used can be defeated by dynamic sql
  • Save as should close original file
  • Running SQL does not highlight title on new files
  • Update statements don't enable Show Diagram & Convert To Ansi Join contextual menu
  • Use bad database name not handled properly
  • Create contextual menu on hyperlink on tables
  • Foreign Keys are not loaded if input dir is not set or invalid
  • In Excel output (not csv), empty cells should not be surrounded with quotes
  • Debug bad database, does not take the use in consideration use x exec p
  • Fix inactive combo background in Windows 7 native theme: switched display to ITALIC
  • Do not impose WHITE color background
  • Folding should not create folds if too little lines (3)
  • Database Search offset is wrong by as many newlines between start of document and found instance
  • When ctrl-clicking on "left inner join", move cursor to the "on" clause
  • log is now ONE 200 Meg file with append
  • put the arguments.xml file name in the log
Version 1218 - 2014
  • Monitor not working when user not entitled in database holding locks (e.g. sybsecurity)
Version 1202 - 2014
  • Added defect MCPC 4 Copy Paste Code (Batch Analysis Only)
  • Added defect MSUB 2 Subquery Marker
  • Added defect MSUC 2 Correlated Subquery Marker
  • Added defect QFIN 4 Force index through index number
  • Added defect QIMO 5 Table is inner member of outer join and also regular member of join at the same level
  • Added defect QONC 3 On clause does not refer introduced table
  • Added defect QTJ1 3 Table is only used in join
  • Added defect QTJ2 6 Table is only used in left join
  • Batch Analysis Improvements:
  • Smaller output: file names for object don't have "database.." prefix anymore (shorter file names and hyperlinks) WARNING: you will have to change your external links to SQLBrowser website if you have some
  • Faster write analysis
  • Less memory consumed
  • Added Result Sets
  • If write analysis is on, Result Sets are considered as dummy tables which are written to
  • Views and Result Set drawings are now displayed
  • Added total # of lines /bytes of tables and procs
  • Can parameterize number of Write Analysis and Column Write threads
  • Could not determine type for str_replace(col_aa, ',', '.')
  • Added option to remove System Objects from Analysis
  • Improved Find in Databases
  • Added Copy Paste Detector Menu to DB context menu
  • Popup Windows could sometimes popup on different screen from Main Window
  • Reparse of text was done on every caret move, slowness from remote locations
  • Auto completion for group by is now fully functional
  • Missed cursors in Write Analysis
  • QRPR (Repeated Predicate) was not detected for reverse equijoins (t1.c1 = t2.c2 and t2.c2 = t1.c1)
  • Excel Export Exception: The maximum column width for an individual cell is 255 characters.
  • When proc recompiled and cache outdated, "Not a parameter" defect should not show
  • Minor parser fixes
  • Restricted QUDW (Update or Delete with no Where Clause) to permanent tables
Version 1100 - 2013
  • this version requires a new True Floating License Registration Key (requires server host info) See "License Server Installation for Windows Server" for more information
  • this version is based on NB 7.2 and may be incompatible with previously saved preferences. In case of issues based on preferences, please read the Troubleshooting section to remove previous preferences and start clean
  • Add VNDC defect which checks that Variable is not declared
  • Add VNRD defect which checks that Variable is not read
  • Add QCTC defect conditional table creation
  • Add MUTS defect update to Timestamp column
  • Add QNUA defect not using alias for tables or columns
  • Add MSTT defect shared temp table marker
  • Add MDRV defect derived table marker
  • Add MSUB defect Subquery marker
  • Add MSUC defect Correlated Subquery marker
  • Monitor: paint process from this host with a different color to allow quick identification
  • Bad Parameter defect was not detected when proc called has 0 parameters
  • Possible Memory leak especially when editing big source files
  • Add Excel Export for result sets with 'Use Excel 2007' option
  • Add Show File in OS Explorer Option in object menu
  • Add 'Format On Save' option
  • Fixed 'Arithmetic Overflow' (error: 3606) when loading database details
  • Object Chooser : removed letters and speed up display
  • Proc marked dynamic still show as not marked dynamic
  • Wrong widget size on zoomed batch analysis report in Internet Explorer
  • Generate insert and assignment now consider selected cells
  • When F11 (run at cursor) fails should pop up an error
  • QIWC defect lowered priority if missed column is identity only
  • Analyzed code with should be marked with an Analyzed icon rather than a normal icon
  • Do not put binary 0 as hostname in capture
  • Literal \u0007 in procedure provokes syntax error
  • Show result sets as writes to dummy table in write analysis, controlled by option
  • Batch analysis: display all table's aliases found during parsing
  • Batch analysis: reload objects before beginning
  • Better focus handling on RUN SQL
  • Allow for multiple SQL source files directories separated by , or ;
  • Allow to choose between jconn3 & jconn4 through argument-only preference: option name="/com/sqlbrowser/sqlbm/jconnect_version" value="3"
  • Now using jconn3_ebf19798 & jconn4_ebf20686
  • Default JConnect version is now jconn4 a.k.a. (JConnect 7)
  • 'a' || 'b' expression generates error "Cannot determine type for"
  • Forced Options can force certain options from arguments.xml, for example for use in production e.g. option name="/com/sqlbrowser/sqlbm/forced_action_parse_disabled" value="true"
    - allow or not Running
    - allow or not Debugging
    - allow or not Parse (object or pane content)
    - allow or not Monitoring
    - allow or not batch analysis
    - allow or not Instant Parsing
    - allow or not Extract
    - allow or not Analyze
    - allow or not Source
    - max run option level (STATS, PLAN etc)
    - force SQLBrowser version to a given version (e.g. 844)
    - Monitoring option forced (no locks, sleep time, stop after...)
    - force # of threads and TTL
    - force auto connect off
    - force save password off
    - force open last server off
    - use (but not force) server coloring
    - compute hash code of forced options and propose %forcedHash% in APP NAME so that trigger can kill connection
  • Allow smooth failing on access rights on sysprotects at startup
  • Wrong proc parameters should be reported in instant parsing
  • Better handling of database loading issues (partial loading)
  • Add "show columns used in tree" in menu of analyzed object
  • Select * into t from x does not show x as hyperlink
  • MUTT defect does not complain if more drops than create for a table
  • Show 'invalid column' as a defect (only meaningful in instant parsing - avoids error 207)
  • Add "group by" auto completion when detecting mix of aggregated and non aggregated columns in select list
  • When FK compete with joins, make FK take precedence for auto-completion
  • Search in Database and Batch Analysis are faster
  • Running files in other window while in debugging session could provoke NPE
  • Add a customizable defect summary message which
    - can be inserted before the object creation, to allow SCM to react when defects found, namely to prevent the commits
    - can require confirmation when submitting a proc with defects
    - can refuse submission of proc with defects
  • Add 'Include Table' switch in Find in Database Dialog
  • Default value = -1 does not parse when debugging
  • MMCN defect (Misleading Column Naming) in update statements, tries to find the bad assignment rather than always generating the warning
  • Better shutdown of connections
  • Fix windows 7/Aero monitoring bar color and button size
  • Auto show debugger toolbar when debug session starts
  • Better focus handling when re-connecting green node
  • When reconnecting main connection, should reconnect using same credentials, not last one saved for this server
  • QTYP should show when real type difference and not char length difference
  • Allow to pass multiple arguments file in the -DargumentsFileName switch. Use double quotes so that it looks like a single argument
Version 844 - 2012
  • THIS VERSION ONWARDS REQUIRES A NEW REGISTRATION KEY
  • Classical to Ansi Join Transformation (Beta)
  • Monitoring Enhancements: showing global counters and tempdb/exec class
  • Run Options Enhancements: showing Mon Process Activity counters
  • RSet Metadata Enhancements: helping creating java DTOs
  • Commenting lines is now a toggle (Same shortcut Alt-Shift-K)
  • Hitting run while editing server could run query on previous server
  • F11 (run at cursor) should wait until parsed
  • Update xxx set Ctrl-Space does not auto complete correctly
  • Separate Stats IO & Stats Time
  • Add ability to choose between CRLF & LF for text output of tables
  • In insert statements, ctrl click on inserted column should jump to matching expression and vice versa
  • Add dependency pragma
  • Added some connection properties CRC,DATABASE,DEFAULT_QUERY_TIMEOUT
  • Added option to hide defects in Objects Panel
  • Added some V15 set keywords + auto completion
  • Added QHNT & QHNU to detect Optimizer HINTs and unclosed Hints
  • Sporadic cannotUndoExceptions happening after AutoCompletion
  • Debugging parsed files was not enabled
  • ForceReload on ini file does not always work
  • Monitoring now displays tempdb and execlass
  • When parsing for debug don't add defects (Optimization)
  • Copy of ResultSet fails if strings contains 0x0 characters
  • Batch Analysis now output columnUsage.txt: Table<TAB>Col<TAB>(Proc)
  • Leakage of Tokens causes memory issue
  • ToCSV fails if commas are present in field
  • Create action "Run SQL At cursor" to avoid selecting current statement to run (F11) (NOTE: F11 shortcut only works after launching through menu once)
  • Output dependencies.txt is now sorted
  • Batch Analysis: sum used space of tables, #of columns, sum of chars/lines, sum of if/select/I/UD/ in text etc to get metrics
  • Add option to not attempt to open the main connections on various actions(Run, completion...) to avoid overhead
  • Columns usage missed inserts
  • Views are grafted and shown as transitive dependencies
  • Inserts don't report inserted columns as column usage
  • In case insensitive installations, in joins completion, wrong alias was taken when table name does not match original case
  • Debugging "exec proc @v = -1" hangs on parsing value "-1"
  • Ansi join transformation available on contextual menu (Experimental: Always check output)
  • Jdk 7 is now allowed
  • Unrooted unique index should not take precedence over rooted non unique
  • The field query in TableInQuery hangs after BA and holds a lot of memory, remove as part of clearReferences
  • Remove V15B defect
  • in "Deallocate [cursor] c", [cursor] is optional, parsing bug
  • Make lineNumber in ProcAnalysisNode, WEvent and BANode shorts instead of integers (Memory Optimization)
  • Created defect MUPK "update of PK"
  • Add inline defect summary -- pragma defect summary 6:1 6P:1 4:2 3:6 2:2 CommentRatio:11 Cyclomatic:5, optional
  • When table is qualified, zombie complains about a nonexistent object
  • Metadata wrongly consider length of header
  • When sarg covers portion of key, should not issue a QPRI defect
  • Get rid of allObjects Map in SQLServer (Memory Optimization)
  • Add option to cache FK & Dependensy false by default (Memory Optimization)
  • java.lang.RuntimeException: SchemaGraph: Could not find central node firstNodeName=tempdb..t_D1
  • Goto Component in server should activate server TopComponent
  • Forcing an index on a view should raise an error
  • BACKTAB with caret on left margin goes to Server DropDown (Outlook like behaviour)
  • Rules bound by sp_bindrules dont extract
  • Better synchro of Analysis Tree
  • Put "all columns" BEFORE databases in select list auto completion
  • Auto completion of parameters
  • "Find In Trees" on contextual menu of analyzed files, allows to search down the call tree
  • Alias generation should be simpler
  • QBGB: fire only 1 bug for 3 columns and give count
  • Remove wrong PERR on derived table
  • Monitor: Better handling of columns resize
  • Monitor: Better menu
  • Monitor: Add CPU etc... counters
  • Monitor: Active flag shows blocking processes in yellow
  • Monitor: Add 'Active' flag to filter out idle commands
  • Add referenced and unreferenced object list in batch analysis
  • In dump to file (rename open as file) dump leaves (e.g. for parents, will give the entry points)
  • Missing temp table should span batches
  • Better handling of [] quotes in column names
  • Derived columns should be inferred in completion
  • In Formatting, Add 2 indent from the select when inserting the "on"
  • QGWO should only show on result set select , not select into or insert select
  • When first element of index is covered, issue a QPRI defect
  • For system objects, proposed alias should be 4th letter
  • In arguments.xml default should override builtin default
  • Better handling of pragma
  • ArrayOutOfBoundException is thrown When current view is edited and has more columns
  • When batch analyzing in batch mode, do not popup license expy in N days warning
  • Expand views has strange effect on derived tables
  • Added ability ot parameterize result set column width (through avg char width floating point number)
  • Sort cmd commands (cmd<Ctrl-Tab>) chronologically
  • Fix sp_showplan substitution
  • Do not show VUNU defect on @f of RULE
  • QFPL defect is not detected
  • Sort FK better in FK completion
  • Sort databases in BA report
  • Escape the double quotes in preferences viewed as arguments.xml
  • Promote MDPR by MUWA (Ad-Hoc UserWarning). Example: do not forget to join with spid
  • MTR1 = Comments Ratio
  • MTR2 = Cyclomatic Complexity
  • MTR3 = Query Complexity
  • .SQL files are not recognized
  • Identity(int) creates syntax error
  • In top col data, for VARCHAR data (take unicode in cons) add average length in addition to max
  • Synch of tree: restore position in tree or at least node opened
  • Read logins & roles as part of startup should handle permission exception
  • join cannot join to itself (same alias)
  • Fix Login And Role Panel
  • Changed QPIU defect into 2 defects
  • Dropped "defect type" from defects.txt to reduce its size
  • Add 'to CSV' in RSET Tables. Opens excel directly
  • Completion: after a where only consider tables in the from, not all joins
  • Completion: when database is prefixed, propose objects from current DB instead of objects belonging to prefixed DB
  • MURC defect should be reset between go
  • CP is now shown even if dummy comparison - select * from sysobjects s , syscolumns s1 where 1=1
  • Some defects were output twice (eg. QDIS in insert/select constructs)
  • Ctrl-Click on begin/end matching was broken
Version 642 - 2010
  • auto completion and hyperlink of user defined functions
  • debugger query automatically run after each step (AutoQuery)
  • stop debugger when var changes
  • ObjectFinder has FullName checkbox
  • dependency lines are now with the new syntax READS_TABLE (underscore), old dep file wont load
  • close all tabs opened by dbugging session
  • does not complete just after alias<dot>
  • do auto parsing in the background, user is less blocked with auto parsing
  • format sql was systematically adding new lines
  • reduce mem consumption (debugger, batch ana & opened files)
  • potential deadlock in auto parsing
  • fence post bug on forceindex
  • NPE if comment/uncomment empty block
  • parsing is slow if huge SQL line
  • added 2 actions: Remove All/Extra Empty Lines
  • change title of locks in monitor
  • fixed syntax error on compute columns in table defs & index with computed cols
  • fixed syntax error on create existing table table_name (column_list)...
  • fixed syntax error on remove java jar "ngxjar" remove java package com
  • fixed syntax error on create [[and|or] access] rule
  • New Defects Detected:
  • MURC "Unreachable Code"
  • MMCN "Potentially Misleading Column Naming"
  • Defect Removed:
  • VWRI is now replaced with VUNU variable unused
Version 595 - 2010
  • batch analysis: defects.txt has now severity in pos 2
  • size reported for uni[var]char columns length was incorrect
  • corrected various NPEs, bugs and syntax construct
  • enhanced memory consumption
  • added double indentation flag
  • added "Show Level 1 objects" in dependency menu
  • added semi-KW & optional-ANSI-KW highlighting
  • truncate is now a write in the dependencies
  • comment/uncomment lines with Alt Shift (Ctrl) K (Ctrl to uncomment)
  • better management of functions, defaults and rules
  • db size reported was wrong
  • "many tables defect" is now parametrizable (default value 4)
  • load more FKs from html schema, not only true FK, to help joins completion
  • Regression: FKs were no longer displayed
  • check constraints are now displayed
  • Better handling of query timeouts
  • New Defects Detected:
  • MTDS "Too Many Databases Switches"
  • QNAJ "Not Using ANSI Join"
  • MBLI "Integer Value of Binary Literal is Platform Dependant"
Version 515 - 2010
  • Find Panel: This panel is a new Object Finder panel which let you search for an object name by typing a regexp. It is a much fater way of locating objects across databases. From anywhere, Ctrl-Shift-O activates the Find Panel. Arrows Up/Dn and Enter key works smartly without requiring mouse move.
  • Source Action
  • In addition to Analyze and Extract, the Source Action goes to the source file on an existing object. To be able to locate the source file for a given object, one should parametrize the path name to the object. This is done through the 'Source' tab of the preferences. This panel allows you to define rules to locate object sources using regexp based on the server, database, owner, or name of the object. This is a major productivity feature. The default action is set using the radio button on top of the chooser panel.
  • Ctrl-Click: When Ctrl-Clicking on an object in an SQL file, SQLBrowser opens this object definition in either Source, Extrat or analyze mode, dependending on how the original file was opened
  • Inline Analyzing: The Analysis is now performed on the fly. This allows to detect defect and benefit from the Analysis pane at any moment. This is a big productivity feature as it allows quick detection of defects and typos. As a consequence, the 'Show Diagram' is now accessible through right click on a query.
  • Defects Detection: Defects can be turned on or off generally, or only for the inline analysis. The severity can be changed as well.
  • Deprecated Defect: One can mark an object as deprecated. This is based on the same principle as for source files: regexp qualifies object to be marked as deprecated. These objects will be tagged with a "Deprecated" defect and can inform developers to not use this object in the future.
  • Comments Ratio: Percentage of Comments is shown as a "Metric" defect
  • Server Colors: Servers can be associated with a background color. This color will be used by editors. This allows to remind the user when they are connected to a PROD or UAT environment for instance.
  • Open Connections: Added a window "Opened Connections" to see all connections opened by SQLBrowser
  • Object Chooser/Finder: Added permissions and stat mod date to the extra info
  • V15B "V15 Issue: RHS contains col involved in join on extra tables through complex expression"
  • MDYN "Proc uses Dynamic SQL but is not flagged with 'Dynamic Ownership Chain'"
  • MUUF "Useless Update/Delete with From "
  • CUUP "Cursor updated: cursor should contain 'for update' clause: "
  • CUSU "Cursor updated through 'searched update': risk of halloween: "
  • CSBI "Cursor with 'Distinct/Union/GroupBy/OrderBy/Aggregate/SubQueries/Isolation': cursor should contain 'insensitive' clause.(V15 issue)"
  • QRPR "Repeated predicate"
  • MDPR "Deprecated item"
  • QCRS "Conditional Result Set"
  • QAPT "Access to Proxy Table"
Version 384 - 2009
  • This version delivers better performance, less memory usage, a new version of the 'write analysis' (batch analysis step) and some new features such as the ability to launch multiple sql runs at the same time
  • when autoconnect is off, pressing cancel on connection opening on debugger pad leaves debugger window always opened
  • go should be generated every 1000 lines in generate insert/update/delete
  • can run multiple SQL at the same time
  • batch analysis for case insens servers should generate cases sens hyperlinks on case sens File Systems (e.g. Tomcat or a non windows FileSystem)
  • warning: in com.sqlbrowser.sqlbm, not using spec.version.base, yet declaring implementation dependencies; may lead to problems with Auto Update (see http://wiki.netbeans.org/wiki/view/DevFaqImplementationDependency)
  • use new JConnect which fixes data type name exception
  • debugger: fail debugging smalldatetime datatypes
  • indentation: push select list, better handling of ON/JOIN
  • on Table result set, create a generate var assignment (declare + select into vars)
  • make sure that the save dir is the last dir from which a file was opened
  • metrics: sigma qi(0,N-1) = (1 -qn)/(1-q)
  • when unticking remember password, previous saved pwd should be erased
  • write analysis consumes too much memory when # of objects is > 10000
  • put tooltips on table cells to display enire content
  • procs which calls to non fully qualified procs generate MZMB (zombies)
  • provide sb32.ico in distribution to allow for use on the sqlbrowser cmd or shortcuts
  • self locking could happen in certain circumstances at startup if autoconnect is on
  • zip schema.xml should be encoded in utf8
  • dont show temp files in open recent files
  • when killing a connection and closing the window, the popup should not show
  • add query and internal query timeout options
  • SQL running for ever in certain cases (progress bar does not stop)
  • add ability do download plugins e.g. Subversion 1.5
  • MGTP defect on tables are repeated
  • max row count displayed does not match real row count
  • some completion issues (eg select dt|)
  • table should not remember selection mode
  • add a new defect to detect group by without order by (V15)
  • add SQL functions completion help
  • fix "out of memory" when reading many rows
  • use new jconnect
  • getColumnTypeName is buggy (mem) + error when coming from dirct connect mimic sp_sql_type_name
  • Exception: AST_keyword can not be cast to AST_expression_list
  • bad FK loading in some circumstances (wrong dbid...)
  • rowcount is not formatted with thousands sep in tabs in result set viewer
  • Add 'Select All And Copy With Headers' on tables
  • when not connected, dont load dependencies/schema
  • don't put generated & select temp files in the history
  • in Tables, Copy float should be full precision, not 3 decimals only
  • don't generate an alias which is 'go'
  • show procxmode info in object explorer
  • remember lat statements sent and provide access in completion, use 'cmd' magic keyword + ctrl space
  • index of tables not owned by dbo are not displayed
  • generate insert has inconsistent dates compared to output (e.g. when midnight)
  • grant decrypt on table to role provokes syntax error
  • reformat does not handle 'go' very well
  • paste from table copy into text required focus loose/gain to function (alt Tab, alt Tab)
  • copy table to excel: java.lang.IllegalArgumentException: Cannot format given Object as a Number
  • right click does on database list does not work on MacOS
  • completion should be case insens on case insens servers
  • edit server property does not change server property
  • db size reported as negative on batch analysis when sizw is gerater than 2G
  • show loginame in sysobjects
  • save as on same file trashes original file
  • need to scroll to line when showing batch
  • copy of result set tables should use regional settings for decimal sep but no grouping
  • better handling of stmt line display
Version 231 - 2008
  • 'Save As' on the same SQL file would trash the file and loose content
  • keep a 'Remember Password' flag per server to allow DBAs to log in temporarily on a user machine with privilege account
  • database size gets negative when over 2 gigs
  • read & writes IOs should be formatted with thousands sep (but maybe not K, M etc, or create an option)
  • change registry options to file system based option. IMPORTANT: .reg overwriting should be done through arguments.xml. See function to dump keys in export
  • write dep & schema as zip files to speed up reload
  • IO times are sometimes not well reported
  • dont trim left side of raw messages
  • create a 'View Log' menu - log to 1 file only
  • failure on joins assertion when same column on both sides of join
  • dynamic sql is not expanding variable to value correctly
  • leave ability to edit servers but warn when save if non synthetic. this will allow to copy the host/port
  • in case insens servers, generate insert etc does not find columns with different case
  • add Proc and Line in perf messages
  • debugger has goto label see mail
  • new temp file has no F10, flip tabs and it works
  • No recognition of file ending with capital .SQL
  • removed @@maxpagesize 12.5 dependency
  • add defect 'grant to public'
  • when input file is too big, dont restore at startup
  • add 'skip identity columns' checkbox to generate insert
  • apply the same dictionary order sort on databases than the one used for objects
  • surround cells copied from tables with quotes (Excel compatible, flag)
  • downgrade QSWV to warning
  • add where clause to generate insert
  • put temporary dir in output dir
  • permission query is wrong, depends on the database
  • lines over a million dont show well 1.6M
  • put a trace for load of roles
  • string index out of range sometimes appears in capture for RPCs
  • no detection of CP on "select * from sysobjects s , sysobjects s1"
  • re-introduce lowercaseKeyword and uppedrcaseKeyword options
  • table size is underestimated in object chooser
  • failing to load properly database objects in certain circumstances
  • first update count in debug should be disgarded
  • if one result, zoom it
  • empty print statement are disgarded
  • created warning on 'partial join on PK'
  • progress bar sometimes stays up
  • better tree node filter behaviour on selection in parsed text or nodes
  • MUCO defect should only be detected for return, ok for ifs
  • no need to load indices on views
  • reorder menu on text pane
  • same letter tab may appear more than once in object chooser due to owner discrepancies
  • having max ( tmp.dt_open )= min ( tmp.dt_open ) generates bad QPSC defect
  • hit cancel on connect from drop down, still connects
  • reduce size of syntax error "was expecting ... is too long"
  • add option to open objects in multiple windows
  • add option to not show acknowledged defects
  • NPE in login panel when not connected
  • Add flag to load dep and FK on connection
  • NPE in BA when turning off RREG defects and Write Analysis is ON
  • do 'generate Update/Delete' command
  • load FK and schema should properly timeout
  • BA: creation date always appears as '01 Jan 70'
  • print in status of exec stmt should skip declare @x...
  • do an Integer formatter
  • does not parse access rule creation
  • database search: hangs on errors, does not parse tables, does not search comments
  • create dump monitoring button
  • cartesian product with where 1=2: create 'whereClause.isAlwaysFalse()'
  • Add lockscheme Lock Scheme: 8192 -> all pages, 16384 -> data pages, 32768 -> datarows
  • formatting floats/double does not use the number formatter
  • debugger: strings containing embedded quotes are not correctly interpreted. NB strings are no longer quoted in variable editor
  • debugger: while/if imbrication sequencing issue
  • bad colors in monitor
  • token start issues in search
Version 6.71 and Before
  • Run SQL: Setting rc to infinite would go back to 100
  • Open Object: Opening an object would fail with "Not Found" when object was modified
  • Arguments: When xml file for arguments is not correct, preferences were lost
  • Run SQL: Display of messages are consuming too much resources
  • Run SQL: When columns are shuffled, wrong column header was used in selections
  • Should be able to parse non dbo-owned objects. Remove 'Object Owner UID' flag
  • Batch Analysis: columns order in tables was wrong
  • In result tables, do smart row/col/free selection by double click/triple click/drag mouse
  • Added 'Unclosed Set Forceplan ON' defect
  • Fixed Wrong 'Useless Code' on 'if not exists(...)'
  • Added Login And Roles Display Panels
  • Fixed some Monitoring Issues
  • Added flag to turn on/off monitoring history because of memory consumption
  • Result Set Tables Selection Mode is entire row
  • Fixed issue happening sometimes in batch analysis (mix of database objects)
  • Fixed Object Chooser wrong object selected when sorted
  • Fixed auto-parsing issue (wrong error mark) happening in certain cases with block comments
  • Added new tracked defect: "MUTI", "Update temptable with identity - 12.5.4 Regression" , SEVERITY_WARNING
  • Added new tracked defect: "MUIN", "Column created using implicit nullability" , SEVERITY_WARNING
  • Dependency window would sometimes come back in the center as an Editor Window
  • Fixed NullPointerException in database search
  • Fixed HTML report (write analysis) when column name contained a dot
  • Fixed HTML report when string literals contained HTML markup
  • Added some basic metrics like line count etc. Not yet in HTML report
  • Added new defect to detect assignment to var with multiple rows
  • Added new defect to detect useless code
  • Added new defect to detect no error check after upd/ins/delete/exec
  • Added screen to enable/disable defects detection
  • Enhanced Monitor (added locks and history)
  • Downgraded defect QPSC (Same column in condition) from Error to Warning
  • Bad "unused var" reported in "update .. set @v = @v + ..."
  • Put file pointers to preferences_overwrite.xml into argument file. Next version will supress these files in favor of the argument file only.
  • Removed call to rsmd.getColumnTypeName as it consumes a huge amount of memory when showplan is turned on (jconnect bug)
  • Skip "syslogin" system table from size inspection (too long)
  • Enabled usage of "[" for correlatin names (msoft compatibilty)
  • Forcing an index which does not exists is now an error
  • Added a button "don't show again" on error popup during SQL Run
  • Fixed NPE in send/debug on servers with localized languages
  • Dependencies now shows together with object chooser
  • sp_showplan proc name is parmetrizeable in Options for execution rights issues
  • Dependencies now show temp tables
  • Schema and Dependencies files now get loaded from input file or URL
  • When opening New window, current Server should be assigned (and not last opened)
  • Can now mark many lines in monitor
  • Add "Logged In Since" in monitor (vs delta only)
  • Ability to parametrize the user id used to select object lists
  • Speed up connection opening over the wan
  • Re-introduced customized syntax tree for lookups
  • java.lang.NullPointerException in completion when from is last KW
  • When extracting, server should be server of extracted proc
  • Do not allow disconnect/reconnect in debugger pad: connection is shared
  • Put an option to not expand views in schema
  • Memory leak could happen after interrupting SQL run
  • Must add newline after proc extract which does not end with a new line
  • Possible java.util.ConcurrentModificationException when 'edit connection param'
  • After 'Save As' server should be reopened if it was opened before
  • Remember the last last database selected when opening the connection
  • Interrupt SQL would some time not work
  • Upgraded JConnect to EBF 14466
  • Other misc fixes
  • Should optimize time to display big tables
  • All In One: table size should not be wider than parent
  • Syntax should understand top N (select, union, update, delete)
  • F9 on 2 subsequent go without anything in between produces gogo
  • Completion on 'on' keyword is broken
  • Ansi join & on should indent properly
  • Insert with not all columns is OK when missing col is identiy
  • Completion: exec sp_xxx should always work, sybsystemprocs is implicit
  • Table extract should show FK & PK
  • Proc extract shows double 'use' stmt
  • Multiple Results are not shown in multi batch
  • Debugger: better handling of cancel
  • Join without index does not show on views
  • V15 columns in tables/views badly ordered
  • Objects should be sorted case insensitive
  • List of Database passed to batch analysis should be reported in index
  • IO Summary Read/Writes should be formatted as numbers
  • Number formatting should not only apply to float but to all numbers
  • Monitor: Dont show error when bad user, just print error, causes screen jitter
  • Monitor does not show anything when constant bad user error
  • Zip file should be renamed with version number
  • NullPointerException when no connection and parsing attempted
  • Debugger: History and Manual History not handled well
  • Reformat now insert newlines before main statements - primitive approach
  • Objects parsed should be restricted to uid = 1 (dbo owned)
  • Pragma search is too slow. Shows on big procs
  • Double Pragma Acknowledge does not work for same statement
  • the 'Open recent' list was poluted by additions to the favorites directory
  • 'Select *' submenu did not react well to interruptions
  • 'Search Database' did not allow for any other activity
  • Defects needed to be split between 'defects for this procs' and 'defects for sub procs'
  • Monitor still showing exceptions for bad user detection
  • Severity less than 10 should not popup even if 'Popup Errors' is set
  • Index Overlap should not be thrown when indices are of different unicity
  • Red Activity bulb on lower right sometimes stayed red
  • Column Stats
  • Better behavior (truncation of char columns, interuptable process,...)
  • Options to select statable columns
  • Generation is in in outputdir/server/columnstats/object_name.html
  • All-In-One: all result sets are shown in single pane
  • Batch Analysis now scans all tables from database as well
  • Batch Analysis output now goes in subdirectory (server name) of output dir
  • Foreign Keys are loaded asynchronously at server opening
  • schema.xml and dependencies.txt are loaded from new preference "Input Dir or URL". Can be specialized per server.
  • Unrecognized pragma are shown in error pane
  • Monitoring: better handling of invalid user in db or other errors
  • Select * from table scripts is no longer generated in permanent directories implying a save before run
  • Analysis files have yellow background, caret line is highlighted with FFFF7F
  • cast() keyword is recognized
  • Completion:
  • Aliases which are keyword (as, asc etc...) are no longer proposed in completion
  • Completion proposes joined tables first (in CYAN)
  • NPE on initial completion is fixed
  • Can now step into dynamic execs
  • Better MTYP (Type assignment mismatch) analysisput
  • Dependencies displayer missed database in save selection
  • Expression $-3 now parses correctly
  • Regression on Batch Analysis
  • Database Search: NullPointer & ArrayOutOfBond spurious exceptions
  • Database Search: Search could fail when user clicked and search is not finished
  • Database Search: Errors in offsets
  • Left Side Trees: Click on a table does not display table definition
  • Run SQL: add option to automatically save file before run
  • Run SQL: Exception when user has insufficient rights
  • Run SQL: MetaData shows numeric type with no scale
  • Monitor: add ability to freeze, change sleep time, sort columns & trace
  • Batch Analysis: clear Foreign Key cache before analyzing
  • Batch Analysis: Foreign keys have sometimes wrong ordering
  • Initial revision of Netbeans based SQLBrowser

Tips. Read Me!

Schedule the Batch Analysis

A Batch Analysis produces a web report containing all proc text and cross reference data. It also produces two files: dependencies.zip and schemafk.zip. These 2 files can be read at startup by SQLBrowser and allow you to (1) See dependencies between objects selected in the object selector and (2) Auto-complete joins when writing queries. This is a great advantage of SQLBrowser over other products. Please lookup Batch Analysis in the Manual to get more information

Keyboard Shortcuts

  1. Oject Lookup: Ctrl-Shift-O
    This will take you to the Object Selector. From there, type a few letters matching the object you are looking for. This will select the objects matching this pattern (Expert Tip: can be a regex). Then use the Down Arrow to move to the desired object. Then press Enter to open the object source code (or to the Extract or Analyze depending on the default action setting radio button - most people use the 'Source' action)
  2. DB or Server Lookup:
    To select a Server or a Database in the dedicated Drop-Down boxes, just type a few letters matching the server or database name. Then use the Down Arrow to select the server or database. Then press Enter to open this server or select this database
  3. Comment Lines: Ctrl-Slash (was Alt-Shift-K)
    To comment a block of lines: Highlight them and hit Ctrl-Slash. This action acts as a toggle (uncomments when pressed twice). Tip: If you are not used to ANSI joins, you will quickly see an advantage of using them as taking away a JOIN clause is much easier by commenting it
  4. Change Current Server:
    To change the current server, put the cursor on the left margin and hit Back-Tab. This will take you to the Server drop down. From there using the tip #2 above you will be able to select the server you want by using the keyboard only. Select the server you want and hit Tab. This will take you to the Database drop-down. From there, you can either select a specific database or hit Enter to go back to the Editor
  5. Run SQL: F10
    To run a portion of SQL, highlight the portion and hit F10. Hitting F10 without selection plays the entire file
  6. Run SQL AT Cursor: F11
    To run the current SQL statement at the cursor, press F11. This is much faster than selecting a single statement and pressing F10
  7. Indent/Un-indent: Tab/Back-Tab
    To Indent/Un-indent code, select the portion and press Tab or Back-Tab
  8. Reformat Code: Alt-Shift-F
  9. Navigate Between Files: Ctrl-Tab or Ctrl-Back-Tab
  10. Open: Ctrl-Click
    - Opens the object under cursor
    - Goes to a match (e.g. Begin/End pairs)
  11. Auto Complete: Ctrl-Space
    - Auto-completes joins (type “join” then Ctrl-Space)
    - Auto-completes variables or columns
    - Display previous commands (type “cmd” then Ctrl-Space)
  12. Auto Complete Any Word: Ctrl-K/Ctrl-Shift-K
    Auto Completes any word appearing in open documents
  13. Auto complete Joins: join<CTRL-SPACE>
    - Auto-completes variables or columns
    - Display previous commands (type “cmd” then Ctrl-Space)
  14. Command History: cmd<CTRL-SPACE>

Use a Version Control System to manage SQL Files

SQL Scripts are source files just like Java files are source files. Working directly on database objects by "Extracting" them is from another age. Extract is there only to look at objects, never to modify code. Have your source SQL files organized in directories per database is the best choice.

Use Favorites for SQL Directories

SQLBrowser has no notion of projects. However, you can add folders where you manage non version-controlled SQL Files to the Favorites. You can use the Find contextual menu on the favorite panel to quickly search for patterns in your files

Finding strings in stored procedure

Use the Database Find contextual menu. This command quickly scans database objects for a given pattern.

SQLBROWSER SOFTWARE DOWNLOAD LICENSE AGREEMENT

BY INSTALLING THIS SOFTWARE YOU EXPRESSLY ACCEPT ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT. PLEASE READ THEM CAREFULLY. IF YOU DO NOT WISH TO BE BOUND BY THESE TERMS YOU MAY NOT DOWNLOAD THE SOFTWARE. UPON YOUR ACCEPTANCE OF THIS AGREEMENT, SQLBROWSER GRANTS YOU A LIMITED, NON-EXCLUSIVE LICENSE TO USE THE SOFTWARE AS FOLLOWS:

  1. VOCABULARY. In this agreement, the words "Software" and "Product" are meant according to the following definitions:
    Product : SQLBrowser product, fully functional version, sold by SQLBROWSER
    Software : Evaluation version, with limited features, of the Product
  2. USE OF THE SOFTWARE. You may install and use the Software (and accompanying documentation) solely for purposes of evaluation, in order to check that SQLBrowser could provide for your needs and to make the decision of buying (or not) the Product. You may not use the Sofware for production purposes.
  3. COPY AND TRANSFER. You may reproduce the Sofware solely for your internal purposes. You are not allowed to transfer a copy to a third party. The Software may not otherwise be transferred, sold, assigned, sublicensed or otherwise conveyed (whether by operation of law or otherwise) to any other parties.
  4. OTHER RESTRICTIONS. You may not modify or adapt the Software in whole or in part (including but not limited to translating or creating derivative works),decompile or disassemble the Software.
  5. COPYRIGHT AND OWNERSHIP. The Software is owned by SQLBROWSER and is protected by copyright, including without limitation by French Copyright Law (Code de la Propriete Intellectuelle) and international treaty provisions. You acquire only the non-exclusive right to use it as permitted herein and do not acquire any rights of ownership to it.
  6. SUPPORT. This download Software is provided on an "as is" basis and are unsupported. This Agreement does not entitle you to any maintenance or other services or any updates or new versions of the Software.
  7. TERMINATION. This Agreement and your license to use the Software will continue so long as you remain in compliance with the terms and conditions of this Agreement(especially article 2). After evaluation of the Software or if you breach any of your obligations hereunder, you shall cease using the Software immediately and shall destroy all copies of the Software (and associated Documentation) in any form. All disclaimers of warranties and limitations of liability shall survive any termination of this Agreement.
  8. LIMITED WARRANTY. The Software is provided AS IS, without any warranty whatsoever. You assume the full responsibility for the selection of the Software to achieve your intended results and for the installation, use and results obtain from the Software. SQLBROWSER DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABLE QUALITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
  9. LIMITATION ON LIABILITY. SQLBROWSER SHALLNOT BE LIABLE FOR ANY LOSS OR DAMAGE HEREUNDER, INCLUDING, WITHOUT LIMITATION, ANY INACCURACY OF DATA, LOSS OF PROFITS OR INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. GOVERNING LAW; COMPLETE AGREEMENT.This Agreement constitutes the complete agreement between the parties with respect to the Software and is governed by the laws of FRANCE.
BY DOWNLOADING THIS SOFTWARE, YOU ACKNOWLEDGE THAT YOU HAVE READ, UNDERSTOOD AND AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THAT YOU ARE DULY AUTHORIZED TO DO SO.