字符串或二进制数据将被截断错误并带有模糊连接



我有以下查询,我正在尝试通过所有使用标量值函数的对象,但是我得到一个字符串或二进制数据将被截断错误。请协助。

Select 
    definition 
From
    sys.sql_modules M
Join
    (Select 
        name 
    from 
        sys.objects O
    where 
        type_desc = 'SQL_SCALAR_FUNCTION')T
on 
     '%' + T.name + '%' Like '%' + M.definition +'%'

某些返回的记录的长度大于目标列长度。增加目标列的长度。若要进一步调试,请在 SQL Server 上运行以下查询。这将为您提供避免此错误所需的目标列的最小长度。

Select 
    max(len(definition ))
From
    sys.sql_modules M
Join
    (Select 
        name 
    from 
        sys.objects O
    where 
        type_desc = 'SQL_SCALAR_FUNCTION')T
on 
     '%' + T.name + '%' Like '%' + M.definition +'%'

我注意到在用户评论后,您的模式超过了 8000 个字符的限制,因为定义列是 varchar(max),并且长度必须超过 8000 个字符。

'%' + T.name + '%' Like '%' + M.definition +'%'

MSDN

pattern - 是要在其中搜索的特定字符串 match_expression,并且可以包含以下有效的通配符 字符。模式最大为 8,000 字节。

您可能感兴趣的是

SELECT definition
FROM sys.sql_modules AS M
JOIN
(
SELECT name
FROM sys.objects AS O
WHERE type_desc = 'SQL_SCALAR_FUNCTION'
) AS T
ON M.definition LIKE '%'+T.name+'%' 

最新更新