sql - SQL server 获取数据库中超过 450 个 Unicode 字符或 900 个字节的所有列
问题描述
我想获取数据库中超过 450 个 Unicode 字符或 900 个字节(SQL 服务器)的所有列
解决方案
使用此查询查看会引发以下警告的索引:
警告!最大密钥长度为 900 字节。索引“IndexName”的最大长度为 1900 字节。对于较大值的某些组合,插入/更新操作将失败。
SELECT
SchemaName = ss.name,
TableName = so.name,
IndexName = si.name,
KeyColumnMaxLength = SUM(sc.max_length)
FROM
sys.objects so
JOIN sys.columns sc ON so.object_id = sc.object_id
JOIN sys.schemas ss ON so.schema_id = ss.schema_id
JOIN sys.indexes si ON sc.object_id = si.object_id
JOIN sys.index_columns sic ON
si.object_id = sic.object_id AND
si.index_id = sic.index_id AND
sic.column_id = sc.column_id
WHERE
so.type = 'U' AND
sic.is_included_column = 0
GROUP BY
ss.name,
so.name,
si.name
HAVING
SUM(sc.max_length) > 900
ORDER BY
SUM(sc.max_length) DESC
推荐阅读
- python - Pymongo - 查找查询后更新记录集
- python - 如何卸载 Python 3.9.1rc1
- php - PHPWord 如何返回一个单词响应对象
- linux-kernel - Linux 编译 | 入口点无效
- javascript - 如何使用 JavaScript 显示国际虚拟会议程序的当地时间
- c# - WPF中带有按钮的if语句
- haskell - 为什么有时一个在其定义中具有参数但在实际函数中没有参数的函数?
- python - 如何使用 django 租户调用拥有子域的当前用户?
- gatsby - gatsby-browser.js 不会加载 css 文件 - hello-world 教程
- java - @JoinColumn 与具有相同名称 JpaMapping 的列的问题