Aracılığıyla paylaş


Saklı Yordamın Bağımlılıklarını Görüntüleme

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft Fabric SQL veritabanı

Bu konuda, SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'da saklı yordam bağımlılıklarının nasıl görüntüleneceği açıklanmaktadır.

Başlamadan Önce

Sınırlamalar ve Kısıtlamalar

Security

Permissions

Sistem İşlevi: sys.dm_sql_referencing_entities
Referans verilen varlıkta CONTROL izni ve sys.dm_sql_referencing_entities üzerinde SELECT izni gereklidir. Atıfta bulunulan varlık bir bölüm fonksiyonu olduğunda, veritabanında CONTROL izni gerekir. Varsayılan olarak, SELECT izni herkese verilir.

Sistem İşlevi: sys.dm_sql_referenced_entities
sys.dm_sql_referenced_entities üzerinde SELECT izni ve başvuran varlık üzerinde VIEW DEFINITION izni gerektirir. Varsayılan olarak, SELECT izni herkese verilir. Referans verilen varlık veritabanı düzeyinde bir DDL tetikleyicisi olduğunda, veritabanında VIEW DEFINITION izni veya ALTER DATABASE DDL TRIGGER izni gerektirir. Referans veren varlık sunucu düzeyinde bir DDL tetikleyicisi olduğunda, sunucuda VIEW ANY DEFINITION izni gereklidir.

Nesne Kataloğu Görünümü: sys.sql_expression_dependencies
Veritabanında VIEW DEFINITION iznine sahip olunması ve veritabanı için sys.sql_expression_dependencies üzerinde SELECT izni gerektirir. Varsayılan olarak, SELECT izni yalnızca db_owner sabit veritabanı rolünün üyelerine verilir. SELECT ve VIEW DEFINITION izinleri başka bir kullanıcıya verildiğinde, veren veritabanındaki tüm bağımlılıkları görüntüleyebilir.

Saklı Yordamın Bağımlılıklarını Nasıl Görüntüleyebilirsiniz

Aşağıdakilerden birini kullanabilirsiniz:

SQL Server Management Studio'yu kullanma

Nesne Gezgini'nde bir yordamın bağımlılıklarını görüntülemek için

  1. Nesne Gezgini'nde Veritabanı Altyapısı örneğine bağlanın ve ardından bu örneği genişletin.

  2. Veritabanlarıgenişletin, yordamın ait olduğu veritabanını genişletin ve Programlanabilirlikgenişletin.

  3. Saklı Yordamlar'ıgenişletin, yordama sağ tıklayın ve sonra Bağımlılıkları Görüntüleseçeneğine tıklayın.

  4. İşleme bağlı nesnelerin listesini görüntüleyin.

  5. Prosedürün bağımlı olduğu nesnelerin listesini görüntüleyin.

  6. Tamam'a tıklayın.

Transact-SQL Kullanımı

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

Sorgu Düzenleyicisi'nde bir yordamın bağımlılıklarını görüntülemek için

Sistem İşlevi: sys.dm_sql_referencing_entities
Bu işlev, bir yordama bağlı nesneleri görüntülemek için kullanılır.

  1. Nesne Gezginiveritabanı altyapısının bir örneğine bağlanın ve bu örneği genişletin.

  2. veritabanlarını genişletin, yordamın ait olduğuveritabanını genişletin.

  3. Yeni Sorgu seçeneklerine Dosya menüsünün altında tıklayın.

  4. Aşağıdaki örnekleri kopyalayıp sorgu düzenleyicisine yapıştırın. İlk örnek, Adventure Works Cycles veritabanındaki tüm satıcıların adlarını, sağladığı ürünleri, kredi derecelendirmelerini ve kullanılabilirliklerini döndüren uspVendorAllInfo yordamını oluşturur.

    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. Yordam oluşturulduktan sonra, ikinci örnek yordama bağlı nesneleri görüntülemek için sys.dm_sql_referencing_entities işlevini kullanır.

    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  
    
    

Sistem İşlevi: sys.dm_sql_referenced_entities
Bu işlev, bir yordamın bağımlı olduğu nesneleri görüntülemek için kullanılır.

  1. Nesne Gezginiveritabanı altyapısının bir örneğine bağlanın ve bu örneği genişletin.

  2. veritabanlarını genişletin, yordamın ait olduğuveritabanını genişletin.

  3. Yeni Sorgu seçeneklerine Dosya menüsünün altında tıklayın.

  4. Aşağıdaki örnekleri kopyalayıp sorgu düzenleyicisine yapıştırın. İlk örnek, Adventure Works Cycles veritabanındaki tüm satıcıların adlarını, sağladığı ürünleri, kredi derecelendirmelerini ve kullanılabilirliklerini döndüren uspVendorAllInfo yordamını oluşturur.

    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. Yordam oluşturulduktan sonra ikinci örnek, yordamın bağımlı olduğu nesneleri görüntülemek için sys.dm_sql_referenced_entities işlevini kullanır.

    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  
    

Nesne Kataloğu Görünümü: sys.sql_expression_dependencies
Bu görünüm, bir yordamın bağımlı olduğu veya bir yordama bağlı olan nesneleri görüntülemek için kullanılabilir.

Bir prosedüre bağlı nesneleri görüntüleme.

  1. Nesne Gezginiveritabanı altyapısının bir örneğine bağlanın ve bu örneği genişletin.

  2. veritabanlarını genişletin, yordamın ait olduğuveritabanını genişletin.

  3. Yeni Sorgu seçeneklerine Dosya menüsünün altında tıklayın.

  4. Aşağıdaki örnekleri kopyalayıp sorgu düzenleyicisine yapıştırın. İlk örnek, Adventure Works Cycles veritabanındaki tüm satıcıların adlarını, sağladığı ürünleri, kredi derecelendirmelerini ve kullanılabilirliklerini döndüren uspVendorAllInfo yordamını oluşturur.

    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. Yordam oluşturulduktan sonra, ikinci örnek yordama bağlı nesneleri görüntülemek için sys.sql_expression_dependencies görünümünü kullanır.

    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  
    

Bir yordamın bağımlı olduğu nesneleri görüntüleme.

  1. Nesne Gezginiveritabanı altyapısının bir örneğine bağlanın ve bu örneği genişletin.

  2. veritabanlarını genişletin, yordamın ait olduğuveritabanını genişletin.

  3. Yeni Sorgu seçeneklerine Dosya menüsünün altında tıklayın.

  4. Aşağıdaki örnekleri kopyalayıp sorgu düzenleyicisine yapıştırın. İlk örnek, Adventure Works Cycles veritabanındaki tüm satıcıların adlarını, sağladığı ürünleri, kredi derecelendirmelerini ve kullanılabilirliklerini döndüren uspVendorAllInfo yordamını oluşturur.

    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. Yordam oluşturulduktan sonra, ikinci örnek yordamın bağımlı olduğu nesneleri görüntülemek için sys.sql_expression_dependencies görünümünü kullanır.

    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  
    

Ayrıca Bkz.

Saklı Yordamı Yeniden Adlandırma
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)