我正在创建一个包含 1000 列的表。大多数列都是nvarchar
类型。表已创建,但有警告
警告:表“Test”已创建,但其最大行大小超过了允许的最大值 8060 字节。如果结果行超过大小限制,则对该表的 INSERT 或 UPDATE 将失败。
表的大部分列中已经有数据(即 99% 的列有数据)。当我尝试在第 310 之后更新任何列时(因为所有开始的 309 列都有一些值),它会给出错误:
无法创建大于允许的最大行大小 8060 的大小为 8061 的行。
我将此数据插入到所有开始的 308 列
“Lorem ipsum dolor sit amet,consectetur adipisicing elit。”
当我使用ntext
数据类型时,它允许我更新大约 450 列,但除此之外ntext
也不允许我更新。我必须更新至少 700 列。哪个 SQL Server 不允许这样做。我有这样的场景,我无法将表格的某些列移动到另一个表格。
实际上我正在为现有的窗口应用程序工作。这是一个非常大的 Windows 应用程序。
实际上,我尝试在其中插入多达 700 个 nvarchar 列数据的表是在运行时动态创建的。只有在某些情况下,它需要插入 400-600 列。但通常它需要 100 -200 列,我可以轻松处理。
问题是我无法将此表拆分为多个表。因为用这种结构创建的许多表和表的名称都保存在另一个表中,即有超过100个具有这种结构的表并且它们是动态创建的。为了创建表和操作其数据,使用了 4-5 种语言(C#、Java..),并且 WCF、Windows 服务和 Web 服务也涉及。
所以我认为在拆分表格后操作表格及其数据并不容易。如果我拆分表格,则需要进行大量结构更改。
所以请建议我解决这个问题的最佳方法是什么。
我也尝试过使用稀疏列,例如:
Create table ABCD(Id int, Name varchar(100) Sparse, Age int);
我也考虑过ColumnStoreIndex但我的目的没有解决。
稀疏列允许我为一个表创建 3000 列,但它也限制了我的页面大小。
有什么方法可以使用一些临时表或使用任何其他类型的 SQL 服务器对象来实现它?