Bagikan melalui


Melihat Ketergantungan Prosedur Tersimpan

Berlaku untuk:SQL ServerDatabase Azure SQLInstans Terkelola Azure SQLAzure Synapse AnalyticsSistem Platform Analitik (PDW)Database SQL di Microsoft Fabric

Topik ini menjelaskan cara melihat dependensi prosedur tersimpan di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL.

Sebelum Anda mulai

Batasan dan Pembatasan

Keamanan

Permissions

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 sys.dm_sql_referenced_entities dan izin VIEW DEFINITION pada entitas yang dirujuk. 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 basis data dan izin SELECT pada sys.sql_expression_dependencies untuk basis data tersebut. 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

  1. Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.

  2. Perluas Database, perluas database tempat prosedur berada, lalu perluas Programmability.

  3. Perluas Prosedur Tersimpan, klik kanan prosedur lalu klik Tampilkan Dependensi.

  4. Lihat daftar objek yang bergantung pada prosedur.

  5. Lihat daftar objek yang bergantung pada prosedur.

  6. Klik OK.

Menggunakan T-SQL

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

Untuk melihat dependensi prosedur di Editor Kueri

Fungsi Sistem: sys.dm_sql_referencing_entities
Fungsi ini digunakan untuk menampilkan objek yang bergantung pada prosedur.

  1. Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.

  2. Perluas Database, perluas database tempat prosedur berada.

  3. Klik pada Kueri Baru di bawah menu File.

  4. 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  
    
  5. 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.

  1. Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.

  2. Perluas Database, perluas database tempat prosedur berada.

  3. Klik pada Kueri Baru di bawah menu File.

  4. 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  
    
  5. 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.

  1. Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.

  2. Perluas Database, perluas database tempat prosedur berada.

  3. Klik pada Kueri Baru di bawah menu File.

  4. 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  
    
  5. 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_description,   
        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 menjadi ketergantungan sebuah prosedur.

  1. Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.

  2. Perluas Database, perluas database tempat prosedur berada.

  3. Klik pada Kueri Baru di bawah menu File.

  4. 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  
    
  5. 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_description,   
        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)