MSSQLSERVER_2020MSSQLSERVER_2020

DettagliDetails

Nome prodottoProduct Name SQL ServerSQL Server
ID eventoEvent ID 20202020
Origine eventoEvent Source MSSQLSERVERMSSQLSERVER
ComponenteComponent SQLEngineSQLEngine
Nome simbolicoSymbolic Name
Testo del messaggioMessage Text Le dipendenze segnalate per l'entità "%.ls" non includono riferimenti a colonne.The dependencies reported for entity "%.ls" do not include references to columns. L'entità fa riferimento a un oggetto che non esiste oppure si è verificato un errore in una o più istruzioni dell'entità.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. Prima di provare a eseguire nuovamente la query, accertarsi che non siano presenti errori nell'entità e che tutti gli oggetti a cui l'entità fa riferimento esistano.Before rerunning the query, ensure that there are no errors in the entity and that all objects referenced by the entity exist.

SpiegazioneExplanation

La funzione di sistema sys.dm_sql_referenced_entities segnalerà tutte le dipendenze a livello di colonna per i riferimenti associati a schema.The sys.dm_sql_referenced_entities system function will report any column-level dependency for schema-bound references. La funzione restituirà ad esempio tutte le dipendenze a livello di colonna per una vista indicizzata poiché una vista indicizzata richiede l'associazione allo schema.For example, the function will report all column-level dependencies for an indexed view because an indexed view requires schema binding. Tuttavia, quando l'entità a cui si fa riferimento non è associata a schema, le dipendenze della colonna vengono restituite solo quando è possibile associare tutte le istruzioni in cui si fa riferimento alle colonne.However, when the referenced entity is not schema-bound, column dependencies are reported only when all statements in which the columns are referenced can be bound. Le istruzioni possono essere associate correttamente solo se tutti gli oggetti esistono al momento dell'analisi delle istruzioni.Statements can be successfully bound only if all objects exist at the time the statements are parsed. Se un'istruzione definita nell'entità non viene associata, le dipendenze della colonna non verranno segnalate e la colonna referenced_minor_id restituirà 0.If any statement defined in the entity fails to bind, column dependencies will not be reported and the referenced_minor_id column will return 0. Quando le dipendenze della colonna non possono essere risolte, viene generato l'errore 2020.When column dependencies cannot be resolved, error 2020 is raised. Questo errore non impedisce alla query di restituire dipendenze a livello di oggetto.This error does not prevent the query from returning object-level dependencies.

Azione dell'utenteUser Action

Correggere tutti gli errori identificati nel messaggio prima dell'errore 2020.Correct any errors identified in the message before error 2020. Nell'esempio di codice seguente viene definita la vista Production.ApprovedDocuments nelle colonne Title, ChangeNumber e Status della tabella Production.Document.For example, in the following code example the view Production.ApprovedDocuments is defined on the columns Title, ChangeNumber, and Status in the Production.Document table. Viene eseguita una query sulla funzione di sistema sys.dm_sql_referenced_entities per gli oggetti e le colonne da cui dipende la vista ApprovedDocuments.The sys.dm_sql_referenced_entities system function is queried for the objects and columns on which the ApprovedDocuments view depends. Poiché la vista non viene creata utilizzando la clausola WITH SCHEMA_BINDING, è possibile modificare le colonne con riferimenti nella vista della tabella a cui si fa riferimento.Because the view is not created using the WITH SCHEMA_BINDING clause, the columns referenced in the view can be modified in the referenced table. Nell'esempio viene modificata la colonna ChangeNumber della tabella Production.Document rinominandola con TrackingNumber.The example alters the column ChangeNumber in the Production.Document table by renaming it to TrackingNumber. Viene eseguita di nuovo una query sulla vista del catalogo per la vista ApprovedDocuments. Non è però possibile eseguire l'associazione a tutte le colonne definite nella vista.The catalog view is queried again for the ApprovedDocuments view; however it cannot bind to all the columns defined in the view. Vengono restituiti gli errori 207 e 2020 identificando il problema.Errors 207 and 2020 are returned identifying the problem. Per risolvere il problema, è necessario modificare la vista in modo da riflettere il nuovo nome della colonna.To resolve the problem, the view must be altered to reflect the new name of the column.

USE AdventureWorks2012;  
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

La query restituisce i messaggi di errore seguenti:The query returns the following error messages.

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.

Nell'esempio seguente viene corretto il nome della colonna nella vista.The following example corrects the column name in the view.

USE AdventureWorks2012;  
GO  
ALTER VIEW Production.ApprovedDocuments  
AS  
SELECT Title,TrackingNumber, Status  
FROM Production.Document  
WHERE Status = 2;  
GO

Vedere ancheSee Also

sys.dm_sql_referenced_entities (Transact-SQL)sys.dm_sql_referenced_entities (Transact-SQL)