您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL Server 2005-到达表行大小限制

SQL Server 2005-到达表行大小限制

此处的查询将确定哪些表具有潜在的危险,并且可能的最大行大小将超过可用的8060字节:

;WITH TableRowSizes AS
(
    SELECT 
        t.NAME 'TableName',
        COUNT(1) 'NumberOfColumns',
        SUM (c.max_length) 'MaxRowLength'
    FROM   
        sys.columns c
    INNER JOIN 
        sys.tables t ON c.object_id = t.object_id
    WHERE
        c.user_type_id NOT IN (98, 165, 167, 231)  -- sql_variant, varbinary, varchar, nvarchar
    GROUP BY 
        t.name
)
SELECT *
FROM TableRowSizes
WHERE MaxRowLength > 8060
ORDER BY MaxRowLength DESC

这并不意味着您的行 了8060多个字节-只是汇总了每一列的最大可能大小。

如果您想确定当前实际使用的大小,则可以通过检查DATALENGTH(colname)函数来执行类似的操作(而不是使用中的理论最大值sys.columns

基于gbn的响应在我的CTE SELECT中添加了WHERE子句-不应使用这些类型来确定行是否可能超出8060字节大小限制。

SQLServer 2022/1/1 18:51:15 有460人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶