gpt4 book ai didi

sql-server-2014 - 最大行大小超过了允许的最大值 8060 字节

转载 作者:行者123 更新时间:2023-12-04 17:43:00 25 4
gpt4 key购买 nike

在运行 Microsoft SQL Server 2014 时。更改表后,我收到有关行大小的警告。

ALTER TABLE myTable
ALTER COLUMN aRandomColumn NVARCHAR(10);

Warning: The table "myTable" has been created, but its maximum row size exceeds the allowed maximum of 8060 bytes. INSERT or UPDATE to this table will fail if the resulting row exceeds the size limit.

该表有 75 列:
  • 13 日期
  • 9 位
  • 8 整数
  • 5 十进制(18,5)
  • 4 bigint
  • 3 钱
  • 19 nvarchar(10)
  • 10 nvarchar(20)
  • 1 nvarchar(30)
  • 1 nvarchar(40)
  • 2 nvarchar(50)

  • 根据我的计算,nvarchars 占用 1120 字节,其他列 121(不确定,但不会更多)。

    这个怎么超过8060字节?我怎样才能摆脱这个警告?

    尝试使用 isnull(datalength(myColumnName), 1) 对所有列求和,实际数据从未超过 600。

    找到 a similar question 但更改跟踪对我来说是关闭的,所以它没有帮助。在 this question 中发现的 cleantable 也没有帮助。

    但是,当我复制表时,新表不会产生此警告。
    SELECT * INTO myNewTable FROM myTable;
    -- (8561 row(s) affected)
    ALTER TABLE myNewTable
    ATLER COLUMN aRandomColumn NVARCHAR(10);
    -- Command(s) completed successfully.

    最佳答案

    找到了我的问题的解决方案。

    This question处理同样的问题,并指出解决方案 in another location .

    This is likely due to previous alters (particularly of existing column widths) that are still reflected in the underlying page structure. Try rebuilding the table or dropping/re-creating the clustered index to reclaim that space.



    对我有用的是:
    ALTER TABLE myTable
    ADD CONSTRAINT pk_bigchange PRIMARY KEY (aColumnWithUniqueNonNullValues);
    GO
    ALTER TABLE myTable
    DROP CONSTRAINT pk_bigchange;
    GO

    关于sql-server-2014 - 最大行大小超过了允许的最大值 8060 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53594983/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com