我将db脚本从64位系统传输到32位系统.当我执行脚本时,它给我以下错误,
警告!最大密钥长度为900字节.索引'UQ__Users__7E800015145C0A3F'的最大长度为1000字节.对于某些大值组合,插入/更新操作将失败.
Google搜索结果和Stack Overflow问题无法解决此问题.
Els*_*yed 12
对于索引具有Large size的列,sqlserver仅索引大小最大为900字节的列.
解决这个问题
首先:我添加了一个列hashCol来为MyCol生成类型为SHA1的哈希码
alter table myTable
add
hashCol AS HASHBYTES('SHA1', CONVERT(VARCHAR(90), MyCol))
Run Code Online (Sandbox Code Playgroud)
其次:我为hashCol添加了一个唯一的约束来唯一识别MyCol
ALTER TABLE myTable
ADD CONSTRAINT hashCol_Unique UNIQUE (hashCol)
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我克服了索引具有大尺寸的列的问题
引用
为SQL Server in-sql-server中的字段生成唯一哈希
小智 4
varchar类型的存储长度将+2。
解决方案
ALTER TABLE table_name
ALTER COLUMN column_name varchar(255)
Run Code Online (Sandbox Code Playgroud)
因此尝试将列长度减少到 255 个字符并尝试建立索引。