VARCHAR(MAX) and NVARCHAR(MAX) can handle 2^31-1 bytes of data (which should be enough for most cases).You'll want to avoid an implicit conversion so you could do something like thisDROP TABLE _TESTCREATE TABLE _TEST ( [foo1] NTEXT , [foo2] NTEXT )INSERT _TEST ([foo1], [foo2])SELECT REPLICATE('foooo1', 1000) , REPLICATE('fooooo2', 1000)SELECT DATALENGTH([foo1]) AS [Bytes Foo1] , DATALENGTH([foo2]) AS [Bytes Foo2]FROM _TESTALTER TABLE _TEST ADD [foo3] NVARCHAR(MAX)SELECT DATALENGTH([foo1]) AS [Bytes Foo1] , DATALENGTH([foo2]) AS [Bytes Foo2] , DATALENGTH([foo3]) AS [Bytes Foo3]FROM _TESTUPDATE _Test SET [foo3] = CAST([foo1] AS NVARCHAR(MAX)) + CAST([foo2] AS NVARCHAR(MAX))SELECT DATALENGTH([foo1]) AS [Bytes Foo1] , DATALENGTH([foo2]) AS [Bytes Foo2] , DATALENGTH([foo3]) AS [Bytes Foo3]FROM _TEST
Charlie===============================================================Msg 3903, Level 16, State 1, Line 1736The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION