Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Detalhes
| Attribute | Valor |
|---|---|
| Nome do Produto | SQL Server |
| ID do Evento | 2020 |
| Origem do evento | MSSQLSERVER |
| Componente | SQLEngine |
| Nome simbólico | |
| Texto da mensagem | As dependências reportadas para a entidade "%.*ls" não incluem referências a colunas. Isso ocorre porque a entidade faz referência a um objeto que não existe ou devido a um erro em uma ou mais instruções na entidade. Antes de executar novamente a consulta, verifique se não há erros na entidade e se todos os objetos referenciados pela entidade existem. |
Explanation
A função do sistema sys.dm_sql_referenced_entities reportará qualquer dependência ao nível da coluna para referências limitadas ao esquema. Por exemplo, a função irá reportar todas as dependências ao nível das colunas para uma vista indexada porque uma vista indexada requer ligação de esquema. No entanto, quando a entidade referenciada não está limitada ao esquema, as dependências das colunas só são reportadas quando todas as instruções em que as colunas são referenciadas podem ser limitadas. As sentenças só podem ser atribuídas com sucesso se todos os objetos existirem no momento em que as instruções são analisadas. Se qualquer instrução definida na entidade falhar em se vincular, as dependências da coluna não serão reportadas e a coluna referenced_minor_id devolverá 0. Quando as dependências das colunas não podem ser resolvidas, surge o erro 2020. Este erro não impede a consulta de devolver dependências ao nível do objeto.
Ação do Usuário
Corrija quaisquer erros identificados na mensagem antes do erro 2020. Por exemplo, no exemplo de código seguinte, a vista Production.ApprovedDocuments é definida nas colunas Title, ChangeNumber, e Status na Production.Document tabela. A função do sistema sys.dm_sql_referenced_entities é consultada para os objetos e colunas dos quais a ApprovedDocuments vista depende. Como a vista não é criada usando a cláusula WITH SCHEMA_BINDING, as colunas referenciadas na vista podem ser modificadas na tabela referenciada. O exemplo altera a coluna ChangeNumber na Production.Document tabela renomeando-a para TrackingNumber. A vista de catálogo é novamente consultada para a ApprovedDocuments visualização; no entanto, não pode associar-se a todas as colunas definidas na vista. Os erros 207 e 2020 são devolvidos identificando o problema. Para resolver o problema, a perspetiva deve ser alterada para refletir o novo nome da coluna.
USE AdventureWorks2022;
GO
CREATE VIEW Production.ApprovedDocuments
AS
SELECT Title, ChangeNumber, Status
FROM Production.Document
WHERE Status = 2;
GO
SELECT referenced_schema_name AS schema_name
,referenced_entity_name AS table_name
,referenced_minor_name AS referenced_column
FROM sys.dm_sql_referenced_entities ('Production.ApprovedDocuments', 'OBJECT');
GO
EXEC sp_rename 'Production.Document.ChangeNumber', 'TrackingNumber', 'COLUMN';
GO
SELECT referenced_schema_name AS schema_name
,referenced_entity_name AS table_name
,referenced_minor_name AS referenced_column
FROM sys.dm_sql_referenced_entities ('Production.ApprovedDocuments', 'OBJECT');
GO
A consulta devolve as seguintes mensagens de erro.
Msg 207, Level 16, State 1, Procedure ApprovedDocuments, Line 3
Invalid column name 'ChangeNumber'.
Msg 2020, Level 16, State 1, Line 1
The dependencies reported for entity
"Production.ApprovedDocuments" do not include references to
columns. This is either because the entity references an
object that does not exist or because of an error in one or
more statements in the entity. Before rerunning the query,
ensure that there are no errors in the entity and that all
objects referenced by the entity exist.
O exemplo seguinte corrige o nome da coluna na vista.
USE AdventureWorks2022;
GO
ALTER VIEW Production.ApprovedDocuments
AS
SELECT Title,TrackingNumber, Status
FROM Production.Document
WHERE Status = 2;
GO