SQL Tran Docs
  • Overview
    • About
    • Getting started
    • Object lifecycle
    • Why is there no AI inside?
    • Performance considerations
    • Security considerations
    • Assessment
    • Unlocking projects
    • Interface walk-through
    • Translation scenarios
    • Prerequisites for Azure Marketplace deployment
  • Emulation Scenarios
    • Emulation in SQL Tran
    • SQL Server to Fabric Warehouse
      • Data types
      • Case sensitivity
      • Cursors
        • Basic cursor loop
        • Cursor types
        • Fetch direction modes
        • Cursors in control flow
        • Nested cursors
        • Data modification cursors
        • Multiple cursors
        • Subqueries and filtering
      • Named procedure parameters
      • Result set limiting
      • MERGE statements
      • Computed columns
      • External tables
      • Identity columns
      • Default values
      • Sequences
      • Unsupported system objects
    • Synapse Analytics to Fabric Warehouse
      • Emulations
      • Limitations
    • SQL Server to Synapse Analytics
    • Oracle to PostgreSQL
  • Project wizard
    • Source database
    • Target database
    • Wrapping up
  • Projects
    • Project list
    • Overview
    • Workspace
    • Reports
    • Tests
    • Scratch pad
    • Settings
      • Project name
      • Mapping
      • Database connections
    • Navigation
    • Object complexity
    • Static analysis
    • Translation errors
    • Exporting and importing projects
  • Workspace
    • Object tree
    • Data lineage
    • Code
    • Actions
      • Overriding source
      • Overriding target
      • Ignoring objects
  • Tests
    • Workflow
    • Configure SQL Tran
    • Connecting to databases
      • Fabric Warehouse
      • Synapse Dedicated SQL Pool
      • Azure SQL Database, Azure SQL Managed Instance, Microsoft SQL Server
    • Tables
    • Views
    • Procedures
    • Functions
    • Triggers
    • Performance tests
  • Scripter
    • About
    • Supported databases
    • SQL Server
    • Azure SQL
    • Synapse Dedicated Pool
    • Oracle
    • PostgreSQL
    • MySQL
Powered by GitBook
On this page
  • Emulation context
  • Emulation strategy
  • Code example
  • Important notes
  1. Emulation Scenarios
  2. SQL Server to Fabric Warehouse

External tables

Emulation context

In SQL Server, external tables allow users to query data stored in external sources — such as Hadoop, Azure Data Lake, or blob storage — as if it were tables in the local database. These tables are typically declared using a combination of:

  • CREATE EXTERNAL DATA SOURCE

  • CREATE EXTERNAL FILE FORMAT

  • CREATE EXTERNAL TABLE or CREATE EXTERNAL TABLE AS SELECT (CETAS)

For example:

CREATE EXTERNAL TABLE ExternalProductData (
    ProductID INT,
    Name NVARCHAR(100)
)
WITH (
    LOCATION = 'external/path/',
    DATA_SOURCE = MyExternalSource,
    FILE_FORMAT = MyParquetFormat
);

However, according to official documentation, Microsoft Fabric Warehouse does not support external tables. There is no equivalent syntax or engine-level support for defining tables that directly point to remote storage or external sources in the same way. Instead, Fabric requires data to be ingested into the warehouse using supported ingestion tools such as the COPY statement, pipelines, or dataflows.

Due to this incompatibility, SQL Server external table definitions must be removed, rewritten, or replaced using Fabric-supported ingestion methods during migration.


Emulation strategy

As of the current version, SQL Tran does not emulate or translate external table constructs. Instead:

  • CREATE EXTERNAL TABLE, CREATE EXTERNAL TABLE AS SELECT, CREATE EXTERNAL DATA SOURCE, and CREATE EXTERNAL FILE FORMAT statements are passed through unchanged.

  • In some cases, SQL Tran emits a comment such as:

    -- NOT IMPLEMENTED YET: Binding of statement CreateExternalTable not implemented
  • No transformation is performed to convert the external table into a standard CREATE TABLE.

  • SQL Tran does not produce ingestion logic such as COPY INTO, CREATE TABLE AS SELECT (CTAS), or OPENROWSET.

All logic involving external data access must be rewritten outside SQL Tran using Fabric-supported ingestion techniques.


Code example

SQL Server:

CREATE EXTERNAL TABLE ExternalProductData (
    ProductID INT,
    Name NVARCHAR(100)
)
WITH (
    LOCATION = 'https://myaccount.blob.core.windows.net/data/products/',
    DATA_SOURCE = MyExternalSource,
    FILE_FORMAT = MyParquetFormat
);

Fabric Warehouse (generated by SQL Tran):

-- NOT IMPLEMENTED YET: Binding of statement CreateExternalTable not implemented
CREATE EXTERNAL TABLE ExternalProductData (
    ProductID INT,
    Name NVARCHAR(100)
)
WITH (
    LOCATION = 'https://myaccount.blob.core.windows.net/data/products/',
    DATA_SOURCE = MyExternalSource,
    FILE_FORMAT = MyParquetFormat
);

Important notes

  • Not supported in Fabric: External tables are explicitly listed as not supported in Microsoft Fabric according to official documentation.

  • No emulation: SQL Tran does not convert external tables into Fabric-compatible structures such as CREATE TABLE or CTAS, and no ingestion logic is generated. Statements like CREATE EXTERNAL DATA SOURCE and CREATE EXTERNAL FILE FORMAT are also not translated and may result in syntax errors in Fabric or remain as pass-through code that requires manual removal. However, the overall script structure is preserved, allowing the rest of the schema to be parsed and reviewed.

  • No data linkage preserved: References to remote files or storage systems (e.g., via DATA_SOURCE, LOCATION) are retained verbatim. They must be removed or replaced manually.

  • Manual data ingestion required: SQL Tran does not generate any Fabric-compatible ingestion statements. Fabric supports ingestion through COPY (T-SQL), pipelines, dataflows, and OPENROWSET with CTAS. Any required data loading must be implemented manually using Fabric-supported ingestion tools outside SQL Tran.

  • Manual review required: Because external table declarations are not translated and ingestion logic is not provided, users must review affected code. Any necessary data source connections and query logic must be re-implemented using Fabric-supported mechanisms.

PreviousComputed columnsNextIdentity columns

Last updated 5 days ago

External table emulation in SQL Tran