github jamtheradar/SQLExtended v2026.9.22.2036
SQLExtended 2026.9.22.2036

6 hours ago

DataByte for SSMS 2026.9.22.2036

New

  • IntelliSense: JOIN suggestions built from your foreign keys. Type JOIN after a table and the list now offers whole clauses — table, alias and ON predicate together — for every table related to what is already in the query. SELECT * FROM [Order] o JOIN offers dbo.Customer c ON c.Id = o.CustomerId, dbo.OrderItem oi ON oi.OrderId = o.Id and dbo.OrderStatus os ON os.Id = o.OrderStatusId. Both directions of the relationship are offered: the tables this one points at, and the tables that point back at it (the child table is at least as often the one you want, and it is invisible to the outgoing keys alone). Aliases are derived from the table name — OrderItem becomes oi — and never reuse an alias already in the query or a reserved word, either of which produces SQL that runs and quietly joins the wrong thing. Composite keys come through as a single predicate with AND. Two keys to the same table (bill-to and ship-to, both to Address) appear as separate suggestions labelled with the key name that distinguishes them. The suggestions sit above the ordinary table list rather than replacing it, so joining an unrelated table is unaffected. This complements the existing ON-clause completion, which offers the predicate once you have already named the table.

Fixed

  • Fifteen settings did nothing at all. Every one of them saved, reloaded and showed the right state in DataByte Settings, and nothing anywhere read the value: IntelliSense's "Enable IntelliSense", "Suppress built-in SSMS IntelliSense", "Auto-trigger after keywords", "CamelCase matching", "Show column type info" and "Show row counts"; SQL Search's default scope, its three "search in" boxes and its maximum result count; and the schema cache's auto-refresh interval, maximum cache age, "auto-load on connect" and "detect DDL changes". The completion list was hardcoded on, the Search window took its state from the window rather than your defaults and capped at 500 results whatever you set, the cache refreshed every five minutes and purged after seven days regardless. The master switch was the worst of them: unticking "Enable IntelliSense", seeing no change and concluding the extension was innocent is a wrong answer delivered confidently. All fifteen are now read, and a build-time check fails if a new setting is ever added without being wired up.
  • SQL Search and Schema Validation opened with an empty database list. With more than one server connected, both windows opened showing a server name above a database list that never populated, and because reselecting the same entry does nothing, the only way out was to pick a different server and come back. Searching was impossible until you did.
  • Always On Monitor took minutes to refresh on instances with many availability groups. The HADR views are views over internal functions with no statistics, so the optimiser was free to re-execute one per row of another — each view on its own returned instantly while a four-way join between them ran for minutes. Each poll now takes one copy of each view and joins those, and every tab is built from a single consistent read of the state rather than nine staggered ones. If the copy step fails, the dashboard falls back to reading the views directly exactly as before.
  • IntelliSense keyword recasing could mangle the line while you were typing. The recase was applied from inside the buffer's own change notification, against a snapshot that any other handler editing ahead of it would invalidate — so on fast typing the replacement could land at the wrong offset and duplicate text instead of recasing it. It is now applied after the keystroke and re-validated first, and skipped outright if anything has moved.
  • Formatter: the INSERT layout options stopped working, and a derived table hanging off CROSS/OUTER APPLY was indented to a column no setting chose. Both came from ScriptDom's own output changing shape underneath the formatter; "columns per line", "opening ( on the table line" and "parentheses on same line" all silently stopped applying to INSERT column lists, and an APPLY moved to its own line indented five spaces from FROM. Fixed, with the APPLY now pulled back to the FROM's own column and carrying its block with it, exactly as a JOIN already did.
  • Settings: the description under "Suppress built-in SSMS IntelliSense" now says what the option actually does — it stops SSMS's own list opening for the completion commands (Ctrl+Space, Ctrl+J) so only one list appears — rather than "prevents built-in completions from interfering".

Updated

  • Microsoft.Data.SqlClient 7.0.3, SQL Server Management Objects 181.36.0 and TransactSql.ScriptDom 180.107.0.

Don't miss a new SQLExtended release

NewReleases is sending notifications on new releases.