Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Microsoft Fabric SQL veritabanı
SQL Server'daki saklı prosedür, bir veya daha fazla Transact-SQL deyiminden oluşan bir grup veya Microsoft .NET Framework ortak dil çalışma zamanı (CLR) yöntemine başvurudur. Yordamlar, diğer programlama dillerindeki yapılara benzer, çünkü:
Giriş parametrelerini kabul edin ve çağıran programa çıkış parametreleri biçiminde birden çok değer döndürebilirsiniz.
Veritabanında işlem gerçekleştiren programlama deyimleri içerir. Bu deyimler diğer yordamları çağırmayı içerir.
Başarılı veya başarısız olduğunu (ve başarısızlığın nedenini) belirtmek için bir çağrı programına durum değeri döndür.
Depolanan prosedürleri kullanmanın avantajları
Aşağıdaki listede prosedür kullanmanın bazı avantajları açıklanmaktadır.
Azaltılmış sunucu/istemci ağ trafiği
Bir yordamdaki komutlar tek bir kod toplu işlemi olarak yürütülür. Bu yaklaşım, ağ üzerinden yalnızca yordamı yürütme çağrısı gönderildiğinden sunucu ve istemci arasındaki ağ trafiğini önemli ölçüde azaltabilir. Bir prosedür tarafından sağlanan kod kapsüllemesi olmadan, her bir kod satırının ağdan geçmesi gerekecekti.
Daha güçlü güvenlik
Kullanıcıların ve programların bu temel nesneler üzerinde doğrudan izinleri olmasa bile, birden çok kullanıcı ve istemci programı bir yordam aracılığıyla temel alınan veritabanı nesneleri üzerinde işlemler gerçekleştirebilir. Yordam, hangi işlemlerin ve etkinliklerin gerçekleştirildiğini denetler ve temel alınan veritabanı nesnelerini korur. Bu yaklaşım, tek tek nesne düzeyinde izin verme gereksinimini ortadan kaldırır ve güvenlik katmanlarını basitleştirir.
EXECUTE AS yan tümcesi, başka bir kullanıcının kimliğine bürünme özelliğini etkinleştirmek veya kullanıcıların veya uygulamaların temel alınan nesneler ve komutlar üzerinde doğrudan izinlere gerek kalmadan belirli veritabanı etkinliklerini gerçekleştirmesini sağlamak için deyiminde belirtilebilirCREATE PROCEDURE. Örneğin, TRUNCATE TABLE gibi bazı eylemlerin tanınabilir izinleri yoktur. Belirtilen tabloda TRUNCATE TABLE izinlerine sahip olmadan ALTER işlemi gerçekleştiremezsiniz. Bir tablo üzerinde kullanıcıya ALTER izinleri vermek ideal olmayabilir, çünkü kullanıcının bir tabloyu kısaltma özelliğinin ötesinde izinleri daha ileri seviyede etkin bir şekilde vardır. Modüle TRUNCATE TABLE ifadesini ekleyerek ve bu modülün tabloyu değiştirme iznine sahip bir kullanıcı olarak çalışmasını belirterek, modül üzerinde EXECUTE izni verdiğiniz kullanıcıya tabloyu boşaltma iznini genişletebilirsiniz.
Bir uygulama ağ üzerinden bir yordam çağırdığında, yalnızca yordamı yürütme çağrısı görünür. Bu nedenle, kötü niyetli kullanıcılar tablo ve veritabanı nesne adlarını göremez, kendi Transact-SQL deyimlerini ekleyemez veya kritik verileri aramaz.
Yordam parametrelerinin kullanılması SQL enjeksiyon saldırılarına karşı korunmaya yardımcı olur. Parametre girişi yürütülebilir kod olarak değil değişmez değer olarak ele alındığından, saldırganın yordamın içindeki Transact-SQL deyimlerine komut eklemesi ve güvenliği tehlikeye atması daha zordur.
Kaynak kodunu gizlemeye yardımcı olması için yordamları şifreleyebilirsiniz. Daha fazla bilgi için bkz. SQL Server şifrelemesi.
Kodun yeniden kullanılması
Yinelenen veritabanı işlemlerinin kodu, yordamlarda kapsülleme için mükemmel bir adaydır. Bu yaklaşım aynı kodun gereksiz yeniden yazmalarını ortadan kaldırır, kod tutarsızlığını azaltır ve gerekli izinlere sahip olan tüm kullanıcıların veya uygulamaların koda erişmesine ve kodu yürütmesine izin verir.
Daha kolay bakım
İstemci uygulamaları yordamları çağırdığında ve veritabanı işlemlerini veri katmanında tuttuğunda, yalnızca temel alınan veritabanındaki değişiklikler için yordamları güncelleştirmeniz gerekir. Uygulama katmanı ayrı kalır ve veritabanı düzenlerinde, ilişkilerinde veya işlemlerinde yapılan değişiklikler hakkında bilgi sahibi olması gerekmez.
Geliştirilmiş performans
Varsayılan olarak, bir yordam ilk kez yürütüldüğünde derlenir ve daha sonraki yürütmeler için tekrar tekrar kullandığı bir yürütme planı oluşturur. Sorgu işlemcisi yeni bir plan oluşturmak zorunda kalmadığı için, genellikle yordamın işlenmesi daha kısa sürer.
Yordam tarafından başvurulan tablolarda veya verilerde önemli değişiklikler varsa, ön derlenmiş plan prosedürün daha yavaş çalışmasına yol açabilir. Bu durumda, yordamı yeniden derlemek ve yeni bir yürütme planı oluşturmak performansı artırabilir.
Saklı yordam türleri
User-defined
Kullanıcı tanımlı bir yordam, kullanıcı tanımlı bir veritabanında veya Resource veritabanı hariç tüm sistem veritabanlarında oluşturulabilir. Prosedür, Transact-SQL'de veya .NET Framework ortak dil çalışma zamanı (CLR) yöntemine referans olarak geliştirilebilir.
Temporary
Geçici yordamlar, kullanıcı tanımlı yordamların bir biçimidir. Geçici yordamlar, kalıcı yordamlar gibidir, ancak tempdb'de depolanırlar. İki tür geçici yordam vardır: yerel ve genel. Adlarında, görünürlüklerinde ve kullanılabilirliklerinde birbirinden farklıdırlar. Yerel geçici yordamların adlarının ilk karakteri olarak tek bir sayı işareti (#) vardır. Bunlar yalnızca geçerli kullanıcı bağlantısı tarafından görülebilir ve bağlantı kapatıldığında silinir. Küresel geçici prosedürler, isimlerinin ilk iki karakteri olarak iki sayı simgesine (##) sahiptir. Oluşturulduktan sonra tüm kullanıcılar tarafından görülebilirler ve son oturumun sonunda yordamı kullanılarak silinirler.
System
Sistem yordamları Veritabanı Altyapısı'na dahil edilir. Bunlar fiziksel olarak iç, gizli Resource veritabanında depolanır ve mantıksal olarak sistem tanımlı ve kullanıcı tanımlı her veritabanının şemasında sys görünür. Ayrıca veritabanı, msdb içindeki dbo şemasında uyarıları ve işleri zamanlamak için kullanılan sistem saklı yordamlarını da içerir. Sistem yordamları ön ekiyle sp_başladığından, kullanıcı tanımlı yordamları adlandırırken bu ön eki kullanmayın. Sistem yordamlarının tam listesi için bkz . Sistem saklı yordamları.
SQL Server, çeşitli bakım etkinlikleri için SQL Server'dan dış programlara arabirim sağlayan sistem yordamlarını destekler. Bu genişletilmiş yordamlar ön eki kullanır xp_ . Genişletilmiş yordamların tam listesi için bkz. Genel genişletilmiş saklı yordamlar.
Genişletilmiş kullanıcı tanımlı
Genişletilmiş yordamlar, C gibi bir programlama dilinde dış yordamlar oluşturulmasını sağlar. Bu yordamlar, BIR SQL Server örneğinin dinamik olarak yükleyip çalıştırabileceği DLL'lerdir.
Note
Genişletilmiş saklı yordamlar SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmayın ve şu anda bu özelliği kullanan uygulamaları en kısa sürede değiştirin. Bunun yerine CLR yordamları oluşturun. Bu yöntem, genişletilmiş yordamlar yazmaya daha sağlam ve güvenli bir alternatif sağlar.
İlgili görevler
| Görev açıklaması | Article |
|---|---|
| Saklı prosedürün nasıl oluşturulacağını açıklar. | Saklı yordam oluştur |
| Saklı yordamın nasıl değiştirileceği açıklanır. | Bir saklı yordamı değiştirin |
| Saklı yordamın nasıl silineceği açıklanır. | Saklı yordamı sil |
| Saklı yordamın nasıl yürütülür açıklanmaktadır. | Saklı yordamı çalıştır |
| Saklı prosedür üzerinde nasıl izin verileceği anlatılır. | Bir saklı yordamda izin verme yetkisi tanımlama |
| Saklı yordamdaki verilerin bir uygulamaya nasıl döndürüleceği açıklanır. | Saklı yordamdan veri döndürme |
| Saklı bir yordamın nasıl yeniden derleneceğini açıklar. | Saklı yordamı yeniden derleyin |
| Saklı yordamın nasıl yeniden adlandırıldığı açıklanır. | Saklı yordamı yeniden adlandırma |
| Saklı yordamın tanımını görüntülemeyi açıklar. | Saklı yordamın tanımını görüntüleme |
| Saklı yordamdaki bağımlılıkların nasıl görüntüleyebileceğinizi açıklar. | Saklı yordamın bağımlılıklarını görüntüleme |
| Parametrelerin saklı prosedürde nasıl kullanıldığını açıklar. | Parameters |