OBJECT_ID (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Devuelve el número de Id. del objeto de base de datos de un objeto de ámbito de esquema.
Los objetos que no tienen ámbito de esquema, como los desencadenadores del lenguaje de definición de datos (DDL), no se pueden consultar mediante OBJECT_ID
. Para los objetos que no se encuentran en la vista de catálogo sys.objects , obtenga los números de identificación del objeto consultando la vista de catálogo adecuada. Por ejemplo, para devolver el número de identificación de objeto de un desencadenador DDL, use SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'
.
Convenciones de sintaxis de Transact-SQL
Sintaxis
OBJECT_ID ( ' [ database_name . [ schema_name ] . | schema_name . ]
object_name' [ , 'object_type' ] )
Argumentos
N'object_name'
Objeto que se va a usar. object_name es varchar o nvarchar. Un valor varchar de object_name se convierte implícitamente en nvarchar. Especificar los nombres de la base de datos y del esquema es opcional.
N'object_type'
Tipo de objeto con ámbito de esquema. object_type es varchar o nvarchar. Un valor varchar de object_type se convierte implícitamente en nvarchar. Para ver una lista de tipos de objeto, eche un vistazo a la columna type en sys.objects (Transact-SQL).
Tipos de valores devueltos
int
Excepciones
Para un índice espacial, OBJECT_ID
devuelve NULL
.
Devuelve NULL
el error.
Un usuario solo puede ver los metadatos de elementos protegibles que posee el usuario o en los que se concede permiso al usuario. Esto significa que las funciones integradas que emiten metadatos, como OBJECT_ID
podrían devolverse NULL
si el usuario no tiene ningún permiso en el objeto. Para obtener más información, consulte Metadata Visibility Configuration.
Comentarios
Cuando el parámetro de una función del sistema es opcional, se asumen la base de datos, el equipo host, el usuario del servidor o el usuario de la base de datos actuales. Siempre debe seguir las funciones integradas con paréntesis.
Cuando se especifica un nombre de tabla temporal, el nombre de la base de datos debe aparecer antes del nombre de la tabla temporal, a menos que la base de datos actual sea tempdb
. Por ejemplo:
SELECT OBJECT_ID('tempdb..#mytemptable');
Las funciones del sistema se pueden usar en la lista de selección, en la WHERE
cláusula y en cualquier lugar donde se permita una expresión. Para más información, vea Expresiones (Transact-SQL) y WHERE (Transact-SQL).
Ejemplos
Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022
o AdventureWorksDW2022
, que se puede descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.
A Devuelve el identificador de objeto de un objeto especificado.
En este ejemplo se devuelve el Id. de objeto para la tabla Production.WorkOrder
en la base de datos AdventureWorks2022
.
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';
GO
B. Comprobar que existe un objeto
En el ejemplo siguiente se comprueba la existencia de una tabla especificada comprobando si la tabla tiene un identificador de objeto. Si la tabla existe, se elimina. Si la tabla no existe, no se ejecuta la DROP TABLE
instrucción .
USE AdventureWorks2022;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO
C. Use OBJECT_ID para especificar el valor de un parámetro de función del sistema
En este ejemplo se devuelve información de todos los índices y particiones de la tabla Person.Address
en la base de datos AdventureWorks2022
con la función sys.dm_db_index_operational_stats.
Nota:
El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.
Cuando se usan las funciones DB_ID
de Transact-SQL y OBJECT_ID
para devolver un valor de parámetro, asegúrese siempre de que se devuelve un identificador válido. Si no se encuentra el nombre de la base de datos o del objeto, como cuando no existen o se escriben incorrectamente, ambas funciones devuelven NULL
. La sys.dm_db_index_operational_stats
función interpreta NULL
como un valor comodín que especifica todas las bases de datos o todos los objetos. Dado que esta operación puede ser involuntaria, en el ejemplo de esta sección se muestra la manera segura de determinar los identificadores de base de datos y objetos.
DECLARE @db_id INT;
DECLARE @object_id INT;
SET @db_id = DB_ID(N'AdventureWorks2022');
SET @object_id = OBJECT_ID(N'AdventureWorks2022.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
Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)
D. Devuelve el identificador de objeto de un objeto especificado.
En el ejemplo siguiente se devuelve el id. de objeto de la tabla FactFinance
de la base de datos AdventureWorksPDW2022.
SELECT OBJECT_ID('AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';