问题标签 [hierarchyid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
193 浏览

ssis - hierarchyid / SSIS / 内存变量

我意识到我可以将 hierarchyid 转换为字符串变量,并将其作为字符串存储在 SSIS 内存变量中。我想不通的是SSIS中的批量插入,并使用内存变量将其插入到列类型为hierarchyid的表中......

我可以将它存储为字符串,但感觉不对...

除了 SQL 向导,我找不到任何关于 SSIS 和 hierarchyid 的信息,但这确实适用于这里,因为我有自己的自定义包。

我正在使用 SQL Server 2014。

问候,理查德

0 投票
1 回答
2921 浏览

sql - 展平 SQL Server Hierarchy ID 中的树路径

我正在使用 SQL Hierarchy 数据类型对我的应用程序中的分类结构进行建模。分类可以在不同级别有相同的名称

在此处输入图像描述

在设置过程中,需要通过 Excel 表上传这些数据。

在插入任何节点之前,我想检查特定路径上的节点是否已经存在,这样我就不会复制条目。检查节点@特定绝对路径是否已经存在的最简单方法是什么?

例如,在“Bank 2”下插入“Retail”之前,我应该能够检查“/Bank 2/Retail”不存在

有没有办法提供整个树结构的扁平表示,以便我可以检查绝对路径然后继续?

在此处输入图像描述

0 投票
1 回答
634 浏览

sql-server - GetAncestor 查询 SQL hierarchyid 以始终拉取某些级别

我们通常被要求在报告中包含某些层次结构的级别,我正在寻找一种使用 hierarchyid 提高查询性能的方法。我做了一些测试,并且我有一些有效的查询,但我认为性能可能会更好。下面是一个为给定条目提取级别 2 到 4 的示例。我想出了一种方法来使用 GetAncestor() 函数结合hierarchyid的级别。第一个查询看起来很快,但它被硬编码为只返回某个级别的行,以避免用负值破坏 GetAncestor 查询。第二个示例解决了该问题,但速度要慢得多。理想情况下,第二个选项是我想要使用的,但它不够快。

0 投票
1 回答
1875 浏览

sql-server - SQL Server HierarchyID:如何添加多个孩子?

Itzik Ben-Gan 在这里描述了一些如何使用 hierarchyId 数据类型的简单方法。

http://sqlmag.com/t-sql/hierarchyid

他使用存储过程将孩子添加到某个根

要将任何叶子添加到树中,需要像这样调用这个过程:

我的问题是:

我有一张包含叶子兄弟列表的表格,我需要将其添加到同一级别的父级 14

我可以创建游标并调用 proc N 次。但也许它可以做得更有效?以某种方式在一个查询中?

0 投票
1 回答
445 浏览

sql-server - 如何使用hierarchyid复制分支?

我有一个带有字段的简单表:

在此处输入图像描述

我需要创建一个存储过程,它将分支复制到另一个父级。

例如,像这样:

在此处输入图像描述

我已经完成了将一个分支从一个父级移动到另一个的过程,这里是:

但现在我需要制作具有相同层次结构和 item_name 的副本。

0 投票
1 回答
58 浏览

sql-server-2008 - 在 MSSQL 2008 中自动创建 HierarchyID

我正在创建一个同时具有自引用外键和层次结构的表。

有没有比为每个节点创建它更简单的方法来填充hierarchyid,如下所示?

在此示例中,父节点的 ID 为 3,并且 8 和 9 是 3 的子节点。

0 投票
0 回答
1164 浏览

common-table-expression - 带有 HierarchyID 的 CTE 突然导致解析错误

所以我的数据库中有一个名为 的自引用表Nodes,用于存储组织的树结构:

我使用 HIERARCHYID 来管理基于访问级别等的查询。tvf_OrgNodes很久以前,我为此编写了一个表值函数,在 SQL Server 2008 到 2014 期间进行了测试和工作,从那时起它一直保持不变,因为它做得很好。然而,现在情况发生了变化,因为从路径 nvarchars ("/2/10/8/") 解析 HIERARCHYID 会导致以下错误,在 Google 上仅匹配 4 个命中 (!):

将函数更改为仅返回 NVARCHAR 而不是实际的 HIERARCHYID 时,路径看起来都很好,从/根目录开始,然后是/2/等等。简单地选择HIERARCHYID::Parse('path')也可以正常工作。实际上,我通过将路径作为字符串一直保留到 INSERT 到函数结果中,并在那里解析路径,从而使函数正常工作。但是,当我尝试将重新生成的数据插入到相同模式的表中时,我得到了同样的错误。

所以问题是,这是一个错误,还是有人知道使用 HIERARCHYIDs<->Path 字符串可能导致这种情况的任何(新的?)陷阱?我不明白整个二进制字符串的想法来自哪里。

这是 TVF 的代码:

我可能最近为 lolz 安装了 .NET 4.53 aka 4.6。但是,除了在 r​​eg 中,在任何地方都找不到太多证据:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319\SKUs.NETFramework,Version=v4.5.3

0 投票
0 回答
114 浏览

sql-server - 尝试使用 hierarchyid 时出现错误 24000

当我尝试hierarchyid在我的应用程序中生成时遇到问题。具体来说,每个节点我似乎不能有超过 16 个孩子。这是我试图用于我的存储过程的代码(这是一个只有一个隐藏字段和一个内容字段的测试表:

这是我得到错误的方式:

  1. INSERT INTO testing (hid , content) VALUES (hierarchyid::GetRoot () , 'a') ;
  2. EXEC testAdd '/' , 'a';16次。

我得到的错误如下: 在此处输入图像描述

此外,我试图从这个答案运行第二个代码片段,它立即坏了。

可能出了什么问题?

更新:我已经卸载了 VS 2015 和 sql server 2014 的 CLR 数据类型,并用旧版本替换它们无济于事。

0 投票
1 回答
1181 浏览

sql-server - 如何插入自动生成的标识值作为同一记录上的 hierarchyid 字段的一部分

我正在尝试找到一种将记录插入表的方法,该表使用新生成的 Identity 值作为其层次结构 ID 的一部分。以下 sql 演示了我正在尝试做的事情,以及我设法做到的最接近的事情。这是在事务内部使用插入后跟更新。我在想出初始层次结构 id 时遇到了麻烦,因为该字段有一个唯一的约束,我担心如果同时将 2 个元素添加到同一个父级,可能会引发错误。

如果可能的话,我想使用单个语句插入,该语句将在 hierarchyid 字段中包含新的 Identity 值。

0 投票
1 回答
61 浏览

sql-server - 更好地理解 HeirarchyId 节点

我正在查看 SQLserver 2008 中的 HeirarchyId 并参考以下文档:

http://www.codeproject.com/Tips/740553/Hierarchy-ID-in-SQL-Server

据我了解像这样的声明

将 Node 对象插入数据库。它具有三个属性,每个属性都转换为一列:

  • 节点文本
  • 节点
  • 节点级别

其中 Node 包含一些人类不可读的值,但我认为 Node Text 是一个引人注目的并且包含 \1\1 类型的格式,这种格式既是人类可读的,又可以跟踪每个节点在树中的位置。因此,当我们说“HeirarchyId”时,它指的是哪一列,除了 Node Text 是 Node 的人类可读表示这一事实之外,Node 和 NodeText 都完全相同?