Jam SQL Studio Blog
News, guides, and tips for SQL developers.
Azure Storage “This Request Is Not Authorized”: Which Role Is Missing
Why Owner, Contributor or Reader can list containers but not read them, the error as Azure Storage Explorer, the portal, az, AzCopy and the SDKs show it, a table of ten error codes with their causes and fixes, the least-privileged data role for each Blob, Data Lake, Files, Queue and Table operation, and the causes a role does not fix: firewalls, SAS letters, disabled Shared Key and the wrong tenant.
Azurite in Docker: Run It, Connect to It and Browse It with a GUI
docker run and a docker-compose.yml for Azurite with a persistent volume, the flags that matter in a container, the devstoreaccount1 connection strings, and fixes for the API-version, connection-reset and connection-refused errors, tested on Azurite 3.36.0 and 3.37.0 — then how to browse what is inside.
Visual Query Editor: Edit SQL as Clause Cards
The statement under your cursor as FROM, SELECT, WHERE, GROUP BY, ORDER BY and LIMIT cards you can edit — add a column, a filter or a join, switch an UPDATE to another table — with every edit written straight into the SQL. In a Query tab's Visual view or a compact editor at the statement; on by default in 1.5.3, still Beta, for SQL Server, PostgreSQL, MySQL, Oracle and SQLite.
September 26, 2026The Most Common SQL Server Errors, Ranked from App Telemetry
Incorrect syntax near (102), Invalid column name (207) and Invalid object name (208) each failed queries for 30–34% of the 359 installations that ran SQL Server queries over 60 days. This post ranks the top 17 error numbers and gives the exact message, the usual causes and a T-SQL fix for each of the top nine, from 102 to 8120. It also covers how the one-click Switch database… fix works and the top PostgreSQL, MySQL and Oracle query errors from the same data.
September 26, 2026PRINT, RAISERROR WITH NOWAIT, RAISE NOTICE and DBMS_OUTPUT: When Each Message Reaches the Client
We timed server messages on SQL Server 2025, PostgreSQL 16 and 19, Oracle 26ai and MySQL 8.0 / 9.5 with the drivers Jam SQL Studio uses. A PRINT before a 3-second wait arrived after 3.003 s, while RAISERROR(…, 0, 1) WITH NOWAIT arrived after 0.004 s. RAISE NOTICE is sent immediately but filtered by client_min_messages. DBMS_OUTPUT can only be read after the call returns, and MySQL has no PRINT at all. The post also covers why each one goes missing and what Jam SQL Studio shows.
MySQL Error 1175: Safe Update Mode and DELETE Without WHERE
What sql_safe_updates actually checks, reproduced on MySQL 8.0.46 and 9.5.0: why WHERE 1=1 still fails while WHERE id > 0 passes and rewrites every row, what --safe-updates also sets, Workbench's default, and three fixes including a per-statement SET_VAR opt-out. Plus which engines have no such guard, and what 1,720 confirmation prompts in Jam SQL Studio show: 91% confirmed, yet half the installations cancelled at least once.
Azure Storage Support: Blobs, Data Lake (ADLS Gen2), File Shares, Queues and Tables
Jam SQL Studio 1.5.3 connects to Azure Storage accounts, SAS-scoped resources and the Azurite emulator. Blobs and share files upload and download as background jobs you can cancel, and interrupted downloads and uploads larger than one block can resume. You can edit blob properties and access tiers, generate SAS tokens, work with SMB and NFS file shares and their snapshots, create and move Data Lake directories and change their access-control lists (also recursively, as a background job), peek at queue messages without consuming them, and open Table entities in the Table Explorer grid with typed filters and ETag-checked edits. AI agents get storage_* MCP tools whose writes wait for an approval dialog that says what each write does and where.
CVE-2026-14669: The PostgreSQL to_char Bug to Patch Now
PostgreSQL's August 13 release closed 28 CVEs — its largest security batch ever — and the one to act on is a to_char heap overflow any logged-in user can turn into code execution as the postgres OS account (CVSS 8.8, public PoC). We read the patch and confirmed the user-controlled path on a live server: what the bug is, whether you're exposed, how to check your server's real version, and the fixed builds (14.24 / 15.19 / 16.15 / 17.11 / 18.6).
Show Names Instead of Foreign-Key IDs
The grid reads 3 · Pending instead of 3. Declare a lookup enum on one column, mark a reference table once for every column that points at it, or resolve names on demand for tables too big to cache — while SQL, copy, and export keep the raw key. AI agents get the same metadata over MCP and can propose declarations behind your approval, badged AI-created.
What's New in Oracle 26ai (and Where 23ai Went)
26ai isn't a new release — it's 23ai renamed via the October 2025 Release Update, with 24 and 25 skipped to match the calendar. The genuinely new part is the 23.26.x RU content: CREATE ASSERTION (first major engine to ship SQL-standard assertions), the QUALIFY clause, Select AI in every deployment, Deep Data Security, post-quantum crypto, DATEDIFF/DATEADD — versus the 23ai features every "26ai" list recycles. Plus support clocks (21c dies July 2027; 19c runs to 2029) and what a thin-mode desktop client needed to change: almost nothing.
SQL Server Connection Errors We Actually See, and How to Fix Each One
Login failed 18456 (and why the client always says State 1), pre-login handshake failures, Connection Timeout Expired vs connection refused, the semaphore timeout, and pool exhaustion — ranked causes and fixes for each, drawn from the per-engine error classifier we run across real telemetry. Plus the war story: a pool stall that spent weeks masquerading as a query timeout, and the 10-second validation deadline that fixed it.
August 27, 2026Where Every SQL Client Stores Your Saved Connections — and How to Move Them
The exact on-disk store for SSMS, Azure Data Studio, DBeaver, VS Code, MySQL Workbench, TablePlus, ODBC DSNs, and Oracle SQL Developer — per-OS paths, formats (XML, JSONC, GRT, binary plist, registry), and how each protects passwords (DPAPI, keychains, app-bundled AES keys). Code-verified against the parsers Jam SQL Studio ships, with the manual export route and gotchas for each client.
August 25, 2026What's New in SQL Server 2025
SQL Server 2025 (17.x) went GA on November 18, 2025, and since Microsoft's September 2026 documentation update its JSON type, JSON index, .modify() and JSON_CONTAINS are documented as GA too. Inside: the native binary JSON type, VECTOR(n) columns capped at 1998 float32 dimensions, VECTOR_DISTANCE and preview approximate search, AI models as database objects, seven REGEXP_ functions, optimized locking — plus exactly which features still need the PREVIEW_FEATURES flag, and what it took to put VECTOR in a visual table designer.
How to Import Excel into a SQL Database: 3 Ways
A free browser converter, a desktop import wizard, and each engine's native bulk loader — with when to use which. Runnable OPENROWSET, BULK INSERT, COPY/\copy, and LOAD DATA snippets, the local_infile and pg_read_server_files traps, and the Excel-side damage (leading zeros, serial dates, 15-digit rounding) that breaks imports before any SQL runs.
What's New in MySQL 26.7 — and Why There's No 9.8
MySQL 26.7.0 (July 28, 2026) is the first calendar-versioned Innovation release — YY.M.P, so 9.7 was the last sequential line. Change Stream Applier, Thread Pool in Community, post-quantum TLS options, the 9.7 LTS features you get on the way there — and what a desktop client does when a server version string suddenly starts with 26.
Schema & Data Compare: What Changed in 1.4.18
Compare depth presets with saved per-engine defaults, shareable settings files, sync scripts wrapped in a single transaction, member-level selection, Apply as INSERT in Data Compare, and ~20x faster SQL Server comparisons — plus the theme running through the release: a comparison that says what it didn’t compare instead of calling it identical.
July 11, 2026Spatial Support: Map Geometry & Geography Across 5 SQL Engines
Jam SQL Studio now decodes and maps geometry & geography across PostgreSQL/PostGIS, MySQL, SQL Server, Oracle (SDO_GEOMETRY), and SQLite (SpatiaLite / GeoPackage) — a peek map in the grid, a Query Editor Map view, a Table Explorer map pane with bbox / distance filters, a layered Spatial Explorer, and curved-geometry rendering that keeps Copy WKT exactly curved. Basemap on by default.
SQL/PGQ in Practice: GRAPH_TABLE on Oracle and PostgreSQL
The SQL:2023 property-graph extension, hands-on: define a graph over existing tables, query it with GRAPH_TABLE, and see what Oracle 23ai+ actually accepts, live-tested with exact ORA- error codes (bounded quantifiers yes, path modes no). PostgreSQL 19 had an implementation in its early betas; Beta 4 reverted it.
Query Azure Data Explorer, App Insights & Azure Monitor From the Desktop
Kusto.Explorer is Windows-only, the ADX web UI is browser-bound, and Azure Data Studio retired Feb 28, 2026. Jam SQL Studio adds a first-class Azure Data Explorer engine on Mac, Windows & Linux — KQL with Microsoft's language service, Entra sign-in, App Insights / Azure Monitor via query proxy, enum / dynamic-JSON / loose-FK filter chips, and | render charts. Read-only by design.
PostgreSQL 19 Release Date and New Features (Beta 4)
Beta 4 shipped September 24, 2026; the release candidate is due in early October and GA is planned for October. What is still in PostgreSQL 19, what Beta 4 removed (SQL/PGQ, partition MERGE/SPLIT, FOR PORTION OF), the new system views, and where Jam SQL Studio supports each.
Oracle on Apple Silicon: Connect From an M-Series Mac With No Instant Client
Connect to Oracle from an M1/M2/M3/M4 Mac with no Oracle Instant Client and no Rosetta. Jam SQL Studio uses node-oracledb Thin mode — pure JavaScript, direct TCP, nothing to install — so the ARM64-vs-x86 client question never comes up. Plus the honest Thick-mode limit and when you still need SQL*Plus.
Convert SQL Server Stored Procedures to PostgreSQL: A Worked Example
One realistic T-SQL procedure ported to a PL/pgSQL function, line by line: @param sigils, the DECLARE section, SELECT @x = → INTO, SCOPE_IDENTITY() → RETURNING, OUTPUT params, and result sets → RETURNS TABLE. Plus the transform checklist for the rest.
Convert SQL Server Triggers to PostgreSQL: INSERTED/DELETED → NEW/OLD
The hardest object to port. T-SQL statement-level triggers see row sets via INSERTED/DELETED; PostgreSQL row triggers see one NEW/OLD via a separate function. When per-row is wrong, use statement-level transition tables — the true 1:1. Both forms verified on PostgreSQL 16.
T-SQL to PostgreSQL Function Cheat Sheet
Every common T-SQL built-in and its Postgres equivalent — ISNULL→COALESCE, GETDATE()→now(), LEN→length, CHARINDEX→position, DATEADD→INTERVAL, NEWID()→gen_random_uuid() — plus the five that bite hardest because they don't error. Checked against PostgreSQL 16.
Migrate MySQL to PostgreSQL — Tables, Types & Data
Move MySQL or MariaDB tables to PostgreSQL: schema and data, with tinyint(1)→boolean, datetime→timestamp, AUTO_INCREMENT→IDENTITY, and the unsigned / ENUM gotchas spelled out.
Migrate Oracle to PostgreSQL — Tables, Types & Data
Move Oracle tables to PostgreSQL: schema and data, with VARCHAR2→varchar, NUMBER→numeric/int, the time-carrying DATE→timestamp, and CLOB→text.
Migrate SQL Server to MySQL — Tables, Types & Data
Move SQL Server tables to MySQL: schema and data, with bit→tinyint(1), uniqueidentifier→char(36), datetime2→datetime, and IDENTITY→AUTO_INCREMENT.
How to Migrate SQL Server to PostgreSQL — Tables and Data, Right From the Object Explorer
Skip the conversion project. Right-click a SQL Server table, point it at a Postgres connection, preview the translated CREATE TABLE, and copy schema + data — types, identity, defaults, CHECK, foreign keys, and indexes — with value coercion (bit→boolean, nvarchar(max)→text, datetime2→timestamp). Row counts verified, every manual follow-up flagged.
SQL Server ↔ PostgreSQL Data Type Mapping: The Complete Reference (Both Directions)
Every MSSQL↔Postgres type conversion, both ways, including the traps: SQL Server timestamp is rowversion (→bytea), Postgres bit isn't a boolean, Postgres char types return as N-types, tinyint widens, money loses its spelling. Exactly what the tool emits.
Click Through a Database: Foreign Key Navigation
Foreign-key clicks no longer spray new tabs. A clickable breadcrumb tree, a Single-Row Details View, and loose foreign keys as first-class hops — all in one Table Explorer tab. Cmd-click still opens a new tab for users who prefer the old behaviour.
Database Blueprint: a Git-versioned folder of .sql files in sync with your database
Materialize a SQL Server, PostgreSQL, MySQL, Oracle, or SQLite database as a folder of .sql files kept in two-way sync with one or more linked environments. Preview every change, run a three-way merge against a baseline, apply table / view / procedure / function / schema edits via Schema Compare, and use the built-in Git panel to commit, branch, pull, push, and resolve merge conflicts — all without leaving Jam. Table DDL edits in Tables/*.sql round-trip back to the database (SQLite tables cover add / drop column only). And it's not just schema — capture table rows into a tracked Data/ folder and push them back with Sync data folder → DB.
Filter JSON Columns Across 5 SQL Engines: A Hands-On Tour
JSONPath sub-operators, peek popovers for path discovery, validity-guarded text-as-JSON declarations, loose foreign keys and enums on JSON paths — what JSON support in a SQL client should feel like, uniformly on PostgreSQL, MySQL, SQL Server, Oracle, and SQLite.
May 20, 2026Polymorphic Foreign Keys in SQL: Source-Filter Scoping for Rails / Django / Laravel
Model commentable_id / commentable_type-style polymorphic associations and soft-delete-aware references without a real FK — source and target filters on loose foreign keys, with a live peek pane and an overlap-detector that catches the "forgot the discriminator" case.
Enum Columns: A Dropdown Filter for the status / kind / role Columns Your Schema Forgot to Document
Declare any column as an enum — the filter chip becomes a dropdown sourced from MySQL ENUM / Postgres pg_enum, column-level CHECK constraints, or a sampled SELECT DISTINCT. Capped at 200 values, 100k rows, 5s. Works on all six supported engines.
How to Migrate from MongoDB to PostgreSQL, MySQL, SQL Server, Oracle, or SQLite
The 7 migration steps, BSON type mapping for five engines, a mongoexport-to-Postgres worked example, and the checks that prove the data matches.
May 14, 2026MongoDB Alternatives in 2026: Postgres, MySQL, Oracle, SQL Server, SQLite, and More
Ranked MongoDB alternatives for 2026 — relational JSON engines, FerretDB, AWS DocumentDB, ScyllaDB — with a comparison matrix and a "how to choose" decision narrative.
May 12, 2026Oracle JSON Support: From 12c to the Native 21c JSON Type
Oracle's JSON story spans a decade — JSON_VALUE, JSON_TABLE, the IS JSON constraint, the native JSON type in 21c, and a MongoDB-compatible API in 23ai. The full guide.
SQLite JSON: How json1 Turns SQLite into a Document Store
SQLite ships with the json1 extension on by default. How to store, query, and index JSON in SQLite — and why for embedded apps, it can replace MongoDB entirely.
Loose Foreign Keys: Navigate Schemas the Database Doesn't Describe
A logical column-to-column reference the database doesn't enforce — an idea borrowed from NoSQL. When to use one, when not to, how DBeaver / DataGrip / SSMS handle it, and how Jam SQL Studio supports them — including Postgres array columns.
April 28, 2026SQL Server JSON Support: From OPENJSON to the Native JSON Type
SQL Server stored JSON in NVARCHAR(MAX) for years. SQL Server 2022 added a native JSON type. How to query, validate, and index JSON in SQL Server — and how it stacks up against MongoDB.
MySQL JSON Columns: A Practical Guide for SQL Developers
MySQL added a native JSON type in 5.7 and refined it in 8.0 with JSON_TABLE, JSON_VALUE, and multi-valued indexes. How to store, query, and index JSON in MySQL — and when MongoDB still wins.
PostgreSQL JSON and JSONB: The Complete Guide for SQL Developers
PostgreSQL has the most mature JSON support of any relational database. The difference between json and jsonb, GIN indexes, the SQL/JSON path language — and whether you still need MongoDB.
SQL Editor IntelliSense Beyond Autocomplete
Most SQL editors stop at table/column autocomplete. Here's what modern SQL IntelliSense looks like: function parameter hints, column inlay hints, and inline result previews.
April 6, 202610 Query Editor Features for Faster SQL Development
Column profiling, FK navigation, pin results, copy as INSERT, client-side filtering, and more. 10 query editor features that speed up daily SQL work.
April 6, 2026How to Prevent Running Queries on the Wrong Database
Color-coded connections and destructive query confirmation help you avoid running DROP TABLE on production. Here's how to set up visual guardrails in your SQL editor.
March 20, 2026Manage SQL Server Agent Jobs with T-SQL from Mac or Linux
The msdb queries and procedures to list jobs, read history, and start, stop, or create jobs from any client — plus what Agent can't do on SQL Server on Linux.
March 19, 2026PL/SQL Debugging on Mac and Linux: The Gap Nobody Filled (Until Now)
For 8+ years, no cross-platform tool shipped a real PL/SQL step-through debugger. DBeaver couldn't do it. SQL Developer was too slow. Toad was Windows-only. Here's how Jam SQL Studio closes the gap.
March 19, 2026AI Skills for SQL Databases: Let Claude Code, Codex, and Cursor Query Your Data
Teach AI coding agents to query SQL Server, PostgreSQL, MySQL, Oracle, and SQLite with a single skill file. Works with Claude Code, Codex CLI, Cursor, Copilot, and more.
March 13, 2026SSMS for Mac: What Works on Apple Silicon in 2026
There is no SSMS download for Mac. What works instead — SSMS in a Windows 11 VM, the VS Code MSSQL extension, or a native Mac SQL Server client — with costs, and a full SQL Server task done on macOS.
March 12, 2026Oracle Database on Mac and Linux: No Oracle Client Required
Connect to Oracle Database from Mac, Linux, or Windows without installing Oracle Client. Learn how Thin mode simplifies Oracle development across platforms.
March 7, 2026Why Your SQL IDE Should Have a Built-in MCP Server
AI coding assistants are everywhere, but they're blind to your database. A built-in MCP server changes that — here's why native beats bolt-on.
March 7, 2026How to Run SQL Server on macOS
Running SQL Server on an Apple Silicon Mac after Azure SQL Edge’s retirement: the SQL Server 2025 Linux container in Docker with Rosetta, what Microsoft actually supports, SSMS in a Windows 11 on Arm VM, and a native Mac client to connect with.
February 17, 2026Connect AI Agents to Your Database with MCP
AI coding assistants can write SQL, but they can't see your schema. Learn how to connect Claude, Codex, and other AI agents to your SQL database using Model Context Protocol.
February 17, 2026How to Read SQL Execution Plans (Visual Guide)
Learn to read SQL execution plans step by step. Identify table scans, missing indexes, and common performance problems with this visual guide.
February 17, 2026SQL Notebooks: Run, Document, and Share SQL
Learn how SQL Notebooks help you document workflows, build runbooks, and share analysis. A practical guide with examples for data analysts and SQL developers.
February 12, 2026Polyglot Notebooks Are Being Deprecated — What Now?
Polyglot Notebooks, part of the Azure Data Studio ecosystem, are being deprecated alongside ADS. Here's what you lose and what alternatives exist.
February 12, 2026SQLite Is More Powerful Than You Think
When you don't need a client-server database, SQLite might surprise you with its performance, reliability, and simplicity.
Download Jam SQL Studio
Connect to SQL Server, PostgreSQL, MySQL, Oracle, and SQLite. Free for personal use.
Jam SQL Studio