在 Visual Studio 中,当尝试创建具有包含 hierarchyid::GetRoot() 的架构绑定视图的 DAC 时,会生成此错误并且项目不会生成。但是,t-sql 没问题,就好像我直接在数据库中创建视图一样,它工作正常。
hierarchyid 是否有两部分名称来解决这个问题?
在一个DAC项目中是VS:
CREATE VIEW [dbo].[View1] with schemabinding AS SELECT hierarchyid::GetRoot() 作为 t
给出:
错误 93 SQL70561:无法架构绑定视图 '[dbo].[View1]' 因为名称 'hierarchyid' 对于架构绑定无效。名称必须采用两部分格式,并且对象不能引用自身。
答案是添加 sys. 在 hierarchyId 前面:
sys.hierarchyid::GetRoot()
使用 SCHEMABINDING 选项有几个先决条件:
· 不能在查询的SELECT子句中使用*,必须指定列名
· 引用对象时必须使用两部分命名约定(这通常是一个好习惯)
因此,当您想要使用 SCHEMABINDING 选项时引用对象时,您需要始终使用模式名称,在本例中为 sys.hierarchyid