SQL Server reporting

Reporting and analytics on your live SQL Server database

Semavex connects to SQL Server directly, reads its schema and indexes, and gives your team saved reports, scheduled delivery and AI analysis without a warehouse or SSIS packages in between. Vexon, the AI agent in Semavex, builds the semantic model and answers the questions.

What Semavex reads from SQL Server

  • Tables, columns, primary keys and foreign keys from the sys catalog views
  • Every index with its key columns, included columns, uniqueness and filtered-index definition
  • Row counts from partition statistics, and each table's clustered index key
  • Column statistics from sys.stats, used to judge how selective a filter is

How reports stay out of your application's way

By default, Semavex reads SQL Server at READ UNCOMMITTED, so a report never waits on your application's row locks and never makes a write wait. The trade-off is that a report can include rows from a transaction that has not committed yet.

Each query runs with a time limit: 30 seconds for interactive questions and 120 seconds for scheduled reports.

Committed-only reads without blocking

If a report must never include uncommitted rows, change the data source's isolation level in Semavex. Enable ALLOW_SNAPSHOT_ISOLATION on the database and choose Snapshot, or enable READ_COMMITTED_SNAPSHOT and choose Database Default. Both read a consistent, committed version of the data without blocking your application.

Without either option, Database Default uses SQL Server's locking READ COMMITTED, where reports and writes can wait on each other. To read from an Always On readable secondary, connect to the secondary's host directly: read-intent routing through the listener is not supported yet.

Connect with a read-only account

Run this as an administrator, then enter the account when you add the data source in Semavex. Replace the values in angle brackets.

Read-only account for SQL Server
CREATE LOGIN semavex_ro WITH PASSWORD = '<strong password>';
USE <database>;
CREATE USER semavex_ro FOR LOGIN semavex_ro;
ALTER ROLE db_datareader ADD MEMBER semavex_ro;

-- Index, statistics and row-count metadata
GRANT VIEW DEFINITION TO semavex_ro;
GRANT VIEW DATABASE STATE TO semavex_ro;
db_datareader gives read access to every table in the database; grant SELECT on specific schemas instead if Semavex should see less. VIEW DATABASE STATE lets Semavex read row counts from sys.dm_db_partition_stats.

What your team gets on SQL Server

  • Saved reports with subtotals, grand totals, number formats and conditional formatting
  • Scheduled email delivery as PDF, CSV or Excel
  • Period comparisons, rolling periods, running totals, rankings and top-N
  • AI explanations from exact statistics over the whole result
  • Report chat: change a saved report by asking
  • Data alerts on your thresholds, as often as every 15 minutes (Enterprise)

Questions about SQL Server

Which SQL Server versions are supported?

Semavex is tested against SQL Server 2022 on every build and reads the standard sys catalog views.

Which isolation level should we choose?

If reports must only include committed rows, choose Snapshot with ALLOW_SNAPSHOT_ISOLATION enabled, or Database Default with READ_COMMITTED_SNAPSHOT enabled. If the database has neither, the default, READ UNCOMMITTED, is the setting that never blocks your application.

Can Semavex read from an Always On secondary?

Yes, by connecting to the readable secondary's host directly. Read-intent routing through the availability group listener is not supported yet.

See it on your data

See Semavex on your SQL Server database

Book a demo and we will walk through the semantic model, a few reports and a schedule on data like yours.

SQL Server Reporting Without a Data Warehouse - Semavex