sql-server - 为什么 SQL Server Image 数据类型在 sys.all_columns 中将 max_length 设置为 16
问题描述
在通过SYS.all_columns检查SQL Server中的列定义时,我发现图像数据类型的max_length设置为16。有人可以帮忙解释一下这是什么意思吗?
解决方案
您在那里看到的 16 不是指数据的最大大小,而是指指向 LOB 值的指针的大小(默认情况下存储在行外)。
的文档sys.columns
提到了 16 个字节,但在解释原因方面做得很差(它只说它适用于text
但实际上它适用于text
、ntext
和image
)。我最近提交了一个 PR 来说明这一点,并且它被批准了(应该在下周左右发布)。
关于该TEXTPTR
主题有一个更好的小信息块,其中一个示例说:
返回 16 字节的文本指针
请注意,自 SQL Server 2005 发布超过 16 年以来,文档就有此警告:image
重要的!在 SQL Server 的未来版本中将删除 ntext、text 和 image 数据类型。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。
就在几个月前,我还在博客上写过这个:
推荐阅读
- javascript - 调整大小/放大/缩小页面时,Divs 正在四处移动
- javascript - 使用量角器切换到 iframe 后找不到使用定位器错误的元素
- r - Rattle 加载 Titanic_train 完整数据,但在子集化时失败
- string - 插入用户上传的图片 StaggeredGridView !!参数类型“文件”不能分配给参数类型“字符串”
- javascript - 为什么我的 ng-blur 调用函数可以正确,但单元测试不通过?茉莉花
- gatsby - 你可以在 Gatsbyjs 源插件中删除使用 createRemoteFileNode 创建的图像吗?
- c# - 当我将我的内容视图作为孩子添加到堆栈面板时,我的滚动视图跳跃
- c - 在 C 中获取输入并退出 do while 循环
- php - Laravel 8 upsert 与 DB::Raw 查询
- powershell - PowerShell 记录所有未处理的异常