OBJECT_NAME (Transact-SQL)OBJECT_NAME (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Devuelve el nombre del objeto de la base de datos para los objetos de ámbito de esquema.Returns the database object name for schema-scoped objects. Para obtener una lista de los objetos de ámbito de esquema, vea sys.objects (Transact-SQL).For a list of schema-scoped objects, see sys.objects (Transact-SQL).

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

OBJECT_NAME ( object_id [, database_id ] )  

ArgumentosArguments

object_idobject_id
Es el identificador del objeto que se va a utilizar.Is the ID of the object to be used. object_id es de tipo int y se considera que se trata de un objeto de ámbito de esquema en la base de datos especificada o en el contexto de la base de datos actual.object_id is int and is assumed to be a schema-scoped object in the specified database, or in the current database context.

database_iddatabase_id
Identificador de la base de datos donde se va a buscar el objeto.Is the ID of the database where the object is to be looked up. database_id es int.database_id is int.

Tipos devueltosReturn Types

sysnamesysname

ExcepcionesExceptions

Devuelve NULL si se produce un error o si el autor de la llamada no tiene permiso para ver el objeto.Returns NULL on error or if a caller does not have permission to view the object. Si la base de datos de destino tiene la opción AUTO_CLOSE establecida en ON, la función abrirá la base de datos.If the target database has the AUTO_CLOSE option set to ON, the function will open the database.

Un usuario solo puede ver los metadatos de elementos protegibles que posea o para los que se le haya concedido permiso.A user can only view the metadata of securables that the user owns or on which the user has been granted permission. Esto significa que las funciones integradas de emisión de metadatos, como OBJECT_NAME, pueden devolver NULL si el usuario no tiene ningún permiso para el objeto.This means that metadata-emitting, built-in functions such as OBJECT_NAME may return NULL if the user does not have any permission on the object. Para obtener más información, consulte Metadata Visibility Configuration.For more information, see Metadata Visibility Configuration.

PermisosPermissions

Requiere el permiso ANY en el objeto.Requires ANY permission on the object. Para especificar un identificador de base de datos, también se requiere el permiso CONNECT en la base de datos o se debe habilitar la cuenta de invitado.To specify a database ID, CONNECT permission to the database is also required, or the guest account must be enabled.

NotasRemarks

Las funciones del sistema se pueden usar en la lista de selección, en la cláusula WHERE y en cualquier lugar donde se permita una expresión.System functions can be used in the select list, in the WHERE clause, and anywhere an expression is allowed. Para obtener más información, vea Expressions y WHERE.For more information, see Expressions and WHERE.

El valor que devuelve esta función del sistema usa la intercalación de la base de datos actual.The value returned by this system function uses the collation of the current database.

De manera predeterminada, Motor de base de datos de SQL ServerSQL Server Database Engine considera que object_id está en el contexto de la base de datos actual.By default, the Motor de base de datos de SQL ServerSQL Server Database Engine assumes that object_id is in the context of the current database. Una consulta que hace referencia a un parámetro object_id de otra base de datos devuelve NULL o resultados incorrectos.A query that references an object_id in another database returns NULL or incorrect results. Por ejemplo, en la siguiente consulta, el contexto de la base de datos actual es AdventureWorks2012AdventureWorks2012.For example, in the following query the context of the current database is AdventureWorks2012AdventureWorks2012. El Motor de base de datosDatabase Engine intenta devolver un nombre de objeto para el identificador de objeto especificado en esa base de datos en lugar de en la base de datos especificada en la cláusula FROM de la consulta.The Motor de base de datosDatabase Engine tries to return an object name for the specified object ID in that database instead of the database specified in the FROM clause of the query. Por lo tanto, se devuelve información incorrecta.Therefore, incorrect information is returned.

USE AdventureWorks2012;  
GO  
SELECT DISTINCT OBJECT_NAME(object_id)  
FROM master.sys.objects;  
GO  

Puede resolver los nombres de objeto en el contexto de otra base de datos especificando un identificador de base de datos.You can resolve object names in the context of another database by specifying a database ID. En el ejemplo siguiente, se especifica el identificador de la base de datos master en la función OBJECT_SCHEMA_NAME y devuelve los resultados correctos.The following example specifies the database ID for the master database in the OBJECT_SCHEMA_NAME function and returns the correct results.

USE AdventureWorks2012;  
GO  
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name  
FROM master.sys.objects;  
GO  

EjemplosExamples

A.A. Usar OBJECT_NAME en una cláusula WHEREUsing OBJECT_NAME in a WHERE clause

El siguiente ejemplo devuelve columnas de la vista de catálogo sys.objects para el objeto especificado por OBJECT_NAME en la cláusula WHERE de la instrucción SELECT.The following example returns columns from the sys.objects catalog view for the object specified by OBJECT_NAME in the WHERE clause of the SELECT statement.

USE AdventureWorks2012;  
GO  
DECLARE @MyID int;  
SET @MyID = (SELECT OBJECT_ID('AdventureWorks2012.Production.Product',  
    'U'));  
SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(@MyID);  
GO  

B.B. Devolver el nombre del esquema de objetos y el nombre del objetoReturning the object schema name and object name

En el ejemplo siguiente se devuelve el nombre del esquema de objetos, el nombre del objeto y el texto SQL para todos los planes de consulta en caché que no sean instrucciones preparadas o ad hoc.The following example returns the object schema name, object name, and SQL text for all cached query plans that are not ad hoc or prepared statements.

SELECT DB_NAME(st.dbid) AS database_name,   
    OBJECT_SCHEMA_NAME(st.objectid, st.dbid) AS schema_name,  
    OBJECT_NAME(st.objectid, st.dbid) AS object_name,   
    st.text AS query_text  
FROM sys.dm_exec_query_stats AS qs  
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st  
WHERE st.objectid IS NOT NULL;  
GO  

C.C. Devolver nombres de objetos de tres partesReturning three-part object names

En el ejemplo siguiente se devuelve el nombre del objeto, esquema o base de datos junto con todas las demás columnas de la vista de administración dinámica sys.dm_db_index_operational_stats de todos los objetos de todas las bases de datos.The following example returns the database, schema, and object name along with all other columns in the sys.dm_db_index_operational_stats dynamic management view for all objects in all databases.

SELECT QUOTENAME(DB_NAME(database_id))   
    + N'.'   
    + QUOTENAME(OBJECT_SCHEMA_NAME(object_id, database_id))   
    + N'.'   
    + QUOTENAME(OBJECT_NAME(object_id, database_id))  
    , *   
FROM sys.dm_db_index_operational_stats(null, null, null, null);  
GO  

Ejemplos: Almacenamiento de datos SQL de AzureAzure SQL Data Warehouse y Almacenamiento de datos paralelosParallel Data WarehouseExamples: Almacenamiento de datos SQL de AzureAzure SQL Data Warehouse and Almacenamiento de datos paralelosParallel Data Warehouse

D.D. Usar OBJECT_NAME en una cláusula WHEREUsing OBJECT_NAME in a WHERE clause

El siguiente ejemplo devuelve columnas de la vista de catálogo sys.objects para el objeto especificado por OBJECT_NAME en la cláusula WHERE de la instrucción SELECT.The following example returns columns from the sys.objects catalog view for the object specified by OBJECT_NAME in the WHERE clause of the SELECT statement. (El número de objeto [274100017 en el ejemplo siguiente] será diferente.(Your object number (274100017 in the example below) will be different. Para probar este ejemplo, busque un número de objeto válido mediante la ejecución de SELECT name, object_id FROM sys.objects; en la base de datos).To test this example, look up a valid object number by executing SELECT name, object_id FROM sys.objects; in your database.)

SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(274100017);  

Consulte tambiénSee Also

Funciones de metadatos (Transact-SQL) Metadata Functions (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL) OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)OBJECT_ID (Transact-SQL)