Troubleshooting Guide: SQL Server Error 6983 – Invalid Restriction for Type
Why This Error Happens
This error occurs when SQL Server processes an XML Schema Collection where a derived complex type attempts to apply a block attribute (such as restriction, extension, or #all) that is less restrictive than the block value defined on its base type. SQL Server’s XML schema validation engine enforces strict inheritance rules per the W3C XML Schema specification, and any violation of this blocking hierarchy causes the schema registration or alteration (CREATE XML SCHEMA COLLECTION or ALTER XML SCHEMA COLLECTION) to fail. This is typically caused by a manually edited or auto-generated XSD file that doesn’t properly inherit or match the block constraints from its parent type, often introduced during application upgrades or third-party schema imports.
Step-by-Step Resolution Guide
Step 1: Identify the Offending Schema Collection
- Run the following query to locate recently modified or added XML schema collections in the affected database:
SELECT name, xml_collection_id, create_date, modify_date FROM sys.xml_schema_collections ORDER BY modify_date DESC;- Cross-reference the schema collection name with the application deployment logs to find the exact XSD source file.
Step 2: Inspect and Correct the XSD Block Attribute
- Open the source
.xsdfile in a text editor or Visual Studio XML editor. - Locate the
complexTypedefinitions involved in the inheritance chain (look forxs:restrictionorxs:extensionelements). - Verify that the
blockattribute on the derived type is equal to or more restrictive than the base type’sblockattribute (valid values:extension,restriction,#all, or empty). - Adjust the derived type’s
blockvalue to match or tighten the base type’s restriction, then save the file.
Step 3: Drop and Recreate the XML Schema Collection
- Since XML Schema Collections cannot be directly edited, drop the broken collection first:
DROP XML SCHEMA COLLECTION dbo.YourSchemaCollectionName;- Re-import the corrected schema using:
CREATE XML SCHEMA COLLECTION dbo.YourSchemaCollectionName AS N'<paste corrected XSD content here>';- Confirm no dependent tables, columns, or stored procedures are blocking the drop operation (check
sys.xml_schema_collectionsdependencies first if an error appears).
Step 4: Validate the XSD Externally Before Re-Import
- Use an external XML validator (such as Visual Studio, Oxygen XML, or the
xmllint --schemacommand) to pre-validate the corrected XSD file independently of SQL Server. - This isolates whether the issue is purely in SQL Server’s parser or in the XSD file structure itself, saving time on repeated failed imports.
Alternative or Verification Steps
- After recreating the schema collection, run
SELECT * FROM sys.xml_schema_collections WHERE name = 'YourSchemaCollectionName';to confirm it registered successfully without errors. - If the error persists despite correct
blockvalues, check for nested or imported XSDs (xs:import/xs:include) that may carry conflictingblockdefinitions from an external namespace — consolidate these into a single validated file before re-importing.