1

我无法创建边缘约束。这里有语法说明

我有 SQL Server 2019 Release Candidate 1。我不完全理解这与 CTP 有何关系,但我认为Eval Center上的任何东西都是好东西。不?

如果我将示例粘贴到 SSMS 18.2 中,我会在边缘约束的定义中得到“不正确的语法”。我可以看到像 sys.edge_constraints 和 sys.edge_constraint_clauses 这样的工件......但它不会让我定义约束。我错过了什么?

我正在尝试的示例(来自第一个链接)是:

CREATE TABLE Customer
   (
      ID INTEGER PRIMARY KEY
      , CustomerName VARCHAR(100)
   )
   AS NODE;
GO
CREATE TABLE Supplier
   (
      ID INTEGER PRIMARY KEY
      , SupplierName VARCHAR(100)
   )
   AS NODE;
   GO
CREATE TABLE Product
   (
      ID INTEGER PRIMARY KEY
      , ProductName VARCHAR(100)
   )
   AS NODE;

-- CREATE edge table with edge constraints.
CREATE TABLE bought
   (
      PurchaseCount INT
      , CONSTRAINT EC_BOUGHT CONNECTION (Customer TO Product, Supplier TO Product)
   )
   AS EDGE;

-- Query sys.edge_constraints and sys.edge_constraint_clauses to view
-- edge constraint properties.
SELECT
   EC.name AS edge_constraint_name
   , OBJECT_NAME(EC.parent_object_id) AS edge_table_name
   , OBJECT_NAME(ECC.from_object_id) AS from_node_table_name
   , OBJECT_NAME(ECC.to_object_id) AS to_node_table_name
   , is_disabled
   , is_not_trusted
FROM sys.edge_constraints EC
   INNER JOIN sys.edge_constraint_clauses ECC
   ON EC.object_id = ECC.object_id
WHERE EC.parent_object_id = object_id('bought');

同样,我有一个针对SQL Server 2019 或 Azure SQL 数据库托管实例的 SQL Server 数据库项目......并且表工件在表定义的同一位置产生相同的错误。

更新:

正如 Dan Guzman 所建议的 - 工具必须有一点滞后。我在 VS 项目中进行实验和证明的方法是将以下内容添加到我的 Post-Deploy 脚本中:

execute sp_executesql @statement = N'alter table graph.VotesFor add 
  constraint [People.VoteFor.Candidates] 
  connection 
  ( 
    graph.People to graph.Candidates 
  )
'

这应用了没有工具支持的约束 - 只有 db 引擎......它非常高兴地工作。它让我摆脱了眼前的担忧。我知道 SSDT 不再与 VS 分开,而是在 VS 安装中附带“数据存储和处理”工作负载。我之前应该提到过,我一直选择该工作负载。

所以,这让我想知道以前的独立 SSDT 安装是否与 VS 部署的变体冲突……或者它是否还没有现成可用。会到处闲逛,看看我能发现什么。

4

0 回答 0