No Visual Studio, ao tentar criar um DAC que tenha uma exibição schemabound que contém hierarquiaid::GetRoot(), esse erro é gerado e o projeto não é compilado. Porém o t-sql está ok pois se eu criar a view diretamente no banco de dados funciona ok.
Existe um nome de duas partes para a hierarquia para resolver isso?
Em um projeto DAC é VS:
CREATE VIEW [dbo].[View1] com schemabinding AS SELECT hierarquiaid::GetRoot() as t
Dá:
Erro 93 SQL70561: Não é possível associar a exibição de esquema '[dbo].[View1]' porque o nome 'hierarchyid' é inválido para associação de esquema. Os nomes devem estar no formato de duas partes e um objeto não pode fazer referência a si mesmo.
A resposta é adicionar sys. na frente da hierarquiaId:
sys.hierarchyid::GetRoot()
Existem alguns pré-requisitos para usar a opção SCHEMABINDING:
· Você não pode usar * na cláusula SELECT na consulta, você deve especificar os nomes das colunas
· Você deve usar a convenção de nomenclatura de duas partes ao se referir a objetos (o que geralmente é uma boa prática)
Portanto, você precisa usar o nome do esquema sempre ao se referir a objetos quando quiser usar a opção SCHEMABINDING, neste caso sys.hierarchyid