相关疑难解决方法(0)

更改表时“无法创建大小为 8074 的行,该行大于允许的最大行大小 8060”

我正在尝试更改表中的列。现有的表是这样的:

CREATE TABLE [dbo].[table](
   [id1] [int] NOT NULL,
   [id2] [int] NOT NULL,
   [id3] [int] NOT NULL,
   [name] [nvarchar](255) NOT NULL,
   [id4] [int] NOT NULL,
   [xmlData] [xml](CONTENT [dbo].[xml_schema]) NULL,
   [booleanData1] [bit] NOT NULL,
   [notes] [varchar](4096) NULL,
   [id5] [int] NULL,
   [booleanData2] [bit] NULL,
   [id6] [int] NULL,

   CONSTRAINT [PK_table] PRIMARY KEY CLUSTERED 
   ([id1] ASC, [id2] ASC, [id3] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

现在我试图在这个表上执行这个 sql:

ALTER TABLE [table] ALTER COLUMN [xmlData] XML
Run Code Online (Sandbox Code Playgroud)

这样我就可以删除 xml 模式并用新的模式替换它。

但我收到此错误:

无法创建大于允许的最大行大小 8060 的大小为 8074 的行。

谁能告诉我这里有什么问题?

sql-server sql-server-2012

18
推荐指数
1
解决办法
3737
查看次数

删除表字段后声明磁盘空间

我正在运行 sql 2008 r2 并且数据库在过去 3 年中运行良好且快速,直到大约 3 个月前我们在非常活跃和使用过的表上添加了 ntext 字段。现在我们开始用尽服务器空间,因为这个表的大小越来越大。

我读到了缩小,我们不想放松 db 的索引,因为它多年来一直在快速工作,而且我们不想让碎片消耗殆尽。

我们决定删除该字段及其所有值: 有没有办法删除 ntext 字段及其所有值并释放空间而不删除索引,不缩小,不损失数据库性能?

我附上 db size 查询输出,以显示过去 5 个月的大小扩展。

在此处输入图片说明

sql-server shrink sql-server-2008-r2

17
推荐指数
2
解决办法
9173
查看次数