Saklı yordamlar (veritabanı altyapısı)

Bir saklı yordam SQL Serverbir grup bir veya daha fazla Transact-SQLdeyimleri ya da başvurusu bir Microsoft  .NET FrameworkÇalışma Zamanı (clr) dil yöntemi. Çünkü onlar için yordamlar yapıları diğer programlama dillerinde benzer:

  • Giriş parametrelerini kabul etmek ve birden çok değer çıkış parametreleri formunda çağıran programa dönmek.

  • Veritabanında işlemleri gerçekleştirmek programlama deyimleri içerir. Bu diğer yordamları çağıran dahil.

  • Başarı veya başarısızlık (ve başarısızlık nedeni) belirtmek için arama bir programa bir durum değerini döndürür.

Yarar-in istimal saklı yordamları

Aşağıdaki liste, yordamları kullanarak bazı avantajları açıklar.

  • Azaltılmış sunucu/istemci ağ trafiği
    Komutları bir yordamın kodu tek bir toplu iş yürütülür. Yalnızca arama yordamı çalıştırmak için ağ üzerinden gönderildiği için bu sunucu ve istemci arasındaki ağ trafiğini önemli ölçüde azaltabilirsiniz. Bir yordam tarafından sağlanan kodu encapsulation, tek tek her kod satırının çapraz ağ olurdu.

  • Daha güçlü güvenlik
    Kullanıcılar ve programlar doğrudan bu alttaki nesneler üzerinde izniniz yok bile birden çok kullanıcı ve istemci programları temel veritabanı nesnelerine bir yordam aracılığıyla işlemlerini gerçekleştirebilirsiniz. Prosedür ne işlem ve etkinlikleri gerçekleştirilir denetler ve alttaki veritabanı nesnelerini korur. Bu tek tek nesne düzeyinde izinler vermek zorunluluğu ortadan kaldırır ve güvenlik katmanları kolaylaştırır.

    execute as yan tümcesi, kullanıcılar veya uygulamalar temel nesneleri ve komutları doğrudan izinler gerekmeden belirli veritabanı etkinlikleri gerçekleştirmek için etkinleştirmek veya başka bir kullanıcı kimliğine bürünülüyor etkinleştirmek için create procedure deyimi belirtilebilir. Örneğin, truncate table gibi bazı eylemler c.Grantable izinleri yoktur. truncate table yürütmek için kullanıcı belirtilen tablo üzerinde alter izinleri olmalıdır. Kullanıcı izinleri bir tablo kesecek de yeteneği ötesinde etkili olduğundan kullanıcı alter tablo izinleri verme ideal olmayabilir. truncate table deyimi içinde bir modül ve bu modül execute Tablo değiştirme izinleri olan bir kullanıcı olarak belirterek birleşmeyle modül execute izinleri verin kullanıcı tablo kesecek için izinleri genişletebilirsiniz.

    Ağ üzerinden bir yordamı çağırmak, yalnızca arama yordamı yürütmek için görülebilir. Bu nedenle, kötü niyetli kullanıcıların tablo ve veritabanı nesne adları, embed göremiyorum Transact-SQLkendi ifadeleri ya da kritik verileri için arama. Daha fazla bilgi için bkz: SQL Injection.

    Yordam parametreleri kullanarak sql enjeksiyon saldırılarına karşı koruma sağlar. Parametre giriş olarak bir hazır bilgi değeri ve yürütülebilir kod olarak kabul edilir çünkü saldırganın içine bir komut eklemek daha zor Transact-SQLyordam ve uzlaşma güvenlik içinde deyim.

    Kaynak kodu karartan yardımcı yordamlar şifrelenebilir. Daha fazla bilgi için, bkz. SQL Server şifreleme.

  • Kodu yeniden kullanma
    Herhangi bir tekrarlayan veritabanı işlem katma yordamları için mükemmel bir aday kodudur. Bu aynı kod gereksiz yeniden yazımlar ortadan kaldırır, kod tutarsızlık azaltır ve erişilebilecek ve gerekli izinlere sahip tüm kullanıcı veya tarafından yürütülen kod sağlar.

  • Kolay bakım
    İstemci uygulamaları yordamları çağırmak ve veritabanı işlemleri veri katmanı içinde tutmak için alttaki veritabanı değişiklikleri yalnızca yordamları güncelleştirilmesi gerekir. Uygulama katmanı ayrı kalır ve nasıl değişiklikler veritabanını düzenler, ilişkileri veya işlemler için bilmek zorunda değildir.

  • Geliştirilmiş performans
    Varsayılan olarak, bir yordam yürütülür ve sonraki yürütmeler için yeniden yürütme planı oluşturur ilk kez derler. Sorgu işlemci yeni bir plan oluşturmak zorunda değildir, o genellikle yordamı işlemek için daha az zaman alır.

    Derlenmiş planı yapılmış, tablolar veya yordam tarafından başvurulan veri önemli bir değişiklik, yavaş gerçekleştirme yordamı aslında neden olabilir. Bu durumda, yordam yeniden ve yeni bir yürütme planı zorlayarak performansı artırabilir.

Saklı yordamları türleri

  • Kullanıcı tanımlı
    Kullanıcı tanımlı bir yordam kullanıcı tanımlı veritabanı veya tüm sistem veritabanları dışında oluşturulabilir kaynak veritabanı. Yordam ya da geliştirilebilir Transact-SQLya da başvuru olarak bir Microsoft  .NET FrameworkÇalışma Zamanı (clr) dil yöntemi.

  • Geçici
    Geçici yordamları, kullanıcı tanımlı yordamları şeklidir. Dışında geçici yordamlar depolanan geçici kalıcı bir işlem gibi işlemleri tempdb. Geçici yordamları için iki tür vardır: Yerel ve küresel. Onlar isimlerini, kendi görüş ve kullanılabilirliklerini birbirinden farklı. Yerel geçici yordamları, isimlerini ilk karakteri tek sayı işareti (#) var; yalnızca geçerli kullanıcı bağlantısı görünmüyorsa ve bağlantı kapalı olduğunda bunlar silinir. Genel geçici yordamları iki sayı işaretleri (#) adlarının ilk iki karakter var; onlar, herhangi bir kullanıcı için görünür sonra oluşturulur ve bu yordamı kullanarak son oturumun sonunda silinir.

  • Sistem
    Sistem prosedürleri ile birlikte SQL Server. Fiziksel olarak depolanan iç, gizli kaynak veritabanı ve mantıklı görünen sys her sistem ve kullanıcı tanımlı veritabanı şeması. Ayrıca, msdb veritabanı da içeren sistem saklı yordamları dbo uyarıları ve işleri zamanlamak için kullanılan şema. Çünkü sistem yordamları önekiyle başlar saklı, sen bu önek adlandırma işlemleri kullanıcı tanımlı kullanmamanızı öneririz. Sistem prosedürleri tam bir listesi için bkz.Sistem saklı yordamları (Transact-sql)

    SQL Serverbir arabirimden sağlayan sistem yordamları destekler SQL Serverdış programlar için çeşitli bakım etkinlikleri. Bu Genişletilmiş yordamlar xp_ önekini kullanın. Genişletilmiş yordamlar tam bir listesi için bkz: Genel genişletilmiş saklı yordamlar (Transact-sql).

  • Kullanıcı tanımlı genişletilmiş
    c. gibi bir programlama dilinde dış yordamları oluşturma Genişletilmiş yordamlar etkinleştir Bu yordamları dll dosyalarıdır, örneğini SQL Serverdinamik olarak yüklemek ve çalıştırmak.

    [!NOT]

    Genişletilmiş saklı yordamlar, gelecekteki bir sürümüne kaldırılacak SQL Server. Yeni geliştirme işlerinde bu özelliği kullanmayın ve bu özelliği kullanmakta olan uygulamaları mümkün olduğunca erken bir zamanda değiştirin. clr yordamları oluşturun. Bu yöntem, Genişletilmiş yordamlar yazma için daha sağlam ve güvenli bir alternatif sağlar.

ilişkili Görevler

Görev Açıklaması

Konu

Saklı bir yordam oluşturmak nasıl açıklar.

Saklı yordam oluşturma

Saklı yordam değiştirmek nasıl açıklar.

Saklı yordam değiştirmek

Saklı yordam silmek nasıl açıklar.

Saklı yordam silmek

Saklı yordam yürütme açıklar.

Bir saklı yordamı yürütmek

Saklı yordam izinleri açıklar.

Saklı yordam izinleri

Verileri bir saklı yordam bir uygulamaya dönmek açıklar.

Saklı yordam veri döndürür

Saklı yordam yeniden derlemek açıklar.

Saklı yordam yeniden derlemek

Saklı yordam yeniden adlandırmak yapmanız gerekenleri açıklar.

Saklı yordam yeniden adlandırma

Saklı yordam definition görüntülemek açıklar.

Saklı yordam tanımı görüntüleme

Bir saklı yordam bağımlılıkları görüntülemek açıklar.

Saklı yordam bağımlılıkları görüntülemek

İlişkili İçerik

clr depolanmış yordamlar