我无法创建边缘约束。这里有语法说明。
我有 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 部署的变体冲突……或者它是否还没有现成可用。会到处闲逛,看看我能发现什么。