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

Troubleshooting Guide: Error 1755 – “Defaults Cannot Be Created on Columns of Data Type Timestamp”

Why This Error Happens

This error occurs because the timestamp (also known as rowversion) data type in SQL Server 2025 is a system-generated binary value used exclusively for row-version stamping and concurrency checks. SQL Server explicitly disallows binding a DEFAULT constraint to this column type because its value is automatically managed by the database engine, not by user input or constraint logic. This typically surfaces when a T-SQL script, ORM migration (e.g., Entity Framework), or a table-creation wizard in SSMS attempts to apply a default value definition to a column incorrectly typed as timestamp instead of a standard data type like datetime2.

Step-by-Step Resolution Guide

Step 1: Identify the Offending Column and Script

  • Locate the exact table referenced in the error message (Table '%.*ls').
  • Run the following query in SQL Server Management Studio (SSMS) 21 to confirm the column’s data type:
  SELECT COLUMN_NAME, DATA_TYPE 
  FROM INFORMATION_SCHEMA.COLUMNS 
  WHERE TABLE_NAME = 'YourTableName';
  • Check if the column is genuinely intended for concurrency control (rowversion) or if it was mistakenly typed as timestamp when a date/time value was intended.

Step 2: Correct the Data Type or Remove the Default

  • If the column was meant to store date/time values, alter the script to use datetime2(7) instead of timestamp:
  ALTER TABLE YourTableName 
  ALTER COLUMN YourColumnName datetime2(7);
  • If the column is genuinely a rowversion/timestamp field, remove the DEFAULT clause entirely from the CREATE TABLE or ALTER TABLE statement, as SQL Server auto-populates this value on INSERT/UPDATE.
  • Re-run the corrected script in a new query window.

Step 3: Update ORM Mappings or Migration Scripts (If Applicable)

  • If using Entity Framework Core or a similar ORM on Windows Server 2025, check the migration file (e.g., Migrations/*.cs) for incorrect HasDefaultValue() configurations applied to a byte[] property mapped to rowversion.
  • Remove any .HasDefaultValueSql() fluent API calls tied to the timestamp column and instead use .IsRowVersion() to let EF Core handle concurrency tokens natively.
  • Regenerate and apply the migration using Update-Database or dotnet ef database update.

Step 4: Validate Server-Level Configuration

  • Confirm SQL Server 2025 compatibility level is set correctly for the database (should be 170 or higher) to ensure modern type-checking behavior is enforced:
  SELECT compatibility_level FROM sys.databases WHERE name = 'YourDatabaseName';
  • Restart the SQL Server service via services.msc on Windows Server 2025 if recent patches were applied, ensuring the Database Engine is running the latest cumulative update.

Alternative or Verification Steps

  • Verify the fix by executing the original CREATE TABLE or ALTER TABLE script again in SSMS; a successful execution with no Error 1755 confirms resolution.
  • As an alternative, if backward compatibility with legacy timestamp columns is required, wrap the insert logic in a stored procedure that omits the column entirely, allowing SQL Server to auto-generate the row-version value without needing a DEFAULT constraint.