Bagikan melalui


Menampilkan Dependensi Prosedur Tersimpan

Berlaku untuk: SQL Server Azure SQL DatabaseTidak didukung. 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 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

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

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

  2. Perluas Database, perluas database tempat prosedur berada.

  3. Klik 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 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 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_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.

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

  2. Perluas Database, perluas database tempat prosedur berada.

  3. Klik 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_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)