How to fix Error 6801 on Windows Server 2025 / Windows 11

Troubleshooting Guide: Error 6801 — “FOR XML EXPLICIT requires at least three columns”

Why This Error Happens

This error occurs when a FOR XML EXPLICIT query is executed without the minimum required structural columns: Tag, Parent, and at least one data column. SQL Server’s XML EXPLICIT mode relies on this strict three-column minimum to construct the hierarchical tag/parent relationships needed to generate valid XML output. This typically happens due to a malformed SELECT statement, an incomplete query migration from an older SQL Server version, or accidental truncation of a UNION ALL query that builds the EXPLICIT structure.

Step-by-Step Resolution Guide

Step 1: Review the Query Structure

  • Open the query in SQL Server Management Studio (SSMS) and locate the SELECT ... FOR XML EXPLICIT statement.
  • Confirm the first two columns are explicitly aliased as Tag and Parent (e.g., 1 AS Tag, NULL AS Parent).
  • Check that at least one additional data column follows, formatted using the ElementName!TagNumber!AttributeName convention.

Step 2: Rebuild the Column List

  • Add the missing Tag (integer) and Parent (integer or NULL) columns if they are absent.
  • Example minimal structure:
  SELECT 1 AS Tag, NULL AS Parent, CustomerID AS [Customer!1!ID]
  FROM Customers
  FOR XML EXPLICIT
  • Verify there are no stray commas or removed columns from a previous UNION ALL block that may have reduced the column count below three.

Step 3: Validate Compatibility Level

  • Open SSMS, right-click the database, and go to Properties > Options.
  • Confirm the Compatibility Level is set to a version that still supports FOR XML EXPLICIT (SQL Server 2025 retains support, but legacy T-SQL scripts from deprecated compatibility levels may format queries incorrectly).
  • Re-run the script after confirming compatibility settings match your intended SQL Server version.

Step 4: Consider Migrating to FOR XML PATH

  • If the query logic allows, rewrite the statement using FOR XML PATH or FOR XML AUTO, which do not require the strict three-column minimum.
  • Example:
  SELECT CustomerID AS [Customer/ID]
  FROM Customers
  FOR XML PATH('')
  • Test the rewritten query output against the original expected XML schema to ensure no structural differences.

Alternative or Verification Steps

  • Run the corrected query in SSMS and confirm no Error 6801 appears in the Messages tab, and validate the returned XML structure matches the expected schema.
  • If FOR XML EXPLICIT is not strictly required, switching permanently to FOR XML PATH eliminates this error class entirely and simplifies future maintenance.