sql-server - syscomments 表使用多行。为什么?

标签 sql-server

我正在编写一个不断出现错误的脚本。在追踪之后,我发现 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/

相关文章:

sql-server - 当列 "createdDate"从现在起经过 90 天时,如何更新具有数百万行的 SQL Server 表中的列?我们可以使用触发器吗?

SQL Server Management Studio : why when inserting into table, 外键列不可见?

sql-server - 使用 Access 前端和 SQL 后端提高查询速度

sql - 如何使用 SQL Server 2012 窗口函数计算指数移动平均值

sql - 如何在SQL Server 2008中执行函数

sql - 如何在 LIKE 语句中连接 % 和列名

sql - 为什么使用 SqlBulkCopy 在数据库之间移动大量数据时会出现高碎片?

sql - 需要在 SQL Server 2008 中将二进制转换为 NVARCHAR

sql - 在 SQL 中将列值重复到行中

SQL:如何从 int 中获取剩下的 3 个数字