Troubleshooting Guide: Error 7144 – Cannot Update text/ntext/image Column Referenced by a Persisted or Indexed Computed Column
Why This Error Happens
Error 7144 occurs because SQL Server 2025 does not allow direct in-place updates to text, ntext, or image columns when those columns are referenced by a computed column that is either persisted or part of an index. This restriction exists because the engine cannot efficiently recalculate and re-index the dependent computed value using legacy large-object (LOB) update mechanisms like WRITETEXT or UPDATETEXT. Essentially, the old BLOB update APIs bypass the normal row-update pipeline that triggers computed-column recalculation, creating a data integrity conflict that SQL Server blocks outright.
Step-by-Step Resolution Guide
Step 1: Identify the Offending Column and Dependency
- Run the following query to locate computed columns referencing legacy LOB types:
SELECT c.name AS ComputedColumn, c.definition, t.name AS TableName
FROM sys.computed_columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.is_persisted = 1 OR c.object_id IN (
SELECT object_id FROM sys.index_columns
);
- Confirm whether the base column is using
text,ntext, orimage(these are deprecated types as of SQL Server 2025).
Step 2: Migrate Deprecated LOB Data Types
- Convert the
text,ntext, orimagecolumn to the modern equivalent:varchar(max),nvarchar(max), orvarbinary(max). - Use
ALTER TABLEto perform the conversion:
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumn VARCHAR(MAX);
- Ensure no active transactions or open connections are locking the table during this operation (check via
sys.dm_tran_locks).
Step 3: Update Application Code to Use Standard UPDATE Statements
- Replace any legacy
WRITETEXTorUPDATETEXTT-SQL calls in stored procedures or application code with standardUPDATEstatements, since(max)types support them natively. - Example replacement:
UPDATE dbo.YourTable
SET YourColumn = N'New Value'
WHERE PrimaryKeyID = 1;
Step 4: Rebuild Affected Indexes and Computed Columns
- If the computed column is persisted or indexed, drop and recreate the index after the data type conversion to ensure consistency:
DROP INDEX IX_YourComputedColumn ON dbo.YourTable;
CREATE INDEX IX_YourComputedColumn ON dbo.YourTable (YourComputedColumn);
- Verify there are no orphaned statistics tied to the old column definition using
sp_updatestats.
Step 5: Restart the SQL Server Service to Clear Cached Plans
- On Windows Server 2025 / Windows 11, open Services.msc, locate SQL Server (MSSQLSERVER) (or your named instance), and restart it.
- Alternatively, run from an elevated PowerShell prompt:
Restart-Service -Name 'MSSQLSERVER' -Force
- This clears any cached execution plans that may still reference the old LOB update methods.
Alternative or Verification Steps
- To verify the fix, attempt the original
UPDATEstatement again on the table — it should complete without triggering Error 7144. - If the error persists, check for additional legacy references in linked views, triggers, or replication articles that may still invoke
WRITETEXT/UPDATETEXTagainst the converted column.