Bagikan melalui


OBJECT_ID (T-SQL)

Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Mengembalikan nomor identifikasi objek database dari objek dengan cakupan skema.

Objek yang tidak terlingkup skema, seperti pemicu Bahasa Definisi Data (DDL), tidak dapat dikueri dengan menggunakan OBJECT_ID. Untuk objek yang tidak ditemukan dalam tampilan katalog sys.objects , dapatkan nomor identifikasi objek dengan mengkueri tampilan katalog yang sesuai. Misalnya, untuk mengembalikan nomor identifikasi objek pemicu DDL, gunakan SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'.

Konvensi sintaks transact-SQL

Sintaks

OBJECT_ID ( ' [ database_name . [ schema_name ] . | schema_name . ]
  object_name' [ , 'object_type' ] )

Argumen

N'object_name'

Objek yang akan digunakan. object_name adalah varchar atau nvarchar. Nilai varchar object_name secara implisit dikonversi ke nvarchar. Menentukan database dan nama skema bersifat opsional.

N'object_type'

Jenis objek dengan cakupan skema. object_type adalah varchar atau nvarchar. Nilai varchar object_type secara implisit dikonversi ke nvarchar. Untuk daftar jenis objek, lihat kolom jenis di sys.objects (Transact-SQL).

Jenis yang dikembalikan

int

Pengecualian

Untuk indeks spasial, OBJECT_ID mengembalikan NULL.

Mengembalikan NULL kesalahan.

Pengguna hanya dapat melihat metadata yang diamankan yang dimiliki pengguna, atau di mana pengguna diberikan izin. Ini berarti bahwa fungsi bawaan yang memancarkan metadata seperti OBJECT_ID mungkin kembali NULL jika pengguna tidak memiliki izin apa pun pada objek. Untuk informasi selengkapnya, lihat Konfigurasi Visibilitas Metadata.

Keterangan

Ketika parameter ke fungsi sistem bersifat opsional, database saat ini, komputer host, pengguna server, atau pengguna database diasumsikan. Anda harus selalu mengikuti fungsi bawaan dengan tanda kurung.

Ketika nama tabel sementara ditentukan, nama database harus datang sebelum nama tabel sementara, kecuali database saat ini adalah tempdb. Contohnya:

SELECT OBJECT_ID('tempdb..#mytemptable');

Fungsi sistem dapat digunakan dalam daftar pilih, dalam WHERE klausa, dan di mana saja ekspresi diizinkan. Untuk informasi selengkapnya, lihat Ekspresi (Transact-SQL) dan WHERE (Transact-SQL).

Contoh

Sampel kode Transact-SQL dalam artikel ini menggunakan AdventureWorks2022 database sampel atau AdventureWorksDW2022 , yang dapat Anda unduh dari halaman beranda Sampel Microsoft SQL Server dan Proyek Komunitas.

J. Mengembalikan ID objek untuk objek tertentu

Contoh berikut mengembalikan ID objek untuk Production.WorkOrder tabel dalam AdventureWorks2022 database.

USE master;
GO

SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';
GO

B. Verifikasi bahwa objek ada

Contoh berikut memeriksa keberadaan tabel tertentu dengan memverifikasi bahwa tabel memiliki ID objek. Jika tabel ada, tabel akan dihapus. Jika tabel tidak ada, DROP TABLE pernyataan tidak dijalankan.

USE AdventureWorks2022;
GO

IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO

C. Gunakan OBJECT_ID untuk menentukan nilai parameter fungsi sistem

Contoh berikut mengembalikan informasi untuk semua indeks dan partisi Person.Address tabel dalam AdventureWorks2022 database dengan menggunakan fungsi sys.dm_db_index_operational_stats .

Catatan

Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.

Saat Anda menggunakan fungsi DB_ID Transact-SQL dan OBJECT_ID untuk mengembalikan nilai parameter, selalu pastikan bahwa ID yang valid dikembalikan. Jika database atau nama objek tidak dapat ditemukan, seperti saat tidak ada atau salah dieja, kedua fungsi mengembalikan NULL. Fungsi ini sys.dm_db_index_operational_stats menafsirkan NULL sebagai nilai kartubebas yang menentukan semua database atau semua objek. Karena operasi ini bisa menjadi tidak disengaja, contoh di bagian ini menunjukkan cara aman untuk menentukan DATABASE dan ID objek.

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

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

D. Mengembalikan ID objek untuk objek tertentu

Contoh berikut mengembalikan ID objek untuk FactFinance tabel dalam database AdventureWorksPDW2022 .

SELECT OBJECT_ID('AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';