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'
.
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';