我在开发和生产服务器之间不匹配,其中表中的列使用生产中的SPARSE子句而不是开发来定义。由于我不担心SPARSE提供的空间节省,从列定义中删除“Is Sparse”值有多安全?任何陷阱?
答案 0 :(得分:2)
根据微软:
将列从稀疏更改为非稀疏或非稀疏更改为稀疏需要更改列的存储格式。 SQL Server数据库引擎使用以下过程来完成此更改:
1)以新的存储大小和格式向表中添加新列。
2)对于表格中的每一行,更新并将旧列中存储的值复制到新列。
3)从表模式中删除旧列。
4)重建表(如果没有聚簇索引)或重建聚簇索引以回收旧列使用的空间。
注意强>
当行中数据的大小超过允许的最大行大小时,步骤2可能会失败。此大小包括旧列中存储的数据的大小以及存储在新列中的更新数据。对于不包含任何稀疏列的表,此限制为8060字节;对于包含稀疏列的表,此限制为8018字节。即使所有符合条件的列都已在行外推送,也会发生此错误。
https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-sparse-columns