问题标签 [sql-server-2017-graph]

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 投票
1 回答
571 浏览

graph-databases - 消息 207 无效的列名 $node_id 用于内联表值函数中的伪列

在节点表中,伪列名称$node_id是指节点 id 列的内部名称,建议使用伪列(参见SQL Graph Architecture §Node Table)。

例如在创建下表之后:

查询:

使用-clause 和 -clause 中$node_id的伪列来选择单个节点(如果存在)。SELECTWHERE

但是,在下表中的值函数:

类似的查询:

导致错误消息:

消息 207,级别 16,状态 1,第 2 行无效的列名称“$node_id”。

从函数中选择列时是否可以使用伪列名?如果是这样,我该如何使用伪列名?

PS。我正在使用 RC 2 v14.0.900.75。

0 投票
1 回答
858 浏览

sparql - Syntax to query for optional relationships in Microsoft SQL Server 2017 Graph Database?

I want to select optional relationships in . Similar to optional in e.g.:

from https://www.w3.org/2001/sw/DataAccess/rq23/#OptionalMatching.

And similar to LEFT JOIN in normal ; e.g.:

Is there an easier way via MATCH?

The documentation of MATCH describes no 'optional' construct and the remarks state:

OR and NOT operators are not supported in the MATCH pattern. MATCH can be combined with other expressions using AND in the WHERE clause. However, combining it with other expressions using OR or NOT is not supported.

0 投票
3 回答
213 浏览

graph - 在匹配子句中使用视图和表值函数作为节点或边表

我喜欢在子句中使用表值函数,就像使用一样。有没有办法做到这一点?MATCHNode

对表值函数的需求

Node将表值函数或视图用作表可以有多种用例。例如我的如下。
我有Node包含NVarChar(max)要搜索文字文本的字段的表。我只需要相等搜索而不需要全文搜索,所以我选择在文本字段的哈希值上使用索引。正如Remus Rusanu在他对SQL server 的回答中所建议的那样——值得索引大字符串键吗?https://www.brentozar.com/archive/2013/05/indexing-wide-keys-in-sql-server/。表值函数使用CHECKSUM索引处理;看消息 207 无效的列名 $node_id 用于内联表值函数中的伪列

示例数据定义

[TagsByName]返回https://stackoverflow.com/a/45565410/814206建议$node_id的别名。但是,实际包含另外两个我不知道如何导出的内部列。NodeIdNode

所需查询

我想查询类似这样的数据库:

但是,这会导致错误1 ​​:

消息 13901,级别 16,状态 2,行 ...子句
中的标识符“t”MATCH不是节点表或节点表的别名。

我有办法做到这一点吗?


PS。有一些解决方法,但它们看起来不像MATCH-query 那样优雅;特别是考虑到我的实际查询涉及匹配更多的关系和更多的字符串相等测试。我会将这些解决方法作为答案发布,并希望有人提出更好的主意。

1 这给出了视图和表之间非常具体的区别,用于SQL 中视图和表之间的差异;这仅在中发生并且仅在使用 SQL Graph 时发生。

0 投票
2 回答
1820 浏览

sql-server - 如何防止在 SQL 中插入循环引用

我有下表:

此表中的行表示节点之间的链接。

我想防止对该表的插入或更新在节点之间创建循环关系。

因此,如果表包含:

它不应包含以下任何内容:

如果它使解决方案更简单,我很乐意单独处理 (1,1)(例如使用 CHECK CONSTRAINT)。

我正在考虑使用递归 CTE 创建一个 AFTER INSERT 触发器(尽管可能有更简单的方法)。

假设这是要走的路,触发器定义是什么?如果有更优雅的方式,它是什么?

0 投票
0 回答
177 浏览

sql-server - SQL Server GRAPH:匹配查询 - 未声明所有类型 [不可能]

我正在为我的实习研究 SQL Server Graph vs Neo4J。

  • 在 Neo4J 中,我不必在 ( Cypher) MATCH 查询中声明所有类型
  • 在 SQL Server 中,似乎我必须这样做

例子:

SQL 服务器:

我想将 Person / Likes / Restaurant 更改为未预定义的类型

就像在 Neo4J 中一样:

我知道这两个查询没有可比性,但我想指出我想在 SQL Server中使用“ r(elation) ”和“ m ”。

它看起来很接近这个 SO:Syntax to query for optional relationships in Microsoft SQL Server 2017 Graph Database? 但我希望我可以在没有加入的情况下做到这一点。

编辑:已关闭:Microsoft 不支持此功能

0 投票
0 回答
436 浏览

sql-server - 在 Sql-server 2017 中创建节点表时出错

我刚刚安装了 Sql Server 2017,它是用于练习图形数据库的管理工作室,但我在创建节点表时遇到问题。创建节点表时出现错误,我看不到与图表相关的任何内容:

错误 :

0 投票
1 回答
387 浏览

sql - 当 Where 子句不匹配时如何从 SQL Server 图表中进行选择

我在 SQL Server 中使用 Graph Table 。

这是我的桌子:

如何选择 User2 的所有 User1 朋友,而 User2 是 User3 的朋友,而 User1 和 User3 之间没有直接Edge关系。

我可以这样写这个查询:

但我想以其他方式理解?

我想使用这样的代码:

请帮我解决这个问题。

0 投票
1 回答
171 浏览

sql-server - 分区图表 - 分区切换失败

我正在尝试分区到现有的 SQL Server Graph 表(节点)。该表非常大,删除等需要很长时间,因此希望使用分区来提高性能。

但是,当我添加分区并尝试切换数据时。它失败并出现以下错误:

消息 7733,级别 16,状态 4,第 1 行“ALTER TABLE SWITCH”语句失败。表 tempdatabase.dbo.graphtable 已分区,而索引“GRAPH_UNIQUE_INDEX_xxxxxxxxx”未分区。

由于索引 GRAPH_UNIQUE_INDEX_xxxxxxxxx 是自动创建的,所以无法添加分区键。

0 投票
1 回答
110 浏览

c# - SqlBulkCopy 是否支持 MsSql 2017 中的图形表?

我正在尝试添加到 Microsoft SQL Server 2017 的新图形数据库支持, 我想使用 SqlBulkCopy 将几千个节点插入节点表。但是我总是错误: Column '$node_id_DB218B0EAE294E37804103CF4E82BCD2' does not allow DBNull.Value.

我的表是这样创建的

我准备了一个包含所有属性的数据表,并像这样调用 SqlBulkCopy:

现在我想知道我是否做错了什么,或者这是否还不受支持。

0 投票
1 回答
126 浏览

sql-server - 如何在 SQL Server 2017 中将“生成脚本”与图形数据库对象一起使用?

我正在尝试使用Generate ScriptsSQL Server Management Studio 的功能来编写包含 Node 和 Edge 表的数据库的架构和数据的脚本。当我在高级选项中选择Schema and DataforTypes of data to script时,我得到以下异常,显示在后脚本失败报告中:

System.Data.SqlClient.SqlException:
无法访问内部图形列“graph_id_65236D8A22184389B40ACEF8C7BA629D”

这是一个错误吗?

如何使用该Generate Scripts功能为 SQL Server 2017 中包含图形对象的数据库编写架构和数据脚本?