Emulation scenarios

Unsupported system features

Emulation context

In Microsoft SQL Server, system objects such as built-in stored procedures, system catalog views, user and login commands, and DBCC utilities are frequently used for diagnostics, metadata inspection, and server-level configuration. These include objects like:

  • sp_addrolemember, sp_showspaceused, sp_set_firewall_rule
  • sys.sequences, sys.dm_* views
  • CREATE USER, ALTER DATABASE, and DBCC commands

However, Microsoft Fabric Warehouse supports only a limited subset of system-level operations and configuration objects, excluding many features commonly used for administration and diagnostics. Fabric does not allow direct manipulation of roles, users, database configuration, or extended diagnostics using T-SQL. These system features must be removed or restructured during migration.


Emulation strategy

SQL Tran does not emulate or rewrite system-level constructs. Instead:

  • For traceability purposes, unsupported system commands and procedures are commented out using: /* SQLTRAN FIX: ... */
  • Certain T-SQL features and constructs are flagged using diagnostic comments such as: -- SQLTRAN FABRIC LIMITATION:
  • No transformation or replacement logic is generated for these constructs, as there is no equivalent in Fabric's SQL surface.
  • SQL Tran preserves the original structure to allow downstream review and manual rewriting.

Code example

SQL Server:

CREATE PROCEDURE [dbo].[GetPromotedPeople]
AS
BEGIN
	SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

	SELECT BusinessEntityID, FirstName, LastName, EmailPromotion
	FROM Person.Person
	WHERE EmailPromotion > 0
	ORDER BY EmailPromotion DESC;
END;

Fabric Warehouse (generated by SQL Tran):

-- SQLTRAN FABRIC LIMITATION: -- SET TRANSACTION ISOLATION LEVEL
CREATE PROCEDURE [dbo].[GetPromotedPeople]
AS
BEGIN
	SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

	SELECT BusinessEntityID, FirstName, LastName, EmailPromotion
	FROM Person.Person
	WHERE EmailPromotion > 0
	ORDER BY EmailPromotion DESC;
END;
Unsupported feature emulation in SQL Tran

Important notes

  • System procedures are not supported: SQL Server built-in procedures such as sp_addrolemember, sp_helpuser, sp_set_firewall_rule, and sp_showspaceused are not available in Fabric and are commented out by SQL Tran.
  • DBCC and administrative commands are removed: DBCC statements like CHECKDB, USEROPTIONS, and platform-level commands such as CREATE USER or ALTER DATABASE are not supported in Fabric and are commented out.
  • System views are selectively supported: While many system catalog views like sys.sequences are not available in Fabric, others like sys.objects are accessible. SQL Tran only flags unsupported views.
  • XML methods are flagged: Unsupported XML methods such as .value() are identified and annotated by SQL Tran using diagnostic comments. These are not supported in Fabric’s SQL engine.
  • Unsupported system clauses and special constructs: SQL Tran flags T-SQL clauses and constructs that are not classified as system objects but are unsupported in Fabric, including: $PARTITION, FOR JSON, FOR XML, FOR BROWSE, and recursive common table expressions (CTEs). These are preserved in the translated output but must be manually replaced or removed.
  • Full-text search not supported: Microsoft Fabric does not support SQL Server full-text search features such as FREETEXTTABLE, CONTAINSTABLE, FREETEXT, or CONTAINS. These rely on full-text indexes, catalogs, and semantic search infrastructure, none of which exist in Fabric. SQL Tran retains these statements and flags them with a -- SQLTRAN FABRIC LIMITATION: -- FULL-TEXT SEARCH comment, but does not rewrite or emulate their behavior. Any full-text search logic must be manually removed or reimplemented using Fabric-supported techniques, such as LIKE, CHARINDEX, or preprocessed keyword filtering.
  • Identity functions unsupported: Fabric does not support identity-tracking functions such as @@IDENTITY, SCOPE_IDENTITY(), or IDENT_CURRENT(). These functions depend on identity columns and engine-level metadata that are not available in Fabric’s distributed environment. SQL Tran preserves these statements in the translated output but flags them with a -- SQLTRAN FABRIC LIMITATION: comment. Any logic that depends on retrieving identity values must be manually reworked using Fabric-compatible alternatives such as NEWID(), ROW_NUMBER(), or custom sequencing strategies based on sequences or output parameters.
  • No emulation or fallback is generated: SQL Tran does not attempt to simulate or replace unsupported system objects or features. All such usage must be manually reviewed.
  • Manual review required: Any logic that depends on system-level behavior, metadata access, or administrative commands must be reviewed and rewritten using Fabric-compatible ingestion tools, platform APIs, or equivalent logic external to the warehouse SQL surface.

If this was useful,
our newsletter will be too.

Get monthly insights on data engineering, AI, and building critical infrastructure - direct from the Spectral Core team and CEO Damir Bulic.