Menampilkan Dependensi Prosedur Tersimpan
Berlaku untuk: SQL Server Azure SQL Database Azure Synapse Analytics Analytics Platform System (PDW)
Topik ini menjelaskan cara melihat dependensi prosedur tersimpan di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL.
Sebelum Anda memulai: Batasan dan Pembatasan, Keamanan
Untuk melihat dependensi prosedur, menggunakan: SQL Server Management Studio, Transact-SQL
Sebelum Anda mulai
Batasan dan Pembatasan
Keamanan
Izin
Fungsi Sistem: sys.dm_sql_referencing_entities
Memerlukan izin CONTROL pada entitas yang dirujuk dan izin SELECT pada sys.dm_sql_referencing_entities. Ketika entitas yang dirujuk adalah fungsi partisi, izin CONTROL pada database diperlukan. Secara default, izin SELECT diberikan kepada publik.
Fungsi Sistem: sys.dm_sql_referenced_entities
Memerlukan izin SELECT pada izin sys.dm_sql_referenced_entities dan VIEW DEFINITION pada entitas referensi. Secara default, izin SELECT diberikan kepada publik. Memerlukan izin LIHAT DEFINISI pada database atau izin UBAH PEMICU DDL DATABASE pada database saat entitas referensi adalah pemicu DDL tingkat database. Memerlukan izin LIHAT DEFINISI APA PUN di server saat entitas referensi adalah pemicu DDL tingkat server.
Tampilan Katalog Objek: sys.sql_expression_dependencies
Memerlukan izin LIHAT DEFINISI pada database dan izin SELECT pada sys.sql_expression_dependencies untuk database. Secara default, izin SELECT hanya diberikan kepada anggota peran database tetap db_owner. Saat izin SELECT dan VIEW DEFINITION diberikan kepada pengguna lain, penerima hibah dapat melihat semua dependensi dalam database.
Cara Melihat Dependensi Prosedur Tersimpan
Anda bisa menggunakan salah satu hal berikut ini:
Menggunakan SQL Server Management Studio
Untuk melihat dependensi prosedur di Object Explorer
Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.
Perluas Database, perluas database tempat prosedur berada, lalu perluas Programmability.
Perluas Prosedur Tersimpan, klik kanan prosedur lalu klik Tampilkan Dependensi.
Lihat daftar objek yang bergantung pada prosedur.
Lihat daftar objek yang bergantung pada prosedur.
Klik OK.
Menggunakan T-SQL
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.
Untuk melihat dependensi prosedur di Editor Kueri
Fungsi Sistem: sys.dm_sql_referencing_entities
Fungsi ini digunakan untuk menampilkan objek yang bergantung pada prosedur.
Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.
Perluas Database, perluas database tempat prosedur berada.
Klik Kueri Baru di bawah menu File.
Salin dan tempel contoh berikut ke editor kueri. Contoh pertama membuat
uspVendorAllInfo
prosedur, yang mengembalikan nama semua vendor dalam database Adventure Works Cycles, produk yang mereka berikan, peringkat kredit mereka, dan ketersediaannya.USE AdventureWorks2022; GO IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT v.Name AS Vendor, p.Name AS 'Product name', v.CreditRating AS 'Rating', v.ActiveFlag AS Availability FROM Purchasing.Vendor v INNER JOIN Purchasing.ProductVendor pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product p ON pv.ProductID = p.ProductID ORDER BY v.Name ASC; GO
Setelah prosedur dibuat, contoh kedua menggunakan fungsi sys.dm_sql_referencing_entities untuk menampilkan objek yang bergantung pada prosedur.
USE AdventureWorks2022; GO SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent FROM sys.dm_sql_referencing_entities ('Purchasing.uspVendorAllInfo', 'OBJECT'); GO
Fungsi Sistem: sys.dm_sql_referenced_entities
Fungsi ini digunakan untuk menampilkan objek yang bergantung pada prosedur.
Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.
Perluas Database, perluas database tempat prosedur berada.
Klik Kueri Baru di bawah menu File.
Salin dan tempel contoh berikut ke editor kueri. Contoh pertama membuat
uspVendorAllInfo
prosedur, yang mengembalikan nama semua vendor dalam database Adventure Works Cycles, produk yang mereka berikan, peringkat kredit mereka, dan ketersediaannya.USE AdventureWorks2022; GO IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT v.Name AS Vendor, p.Name AS 'Product name', v.CreditRating AS 'Rating', v.ActiveFlag AS Availability FROM Purchasing.Vendor v INNER JOIN Purchasing.ProductVendor pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product p ON pv.ProductID = p.ProductID ORDER BY v.Name ASC; GO
Setelah prosedur dibuat, contoh kedua menggunakan fungsi sys.dm_sql_referenced_entities untuk menampilkan objek yang bergantung pada prosedur.
USE AdventureWorks2022; GO SELECT referenced_schema_name, referenced_entity_name, referenced_minor_name,referenced_minor_id, referenced_class_desc, is_caller_dependent, is_ambiguous FROM sys.dm_sql_referenced_entities ('Purchasing.uspVendorAllInfo', 'OBJECT'); GO
Tampilan Katalog Objek: sys.sql_expression_dependencies
Tampilan ini dapat digunakan untuk menampilkan objek yang bergantung pada prosedur atau yang bergantung pada prosedur.
Menampilkan objek yang bergantung pada prosedur.
Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.
Perluas Database, perluas database tempat prosedur berada.
Klik Kueri Baru di bawah menu File.
Salin dan tempel contoh berikut ke editor kueri. Contoh pertama membuat
uspVendorAllInfo
prosedur, yang mengembalikan nama semua vendor dalam database Adventure Works Cycles, produk yang mereka berikan, peringkat kredit mereka, dan ketersediaannya.USE AdventureWorks2022; GO IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT v.Name AS Vendor, p.Name AS 'Product name', v.CreditRating AS 'Rating', v.ActiveFlag AS Availability FROM Purchasing.Vendor v INNER JOIN Purchasing.ProductVendor pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product p ON pv.ProductID = p.ProductID ORDER BY v.Name ASC; GO
Setelah prosedur dibuat, contoh kedua menggunakan tampilan sys.sql_expression_dependencies untuk menampilkan objek yang bergantung pada prosedur.
USE AdventureWorks2022; GO SELECT OBJECT_SCHEMA_NAME ( referencing_id ) AS referencing_schema_name, OBJECT_NAME(referencing_id) AS referencing_entity_name, o.type_desc AS referencing_desciption, COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id, referencing_class_desc, referenced_class_desc, referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name, COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name, is_caller_dependent, is_ambiguous FROM sys.sql_expression_dependencies AS sed INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id WHERE referenced_id = OBJECT_ID(N'Purchasing.uspVendorAllInfo') GO
Menampilkan objek yang bergantung pada prosedur.
Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.
Perluas Database, perluas database tempat prosedur berada.
Klik Kueri Baru di bawah menu File.
Salin dan tempel contoh berikut ke editor kueri. Contoh pertama membuat
uspVendorAllInfo
prosedur, yang mengembalikan nama semua vendor dalam database Adventure Works Cycles, produk yang mereka berikan, peringkat kredit mereka, dan ketersediaannya.USE AdventureWorks2022; GO IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT v.Name AS Vendor, p.Name AS 'Product name', v.CreditRating AS 'Rating', v.ActiveFlag AS Availability FROM Purchasing.Vendor v INNER JOIN Purchasing.ProductVendor pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product p ON pv.ProductID = p.ProductID ORDER BY v.Name ASC; GO
Setelah prosedur dibuat, contoh kedua menggunakan tampilan sys.sql_expression_dependencies untuk menampilkan objek yang bergantung pada prosedur.
USE AdventureWorks2022; GO SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name, o.type_desc AS referencing_desciption, COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id, referencing_class_desc, referenced_class_desc, referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name, COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name, is_caller_dependent, is_ambiguous FROM sys.sql_expression_dependencies AS sed INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id WHERE referencing_id = OBJECT_ID(N'Purchasing.uspVendorAllInfo'); GO
Lihat Juga
Mengganti nama Prosedur Tersimpan
sys.dm_sql_referencing_entities (T-SQL)
sys.dm_sql_referenced_entities (T-SQL)
sys.sql_expression_dependencies (Transact-SQL)