Aracılığıyla paylaş


yürütmek AS modüllerde kullanma

yürütmek AS aşağıdaki modüllerin kullanıcı tarafından tanımlanan yürütmek içeriği tanımlamak için kullanılabilir: işlevler, yordamlar, sıralarını ve Tetikleyicileri. Örneğin, yürütme içeriği modülünün sahibine veya belirtilen kullanıcı modülünün çağıranınkinden değiştirilebilir.' Ün önceki sürümlerinde SQL Server, her zaman bu modüller yürütmek modülünün çağıranın içeriğinde.

Içerik modülü yürütüldüğü belirterek, hangi kullanıcı hesabının denetleyebilirsiniz Database Engine modülü tarafından başvurulan tüm nesneler üzerindeki izinleri doğrulamak için kullanır. Bu, ek esneklik ve izinleri, kullanıcı tanımlı modüller ve bu modüllerde tarafından başvurulan nesne arasında varolan nesne zinciri üzerinden yönetirken, denetim sağlar.Modülünün kullanıcı yalnızca modülünün kendi yürütmek için izinlerinizin olması gerekir; başvurulan nesne üzerindeki açık izinler gereklidir.Modül çalıştıran kullanıcı bir modül tarafından erişilen nesneler üzerinde izinleriniz olmalıdır.

yürütmek İLERLEDİKÇE ARAYAN

Modül içindeki ifadeler modülünün çağıran içeriğinde çalıştırılan yürütmek AS ARAYANıN belirtir.

yürütmek AS ARAYANıN aşağıdaki senaryolar için kullanın:

  • Modüle tablolarda istediğiniz yürütmek arayan kullanıcı olarak.

  • Raporları modülünde karşı arayan kullanıcı için izin çekleri temel ve yalnızca arka plandaki nesnelerin izin denetimlerini atlamak için zincirleme sahipliği kullanan istiyorsunuz.Sahiplik zincirleme yalnızca DML deyimlerini için geçerli olduğunu unutmayın.Sahiplik zincirleme hakkında daha fazla bilgi için bkz: Sahiplik chains.

  • Temel gizleme ve nesneler aynı sahip olma yalnızca başvuru nesneleri kullanıcı veya, başvurulan gizleme şemasının sağlamak için zincirleme sahipliğini bu nedenle kullanan uygulamanız gerekmez.

  • SQL Server 2000 davranışı korumak istiyorsanız.

ARAYANıN senaryosu yürütmek

Mary başvuran bir saklı yordam oluşturur bir tablo Filiz sahibi değil ancak SELECT izinlerine sahip.Filiz belirtir. EXECUTE AS CALLER içinde CREATE PROCEDURE deyim, aşağıdaki örnekte gösterildiği gibi:

CREATE PROCEDURE AccessTable
WITH EXECUTE AS CALLER
AS SELECT * FROM dbo.SomeTable;

Mary, Scott'ın için sonra saklı yordam yürütmek izinleri verir.Scott saklı yordam çalıştırıldığında Database Engine He karakterini (arayan) depolanmış yordamın yürütmek izni olduğunu doğrular. Scott, yürütmek izni vardır, ancak Mary başvurulan sahibi olmadığından tablo, Database Engine Scott izinlerine sahip olup olmadığını denetler tablo. Scott, izinlere sahip değil, deyim saklı yordam başarısız olur.

yürütmek AS kullanıcı_adı

yürütmek İLERLEDİKÇE user_name, belirtilen kullanıcı bağlamında ifadeleri modülü içinde yürütmek belirtir. user_name.

yürütmek AS kullanın. user_name Aşağıdaki senaryolarda:

  • Modüle tablolarda istediğiniz yürütmek belirtilen bir kullanıcı bağlamında.

  • Sahiplik zincirleme üzerinde bağımlı olamaz (örneğin, modülü farklı sahipliği nesneleriyle erişir) temel gizlemek için şema ve başvurulan bu nesnelerdeki izinleri verme önlemek istiyorsanız.

  • Istediğiniz özel bir izin kümesi oluşturun.Örneğin, DDL için izinleri sağlamak için operasyonlar için hangi özel izinlerin normalde sağlanamadı.Daha fazla bilgi için bkz:Özel bir izin kümesi oluşturmak için yürütmek AS kullanma.

    Not

    Bu modül, yürütme içeriği değiştirildi kadar bir modülün yürütme içeriği kesilmesine olamaz, belirtilen kullanıcı.

yürütmek AS kullanıcı_adı senaryosu

Mary başvuran bir saklı yordam oluşturur bir tablo Filiz sahibi değil ancak SELECT izinlerine sahip.Filiz belirtir. EXECUTE AS 'Mary' içinde CREATE PROCEDURE deyim, aşağıdaki örnekte gösterildiği gibi:

CREATE PROCEDURE AccessMyTable
WITH EXECUTE AS 'Mary'
AS SELECT * FROM dbo.MyTable;

Mary, Scott'ın için saklı yordam yürütmek izinleri verir.Scott yürütmek s saklı yordamı, Database Engine izni olduğunu doğrular yürütmek saklı yordam; ancak, başvurulan tabloyu izinlerini Gamze için denetlenir. Scott doğrudan SELECT izinlerine tablo üzerinde sahip olsa bile yordamı, bir bağlamda çalışan, Mary, tablodaki verilere erişmek için gerekli izinlere sahip olduğundan bu senaryoda, kendisine veri yordamı, erişebilirsiniz.

yürütmek İLERLEDİKÇE KENDİNİ

yürütmek AS SELF yürütmek AS eşdeğerdir user_name, burada belirtilen kullanıcı kişi oluşturma veya modülü değiştirme.

yürütmek AS SELF aşağıdaki senaryolarda kullanın:

  • Istediğiniz ifadeleri oluşturmak veya çalışmak üzere değiştirme modülünün çalıştırmak istediğiniz komutun, kullanıcı olarak belirterek kendiniz için bir kısayol.

  • Modül içine arayan kullanıcıların oluşturduğu bir uygulama olması ve bu modüllerde yürütme içeriği kullanıcılar'ı kullanarak oluşturulmasını istediğiniz.Bu senaryoda, tasarım sırasında tanımadığınız saat ne arayan kullanıcı adıdır.

SAHİBİ OLARAK ÇALIŞTIRMA

Modül içindeki ifadeler yürütür geçerli sahibi modülünün kapsamında yürütmek AS OWNER belirtir.Modül, belirli bir sahip yoksa, şema modülünün sahibine kullanılır.

yürütmek AS OWNER aşağıdaki senaryoda kullanın:

  • Modül sahibine modülün kendisini değiştirmek zorunda kalmadan değiştirebilmesini istediğiniz.Diğer bir deyişle, SAHIP çalışma zamanında otomatik olarak geçerli sahibini modülü için eşleştirir.

OWNER modülünün açık sahibi olan veya açık bir sahibi, sahibi şemasının modülüne ait değilse saat modülü yürütülür.SAHIP, tek bir hesabın ve bir grup veya değil rolünü olması gerekir.Modül yürütmek AS OWNER belirtir ve açık olan bir sahibi olan modülü sahipliğini bir grup veya rol değiştirilemez.Sahipliği bir şema rolünü veya gruba yürütmek AS OWNER belirten bir modüle içerdiği ve modülleri açık olan bir sahibi yok değiştirilemez.

OWNER senaryosu yürütmek

Mary başvuran bir saklı yordam oluşturur bir tablo Filiz sahip.Filiz belirtir. EXECUTE AS OWNER içinde CREATE PROCEDURE deyim, aşağıdaki örnekte gösterildiği gibi:

CREATE PROCEDURE Mary.AccessMyTable
WITH EXECUTE AS OWNER
AS SELECT * FROM Mary.MyTable;

Mary, Scott'ın için saklı yordam yürütmek izinleri verir.Scott saklı yordam çalıştırıldığında Database Engine doğrular Marc saklı yordamı çalıştırmak için izni; Filiz yordamının geçerli sahibi olduğu için başvurulan tabloyu izinlerini için Gamze ancak denetlenir. Mary, şirket bırakmaya karar verir ve Tom için yordam ve tablo sahipliğini değiştirir.Scott, sahiplik değişiklikten sonra saklı yordam yürütüldüğünde, kullanıcının OWNER Tom için otomatik olarak eşleştirilmiş olduğundan yordamın bir veri erişim hala olduğu.