Sql server SQL Server 2008-Hierarchyid错误-Hierarchyid的最大字符大小是多少?

Sql server SQL Server 2008-Hierarchyid错误-Hierarchyid的最大字符大小是多少?,sql-server,tsql,Sql Server,Tsql,运行构造hierarchyid列的查询时出现此错误: 在执行用户定义的例程或聚合“hierarchyid”期间发生.NET Framework错误: Microsoft.SqlServer.Types.HierarchyId异常:24001:SqlHierarchyId.Parse失败,因为输入字符串无效'/5290/6949/10926/14876/20843/26843/28099/33588/38299/39741/47206/49611/52487/55609/59735/68055/7

运行构造hierarchyid列的查询时出现此错误:

在执行用户定义的例程或聚合“hierarchyid”期间发生.NET Framework错误:
Microsoft.SqlServer.Types.HierarchyId异常:24001:SqlHierarchyId.Parse失败,因为输入字符串无效'/5290/6949/10926/14876/20843/26843/28099/33588/38299/39741/47206/49611/52487/55609/59735/68055/70899/72381/78691/82814/85883/93033/95161/100079/102349/108741/111671/117872/119889/121814/130278/133965/136834/141114/142768/151363/155136/157479/162695/164712/173269/176216/181110/185106/188492/189918/192074/193487/199606/202735/206413/207686/209230/211408/212295/215368/219305/224508/229598/235226/240175/244124/246944/248179/257451/261184/263979/266305/272088/278354/281525/286249/289684/292710/296042/297599/302251/308114/312144/313236/317958/323033/327665/328409/333567/337567/339560/343634/348692/352779/353201/362728/363987/370922/374911/376380/379496/383826/387374/391564/396844/399291/401406/406782/407365/412686/417188/419928/423104/425405/429919/436682/442219/443747/445901/448487/450157/457585/461898/464457/465557/471344/474244/476760/482003/485286/488836/491782/494581/500245/504695/507120/508621/512440/517214/521317/523267/528125/530206/534123/537417/543297/545193/550357/553120/557276/558422/561827/568206/571099/572783/576088/580839/584166/591023/593629/595246/601567/603921/608035/611395/615540/617236/620724/628276/632162/”不是SqlHierarchyId节点的有效字符串表示形式

Microsoft.SqlServer.Types.HierarchyideException:
在Microsoft.SqlServer.Types.ex_-raise(Int32-major、Int32-minor、Int32-sev、Int32-state、Object-param1、Object-param2、Object-param3)
在Microsoft.SqlServer.Types.OrdPath.InitFromString(String chDottedString)
位于Microsoft.SqlServer.Types.SqlHierarchyId.Parse(SqlString输入)

可能导致错误的代码行位于CTE内

cast ('/' + cast(ROWNUM as varchar(max)) + '/' as hierarchyid) nodeid
...
cast (cast(r.nodeid.ToString() as varchar(max))+ cast(f.ROWNUM as varchar(max)) + '/' as hierarchyid) nodeid
我通过使用另一个具有较小值的列(因此深度相同,只有整数值较小)构造
hierarchyid
解决了我的问题,这可以通过修改查询以使用复合键来实现,因此我的
nodeid
本身不再是唯一的,我需要将其与员工ID组合,这在某种程度上意味着我的
nodeid
成为每个员工的分区

无论如何,我仍然想知道为什么我会出现这个错误,微软的文档说

hierarchyid类型中使用的编码限制为892字节。因此,表示中的级别太多而无法容纳892字节的节点不能用hierarchyid类型表示

这是否意味着hierarchyid的最大大小为892个字符?我缺少什么,应该如何计算路径或密钥大小


我的错误中的键/路径是1139个字符,以字符为单位的层次ID的最大大小是多少?

请看一下中的
非常紧凑的
段落。@HABO我读了它,但不太明白,你认为你能详细说明这一部分吗,简化它可能不是一个解决方案,但好奇心让我产生了兴趣——你想表达的是什么,层次深度为167级?@BenThul这是一个活动表,我被要求突出显示那些有3天或更长时间没有电话或没有显示的员工。要正确创建序列,您不能删除其他类型的日期,序列中的日期可能会被周末或假期打断,或者员工没有安排工作的日期,因此我不能仅使用日历日期序列。167是167个工作日,没有因缺勤而中断(他们可能被假期打断了),写这本《queryGot It》很有趣。对我来说,这听起来像是一个“缺口和孤岛”问题,可能需要使用日历表来帮助解决工作日的问题。