OBJECT_ID (Transact-SQL)
Actualizado: 17 de julio de 2006
Devuelve el número de Id. del objeto de base de datos de un objeto de ámbito de esquema.
Convenciones de sintaxis de Transact-SQL
Importante: |
---|
Los objetos que no tienen como ámbito el esquema, como los desencadenadores DDL, no se pueden consultar utilizando OBJECT_ID. Para los objetos que no se encuentran en la vista de catálogo sys.objects, obtenga los números de identificación de objeto consultando la vista de catálogo adecuada. Por ejemplo, para devolver el número de identificador de objeto de un desencadenador DDL, utilice SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog ' . |
Sintaxis
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
Argumentos
- 'object_name'
Es el objeto que va a utilizarse. object_name es de tipo varchar o nvarchar. Si object_name es de tipo varchar, se convierte implícitamente en nvarchar. Especificar los nombres de la base de datos y del esquema es opcional.
- 'object_type'
Es el tipo de objeto de ámbito del esquema. object_type es de tipo varchar o nvarchar. Si object_type es de tipo varchar, se convierte implícitamente en nvarchar. Si desea una lista de los tipos de objeto, vea la columna type en sys.objects (Transact-SQL).
Tipos de valor devueltos
int
Excepciones
Devuelve NULL si hay un error.
En SQL Server 2005, un usuario sólo puede ver los metadatos de elementos que pueden protegerse que posea o para los que se le haya concedido permiso. Esto significa que las funciones integradas de emisión de metadatos, como OBJECT_ID, pueden devolver NULL si el usuario no tiene ningún permiso para el objeto. Para obtener más información, vea Configuración de visibilidad de los metadatos y Solucionar problemas de visibilidad de los metadatos.
Notas
Cuando el parámetro de una función del sistema es opcional, se supone la base de datos, el equipo host, el usuario del servidor o el usuario de la base de datos actual. Las funciones integradas siempre deben ir seguidas de paréntesis.
Cuando se especifica un nombre de tabla temporal, el nombre de base de datos debe ir antes del nombre de tabla temporal, a menos que la base de datos temporal sea tempdb. Por ejemplo: SELECT OBJECT_ID('tempdb..#mytemptable')
.
Las funciones del sistema se pueden utilizar en la lista de selección, en la cláusula WHERE y en cualquier lugar donde se permita una expresión. Para obtener más información, vea Expresiones (Transact-SQL) y WHERE (Transact-SQL).
Ejemplos
A. Devolver el identificador de objeto de un objeto especificado
En este ejemplo se devuelve el identificador de objeto de la tabla Production.WorkOrder
de la base de datos AdventureWorks
.
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks.Production.WorkOrder') AS 'Object ID';
GO
B. Comprobar la existencia de un objeto
En el ejemplo siguiente se comprueba la existencia de una tabla especificada verificando si la tabla tiene un identificador de objeto. Si la tabla existe, se elimina. Si no existe, la instrucción DROP TABLE
no se ejecuta.
USE AdventureWorks;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO
C. Usar OBJECT_ID para especificar el valor de un parámetro de función del sistema
En el siguiente ejemplo se devuelve información de todos los índices y particiones de la tabla Person.Address
en la base de datos AdventureWorks
con la función sys.dm_db_index_operational_stats.
Importante: |
---|
Cuando utilice las funciones DB_ID y OBJECT_ID de Transact-SQL para devolver un valor de parámetro, asegúrese de que siempre se devuelva un identificador válido. Si el nombre de objeto o base de datos no se puede encontrar, por ejemplo, cuando no existe o se ha escrito incorrectamente, las dos funciones devolverán NULL. La función sys.dm_db_index_operational_stats interpreta NULL como un valor de carácter comodín que especifica todas las bases de datos o todos los objetos. Puesto que ésta puede ser una operación accidental, los ejemplos de esta sección demuestran una forma segura para determinar los identificadores de bases de datos y objetos. |
DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks');
SET @object_id = OBJECT_ID(N'AdventureWorks.Person.Address');
IF @db_id IS NULL
BEGIN;
PRINT N'Invalid database';
END;
ELSE IF @object_id IS NULL
BEGIN;
PRINT N'Invalid object';
END;
ELSE
BEGIN;
SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);
END;
GO
Vea también
Referencia
Funciones de metadatos (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_db_index_operational_stats
OBJECT_DEFINITION (Transact-SQL)
OBJECT_NAME (Transact-SQL)
Ayuda e información
Obtener ayuda sobre SQL Server 2005
Historial de cambios
Versión | Historial |
---|---|
17 de julio de 2006 |
|
14 de abril de 2006 |
|