我正在编写一个不断出现错误的脚本。在追踪之后,我发现 syscomments 表将其内容存储在多行中,如果信息超过 varchar(8000) 我相信。
为什么 syscomments 表将数据分成多行而不是 1 个较大的行?性能?
最佳答案
syscomments.text
是此处记录的 nvarchar(4000):sys.syscomments (Transact-SQL) ,这是你当时能做的最好的事情。
但是,您可以使用此处记录的较新的 sys.sql_modules
:sys.sql_modules (Transact-SQL) ,其中有一个 definition
列,即 nvarchar(max)
。
用于搜索用途:
DECLARE @Search nvarchar(500)
SET @Search=N'your text here'
SELECT DISTINCT
o.name AS Object_Name,o.type_desc --, m.definition
FROM sys.sql_modules m
INNER JOIN sys.objects o ON m.object_id=o.object_id
WHERE m.definition Like '%'+@Search+'%'
ORDER BY 2,1
如果您是 SQL Server 2005 之前的版本,您可以使用此处的查询进行搜索:SQL server table population source
关于sql-server - syscomments 表使用多行。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2545836/