2012-02-21 9 views
6

che sto provando l'utilizzo di OBJECT_ID e trovato the following entry in MSDN:Cosa fa OBJECT_ID in SQL Server?

"Restituisce il numero di identificazione oggetto di database di un oggetto con ambito schema."

Che cos'è il numero di identificazione dell'oggetto del database e che cos'è l'ambito dello schema. Sembra che sono più confuso di quello iniziale.

risposta

4

Il OBJECT_ID viene utilizzato per identificare l'oggetto in modo univoco nelle tabelle di base del sistema.

È la chiave primaria della tabella di base sys.sysschobjs utilizzata dalla vista dei metadati sys.objects e viene visualizzata in molte altre viste dei metadati. ad esempio sys.partitions. Se non stai interrogando queste viste allora lo object_id non è molto utile tranne forse quando si usa in un controllo per l'esistenza di un oggetto come sotto.

IF OBJECT_ID('T', 'U') IS NULL 
    /*Table T does not exist or no permissions*/ 

Un oggetto con ambito schema è uno che appartiene ad uno schema (ad esempio una tabella, vista, stored procedure). L'articolo MSDN fornisce un esempio di oggetto con ambito non schema nei trigger DDL.

è un errore cercare di specificare uno schema durante la creazione di questi

CREATE TRIGGER dbo.SomeTrigger /*Will Fail*/ 
ON DATABASE 
FOR DROP_SYNONYM 
AS 
PRINT 'SomeTrigger' 

non di schema ambito oggetti metadati sono ancora memorizzate nel sys.sysschobjs ma non compare nella vista sys.objects.