Condividi tramite


sys.sql_dependencies (Transact-SQL)

Data aggiornamento: 12 dicembre 2006

Contiene una riga per ogni dipendenza in un'entità con riferimenti (indipendente) a cui viene fatto riferimento nell'espressione o nelle istruzioni SQL che definiscono un altro oggetto di riferimento (dipendente). La vista sys.sql_dependencies ha lo scopo di tenere traccia delle dipendenze in base al nome tra le entità. Per ogni riga di sys.sql_dependencies, l'entità con riferimenti viene visualizzata in base al nome in un'espressione SQL persistente dell'oggetto di riferimento. La dipendenza viene inoltre applicata se tale oggetto dispone di un'espressione associata a schema. Per ulteriori informazioni, vedere Informazioni sulle dipendenze SQL.

Nome colonna Tipo di dati Descrizione

class

tinyint

Identifica la classe dell'entità con riferimenti (indipendente):

0 = Oggetto o colonna (solo riferimenti non associati a schema)

1 = Oggetto o colonna (riferimenti associati a schema)

2 = Tipi (riferimenti associati a schema)

3 = Insiemi di schemi XML (riferimenti associati a schema)

4 = Funzione di partizione (riferimenti associati a schema)

class_desc

nvarchar(60)

Descrizione della classe dell'entità con riferimenti (indipendente):

  • OBJECT_OR_COLUMN_REFERENCE_NON_SCHEMA_BOUND
  • OBJECT_OR_COLUMN_REFERENCE_SCHEMA_BOUND
  • TYPE_REFERENCE
  • XML_SCHEMA_COLLECTION_REFERENCE
  • PARTITION_FUNCTION_REFERENCE

object_id

int

ID dell'oggetto di riferimento (dipendente).

column_id

int

Se l'ID dipendente è una colonna, il valore corrisponde all'ID della colonna di riferimento (dipendente). In caso contrario il valore è 0.

referenced_major_id

int

ID dell'entità con riferimenti (indipendente), interpretato in base al valore della classe come indicato di seguito:

0, 1 = ID dell'oggetto o della colonna.

2 = ID del tipo.

3 = ID dell'insieme di schemi XML.

referenced_minor_id

int

ID secondario dell'entità con riferimenti (indipendente), interpretato in base al valore della classe, come indicato di seguito.

Se class =:

0, referenced_minor_id è un ID di colonna. Se non si tratta di una colonna, il valore è 0.

1, referenced_minor_id è un ID di colonna. Se non si tratta di una colonna, il valore è 0.

Negli altri casi, referenced_minor_id = 0.

is_selected

bit

Indica se la colonna o l'oggetto è selezionato.

is_updated

bit

Indica se la colonna o l'oggetto è aggiornato.

is_select_all

bit

Indica se l'oggetto è utilizzato nella clausola SELECT * (solo livello oggetto).

Osservazioni

Le dipendenze vengono stabilite durante l'operazione CREATE solo se l'entità con riferimenti (indipendente) esiste al momento della creazione dell'oggetto di riferimento (dipendente). In considerazione della risoluzione dei nomi posticipata, non è necessario che l'entità con riferimenti esista al momento della creazione. In questo caso non viene creata una riga di dipendenza. Per le entità con riferimenti tramite codice SQL dinamico, inoltre, non vengono stabilite dipendenze.

Se l'entità con riferimenti (indipendente) viene eliminata tramite DROP, la riga della dipendenza viene eliminata automaticamente. Per ricostituire la riga della dipendenza, sarà necessario ricreare entrambi gli oggetti con CREATE, nel corretto ordine di dipendenza.

Per gli oggetti vengono registrate sia le dipendenze associate a schema che quelle non associate. I riferimenti a vincoli CHECK, valori predefiniti e colonne calcolate sono implicitamente associati a schema. Le dipendenze per i tipi, gli insiemi di schemi XML e le funzioni di partizione vengono registrate solo nel caso delle dipendenze associate a schema. In SQL Server 2005 Service Pack 1 e versioni precedenti, i parametri definiti in una funzione Transact-SQL o una procedura sono associati implicitamente allo schema. I parametri che dipendono da un tipo CLR definito dall'utente, un alias o un insieme di schemi XML possono pertanto essere visualizzati tramite la vista del catalogo sys.sql_dependencies. Tali oggetti, tuttavia, non possono essere rinominati. In SQL Server 2005 Service Pack 2, nella vista del catalogo viene tenuta traccia dei parametri che dipendono da tali oggetti solo se il modulo Transact-SQL viene creato con associazione allo schema. Un tipo CLR definito dall'utente, un alias o un insieme di schemi XML utilizzato come parametro in un modulo senza associazione allo schema può essere rinominato, ma la definizione del modulo deve essere aggiornata mediante sp_refreshsqlmodule.

Esempi

A. Ricerca delle dipendenze da una funzione specificata

Nell'esempio seguente vengono restituite le dipendenze dalla funzione specificata. Prima di eseguire la query seguente, sostituire <database_name> e <schema_name.function_name> con nomi validi.

USE <database_name>;
GO
SELECT OBJECT_NAME(object_id) AS referencing_object_name
    ,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name
    ,*
FROM sys.sql_dependencies
WHERE referenced_major_id = OBJECT_ID('<schema_name.function_name>')
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);
GO 

B. Ricerca dei vincoli CHECK che dipendono da un tipo CLR definito dall'utente specificato

Prima di eseguire la query seguente, sostituire <database_name> con un nome valido e <schema_name.data_type_name> con un nome di tipo CLR definito dall'utente valido con specificazione dello schema.

USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS schema_name
    ,OBJECT_NAME(o.parent_object_id) AS table_name
    ,OBJECT_NAME(o.object_id) AS constraint_name
FROM sys.sql_dependencies AS d
JOIN sys.objects AS o ON o.object_id = d.object_id
WHERE referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
    AND class = 2 -- schema-bound references to type
    AND OBJECTPROPERTY(o.object_id, 'IsCheckCnst') = 1; -- exclude non-CHECK dependencies
GO

C. Ricerca delle viste, delle funzioni Transact-SQL e delle stored procedure Transact-SQL che dipendono da un tipo CLR definito dall'utente o un tipo alias specificato

La query seguente restituisce tutte le dipendenze associate a schema nelle viste, nelle funzioni Transact-SQL e nelle stored procedure Transact-SQL per un tipo CLR definito dall'utente o un tipo alias specificato.

USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS dependent_object_schema
  ,OBJECT_NAME(o.object_id) AS dependent_object_name
  ,o.type_desc AS dependent_object_type
  ,d.class_desc AS kind_of_dependency
  ,TYPE_NAME (d.referenced_major_id) AS type_name
FROM sys.sql_dependencies AS d 
JOIN sys.objects AS o
  ON d.object_id = o.object_id
  AND o.type IN ('FN','IF','TF', 'V', 'P')
WHERE d.class = 2 -- dependencies on types
  AND d.referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
ORDER BY dependent_object_schema, dependent_object_name;
GO

Vedere anche

Riferimento

Viste del catalogo (Transact-SQL)
Viste del catalogo per gli oggetti (Transact-SQL)
sp_rename (Transact-SQL)
sp_refreshsqlmodule (Transact-SQL)

Altre risorse

Implementazione di tipi definiti dall'utente
Informazioni sulle dipendenze SQL
Domande frequenti sull'esecuzione di query sul catalogo di sistema di SQL Server
Gestione di insiemi di schemi XML sul server

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Nuovo contenuto:
  • Aggiunta di informazioni sulle dipendenze dei tipi definiti dall'utente, degli alias e degli insiemi di schemi XML in caso di dichiarazione di tali oggetti come parametri in moduli Transact-SQL.
  • Aggiunta della sezione Esempi.