Summary
In mcr.microsoft.com/mssql/server:2025-latest (SQL Server 2025 RTM-CU4, 17.0.4035.5) on Ubuntu 24.04 with mssql-server-polybase installed and PolyBase fully enabled, the SQL parser only accepts three LOCATION URI prefixes for CREATE EXTERNAL DATA SOURCE:
ACCEPTED: s3:// abs:// adls://
REJECTED: sqlserver:// odbc:// oracle:// mongodb://
teradata:// hdfs:// wasbs:// http:// https://
All rejected schemes return error 46548 "<scheme> contains an unsupported connector location prefix. Refer to product documentation for a list of supported connector location prefixes." This is a parse-time rejection — it happens regardless of credential, server reachability, or whether the External Execution Service is running.
This contradicts the documentation at:
Reproduction
FROM mcr.microsoft.com/mssql/server:2025-latest
USER root
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get install -yq curl gnupg2 \
&& curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
&& curl https://packages.microsoft.com/config/ubuntu/24.04/mssql-server-2025.list \
| tee /etc/apt/sources.list.d/mssql-server-2025.list \
&& curl https://packages.microsoft.com/config/ubuntu/24.04/prod.list \
| tee /etc/apt/sources.list.d/mssql-prod.list \
&& apt-get update \
&& ACCEPT_EULA=Y apt-get install -y mssql-server-polybase mssql-tools18 unixodbc-dev
ENV MSSQL_POLYBASE_ENABLED=1
USER mssql
Run the image, wait for SQL Server ready, enable PolyBase (sp_configure 'polybase enabled', 1; RECONFIGURE WITH OVERRIDE;), restart, then run:
USE probe_db;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd!Probe';
CREATE DATABASE SCOPED CREDENTIAL probe_cred WITH IDENTITY = 'sa', SECRET = '<sa_pwd>';
CREATE EXTERNAL DATA SOURCE probe_eds WITH (
LOCATION = 'sqlserver://127.0.0.1:1433',
CREDENTIAL = probe_cred);
-- Msg 46548: 'sqlserver://127.0.0.1:1433' contains an unsupported connector
-- location prefix.
What rules out the obvious causes
All of the following are true at the time of the failing CREATE — none of them change the result:
SELECT SERVERPROPERTY('IsPolyBaseInstalled') returns 1.
sys.configurations shows polybase enabled value_in_use = 1.
- The PolyBase Data Movement Service writes
MPDWSVC is ready to its stdout log, and /var/opt/mssql/log/polybase/MSSQLSERVER_localhost_DWEngine_server.log / MSSQLSERVER_localhost_Dms_movement.log show the DW Engine and DMS fully initialised.
.NET 8.0.18 runtime is pre-staged at /opt/mssql-ees-dotnet/ (matching the offline-install layout documented for SQL Server 2025 (17.x) CU4+).
ExternalExecutionService.dll is started via /opt/mssql-ees-dotnet/dotnet /opt/mssql/lib/ExternalExecutionService.dll and logs ExternalExecutionService started at port 25100. (We can't use the systemd unit mssql-ees.service because Docker doesn't provide systemd, so we replicate its environment — DOTNET_ROOT, TMPDIR — and launch the daemon in the background from our entrypoint.)
- The same
mssql-server-polybase package's installexecutionservice.sh requires .NET 8.0.418 (per REQUIRED_VERSION constant), but the runtime version actually shipped inside the SDK is 8.0.18. Running with the runtime alone is sufficient for the daemon to start.
With all of the above in place, only the three v2 object-storage schemes (s3://, abs://, adls://) register. Every other prefix — including https:// for Bulk Operations, which has been documented as supported since SQL Server 2017 — is rejected by the parser before any connector-level code runs.
Diagnostic SQL we used
DECLARE @r TABLE (Scheme NVARCHAR(80), Err INT, Msg NVARCHAR(2000));
DECLARE @schemes TABLE (id INT IDENTITY, s NVARCHAR(80));
INSERT INTO @schemes (s) VALUES
('s3://h'), ('abs://c@a.blob.core.windows.net'), ('adls://h.dfs.core.windows.net'),
('https://h.example.com'), ('http://h.example.com'),
('sqlserver://127.0.0.1'), ('sqlserver://127.0.0.1:1433'),
('odbc://h'), ('oracle://h:1521'), ('mongodb://h:27017');
DECLARE @s NVARCHAR(80), @i INT = 1, @max INT;
SELECT @max = MAX(id) FROM @schemes;
WHILE @i <= @max BEGIN
SELECT @s = s FROM @schemes WHERE id = @i;
BEGIN TRY
EXEC ('CREATE EXTERNAL DATA SOURCE [__probe__] WITH (LOCATION = '''+@s+''', CREDENTIAL = probe_cred)');
INSERT INTO @r VALUES (@s, 0, N'OK');
EXEC ('DROP EXTERNAL DATA SOURCE [__probe__]');
END TRY
BEGIN CATCH INSERT INTO @r VALUES (@s, ERROR_NUMBER(), LEFT(ERROR_MESSAGE(), 200)); END CATCH;
SET @i = @i + 1;
END;
SELECT * FROM @r;
Questions
- Is this expected — i.e. has the Linux build of
mssql-server-polybase for SQL Server 2025 been intentionally narrowed to v2 object-storage connectors only?
- If yes, can the docs (
polybase-linux-setup, polybase-configure-sql-server, create-external-data-source-transact-sql) be updated to reflect the actual Linux scope?
- If no, what step is missing from the published Linux install path that would register the v1 connector schemes (
sqlserver:// in particular)?
- Is there a planned CU that will ship the v1 connectors for Linux, and if so, an approximate timeframe? The image build is now ready to register them once the package supports it (the .NET runtime and EES daemon plumbing is in place); we just need the schemes to be added to the parser's allow-list.
Happy to provide additional logs or run further diagnostics.
Environment
- Base image:
mcr.microsoft.com/mssql/server:2025-latest
- SQL Server: 2025 (RTM-CU4) KB5081495 —
17.0.4035.5 Enterprise Developer Edition on Linux (Ubuntu 24.04.4 LTS)
- Package:
mssql-server-polybase (latest from packages.microsoft.com/config/ubuntu/24.04/mssql-server-2025.list as of 2026-05-11)
- .NET runtime: 8.0.18 (from
https://dot.net/v1/dotnet-install.sh)
- Docker: 29.3.1, Windows 11 host
Summary
In
mcr.microsoft.com/mssql/server:2025-latest(SQL Server 2025 RTM-CU4,17.0.4035.5) on Ubuntu 24.04 withmssql-server-polybaseinstalled and PolyBase fully enabled, the SQL parser only accepts threeLOCATIONURI prefixes forCREATE EXTERNAL DATA SOURCE:All rejected schemes return error 46548 "
<scheme>contains an unsupported connector location prefix. Refer to product documentation for a list of supported connector location prefixes." This is a parse-time rejection — it happens regardless of credential, server reachability, or whether the External Execution Service is running.This contradicts the documentation at:
sqlserver,oracle,teradata,mongodb,odbc,https, and others as supported in SQL Server 2019+.sqlserver://example.Reproduction
Run the image, wait for SQL Server ready, enable PolyBase (
sp_configure 'polybase enabled', 1; RECONFIGURE WITH OVERRIDE;), restart, then run:What rules out the obvious causes
All of the following are true at the time of the failing CREATE — none of them change the result:
SELECT SERVERPROPERTY('IsPolyBaseInstalled')returns1.sys.configurationsshowspolybase enabledvalue_in_use = 1.MPDWSVC is readyto its stdout log, and/var/opt/mssql/log/polybase/MSSQLSERVER_localhost_DWEngine_server.log/MSSQLSERVER_localhost_Dms_movement.logshow the DW Engine and DMS fully initialised..NET 8.0.18runtime is pre-staged at/opt/mssql-ees-dotnet/(matching the offline-install layout documented for SQL Server 2025 (17.x) CU4+).ExternalExecutionService.dllis started via/opt/mssql-ees-dotnet/dotnet /opt/mssql/lib/ExternalExecutionService.dlland logsExternalExecutionService started at port 25100. (We can't use the systemd unitmssql-ees.servicebecause Docker doesn't provide systemd, so we replicate its environment —DOTNET_ROOT,TMPDIR— and launch the daemon in the background from our entrypoint.)mssql-server-polybasepackage'sinstallexecutionservice.shrequires.NET 8.0.418(perREQUIRED_VERSIONconstant), but the runtime version actually shipped inside the SDK is 8.0.18. Running with the runtime alone is sufficient for the daemon to start.With all of the above in place, only the three v2 object-storage schemes (
s3://,abs://,adls://) register. Every other prefix — includinghttps://for Bulk Operations, which has been documented as supported since SQL Server 2017 — is rejected by the parser before any connector-level code runs.Diagnostic SQL we used
Questions
mssql-server-polybasefor SQL Server 2025 been intentionally narrowed to v2 object-storage connectors only?polybase-linux-setup,polybase-configure-sql-server,create-external-data-source-transact-sql) be updated to reflect the actual Linux scope?sqlserver://in particular)?Happy to provide additional logs or run further diagnostics.
Environment
mcr.microsoft.com/mssql/server:2025-latest17.0.4035.5Enterprise Developer Edition on Linux (Ubuntu 24.04.4 LTS)mssql-server-polybase(latest frompackages.microsoft.com/config/ubuntu/24.04/mssql-server-2025.listas of 2026-05-11)https://dot.net/v1/dotnet-install.sh)