首先我得请你用 nvarchar(max) 替换你的 ntext 字段,ntext 很麻烦
来自微软的报价
"ntext、text 和 image 数据类型将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。使用 nvarchar(max)、varchar(max ) 和 varbinary(max) 代替。
用于存储大型非 Unicode 和 Unicode 字符串和二进制数据的固定和可变长度数据类型。Unicode 数据使用 UNICODE UCS-2 字符集。"引用结束
这是更改数据类型的方法:
alter table yourtable ALTER COLUMN colname varchar(max)
这是一个脚本,用于替换您在所有表格和列中描述的文本。如果 TABLE 中有一个计算列,脚本会发出一点声音,但它仍然会执行:
DECLARE @searchvalue varchar(100)
DECLARE @newvalue varchar(100)
DECLARE @newvalueShort varchar(50)
SET nocount off
SET @searchvalue = 'replace text'
SET @newvalue = 'new long text replacement'
SET @newvalueShort = 'short text'
SELECT * into #t FROM
(
SELECT 'update [' + a.TABLE_name + ']
SET ['+ column_name+ ']=replace(' +column_name +','''+@searchvalue +''','''+ case when character_maximum_length > 50 then @newvalue else @newvalueShort end + ''')
where [' +a.column_name+
'] like ''%'+@searchvalue +'%''' sqlstring
FROM INFORMATION_SCHEMA.COLUMNS a
join
INFORMATION_SCHEMA.TABLES b
ON a.TABLE_name = b.TABLE_name
and b.TABLE_type = 'base TABLE'
WHERE data_type in ('varchar', 'char', 'nchar', 'nvarchar')
and character_maximum_length >= len(@newvalueShort)
) a
DECLARE @sqlstring as nvarchar(500)
DECLARE SqlCursor CURSOR FAST_FORWARD FOR
SELECT sqlstring FROM #t
OPEN SqlCursor
FETCH NEXT FROM SqlCursor
INTO @sqlstring
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC(@sqlstring)
FETCH NEXT FROM SqlCursor
INTO @sqlstring
END
CLOSE SqlCursor
DEALLOCATE SqlCursor
DROP TABLE #t