我有下面的查询,我试图通过所有使用标量值函数的对象,但是我得到一个字符串或二进制数据将被截断错误。请协助。
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 +'%'
答案 0 :(得分:0)
某些返回的记录的长度大于目标列长度。增加目标列的长度。要进一步调试,请在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 +'%'
模式 - 是否要搜索特定字符串 match_expression,可以包含以下有效通配符 字符。 pattern最多可以包含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+'%'