SQL-Server 2019之后,IMAGE数据类型的列会发生什么变化?

7fhtutme  于 2023-01-16  发布在  其他
关注(0)|答案(2)|浏览(182)

我有一个表,其中包含IMAGE数据类型的列。MS SQL Server的未来版本将删除此数据类型。如果在更新服务器之前不将其更改为其他数据类型,该列以及其中存储的数据会发生什么变化?
它将被删除还是仍然可以访问?

sqougxex

sqougxex1#

Microsoft明确指出ntexttextimage数据类型将从未来的SQL版本中删除。您应该尝试将这些数据类型更改为nvarchar(max)varchar(max)varbinary(max)
在一个环境中,我遇到了一个问题,当维护作业运行和失败。如果这些列是索引的一部分,那么我们不能重建在线。只有离线操作支持。
https://learn.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql?view=sql-server-ver15

polhcujo

polhcujo2#

如果在更新服务器之前不将其更改为另一种数据类型,那么该列和存储在其中的数据会发生什么变化?
正如你所看到的,它没有在SQL Server 2019中被删除,但你可以问同样的问题,关于下一个版本等等,直到它将被删除,所以这里是我的2美分:-)
(1)IMAGE数据类型是一种二进制数据类型,您只需按原样获取原始数据并将其存储为VARBINARY数据类型。这些类型在数据的使用方面存在差异,并且IMAGE始终存储为LOB数据,而VARBINARY可以存储为行内数据(这是一个优点),并且与元数据相关的字节数有一些不同,但文件本身存储的数据是相同的(您可以使用DBCC PAGE命令确认这一点)。
因此,我的猜测(没有任何内部信息,只是纯粹的猜测)是删除IMAGE的步骤将是(或者应该是)使用IMAGE名称作为VARBINARY的同义词,就像ROWVERSION和TIMESTAMP是相同数据类型的同义词一样。使用这种方法,微软实际上不需要做很多工作,开发人员将能够更简单地支持旧应用程序。
(2)您可以直接显式地将IMAGE转换为VARBINARY,反之亦然
在任何情况下,在我看来,你不应该使用图像数据类型,越早作出改变越好。

相关问题