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'te SQL Veritabanı
Bu makalede, SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'da saklı yordamın nasıl değiştirileceği açıklanır.
Sınırlama
Transact-SQL saklı yordamlar CLR saklı yordamları olacak şekilde değiştirilemez ve bunun tersi de geçerlidir.
Önceki yordam tanımı WITH ENCRYPTION veya WITH RECOMPILEkullanılarak oluşturulduysa, bu seçenekler yalnızca ALTER PROCEDURE deyimine dahil edildiyse etkinleştirilir.
İzinler
Yordamda ALTER PROCEDURE izni gerektirir.
SQL Server Management Studio kullanma
SQL Server Management Studio'da bir yordamı değiştirmek için:
Nesne Gezgini'nde Veritabanı Altyapısı örneğine bağlanın ve ardından bu örneği genişletin.
Önce yordamın ait olduğu veritabanını genişletin, sonra Veritabanlarıgenişletin ve ardından Programlanabilirlikgenişletin.
Saklı Prosedürler'igenişletin, değiştireceğiniz prosedüre sağ tıklayın ve Değiştiröğesini seçin.
Saklı yordamın metnini değiştirin.
Söz dizimini test etmek için, Sorgu menüsünde Ayrıştıröğesini seçin.
Yordam tanımında yapılan değişiklikleri kaydetmek için, Sorgu menüsünde Yürütöğesini seçin.
Güncelleştirilmiş yordam tanımını Transact-SQL betik olarak kaydetmek için, Dosya menüsünde Farklı Kaydetseçin. Dosya adını kabul edin veya yeni bir adla değiştirin ve Kaydetöğesini seçin.
Önemli
Tüm kullanıcı girişlerini doğrulayın. Doğrulamadan önce kullanıcı girişini birleştirmeyin. Hiçbir zaman, karşılanmamış kullanıcı girişinden hazırlanmış bir komutu yürütmeyin. Doğrulanmamış kullanıcı girişi, veritabanınızı SQL ekleme saldırısıolarak adlandırılan bir tür istismara açık hale getirir. Daha fazla bilgi için bkz. SQL enjeksiyonu.
Transact-SQL kullanma
T-SQL komutlarını kullanarak bir yordamı değiştirmek için:
Nesne Gezginiveritabanı altyapısının bir örneğine bağlanın ve bu örneği genişletin.
veritabanları genişletin, yordamın ait olduğuveritabanını genişletin. Alternatif olarak, araç çubuğundan kullanılabilir veritabanları listesinden veritabanını seçin. Bu örnekte
AdventureWorks2025veritabanını seçin.Dosya menüsünde Yeni Sorguseçin.
Aşağıdaki örneği kopyalayıp sorgu düzenleyicisine yapıştırın. Ö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
Purchasing.uspVendorAllInfoyordamını oluşturur.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; GODosya menüsünde Yeni Sorguseçin.
Aşağıdaki örneği kopyalayıp sorgu düzenleyicisine yapıştırın. Örnek,
uspVendorAllInfoprosedürünü değiştirir.EXECUTE AS CALLERyan tümcesi kaldırılır ve yordamın gövdesi yalnızca belirtilen ürünü sağlayan satıcıları döndürecek şekilde değiştirilir.LEFTveCASEişlevleri sonuç kümesinin görünümünü özelleştirir.Önemli
Mevcut bir saklı yordamın bırakılıp yeniden oluşturması, saklı yordama açıkça verilmiş izinleri kaldırır. Bunun yerine mevcut saklı yordamı değiştirmek için
ALTERkullanın.ALTER PROCEDURE Purchasing.uspVendorAllInfo @Product varchar(25) AS SET NOCOUNT ON; SELECT LEFT(v.Name, 25) AS Vendor, LEFT(p.Name, 25) AS 'Product name', 'Rating' = CASE v.CreditRating WHEN 1 THEN 'Superior' WHEN 2 THEN 'Excellent' WHEN 3 THEN 'Above average' WHEN 4 THEN 'Average' WHEN 5 THEN 'Below average' ELSE 'No rating' END , Availability = CASE v.ActiveFlag WHEN 1 THEN 'Yes' ELSE 'No' END FROM Purchasing.Vendor AS v INNER JOIN Purchasing.ProductVendor AS pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product AS p ON pv.ProductID = p.ProductID WHERE p.Name LIKE @Product ORDER BY v.Name ASC; GOYordam tanımında yapılan değişiklikleri kaydetmek için, Sorgu menüsünde Yürütöğesini seçin.
Güncelleştirilmiş yordam tanımını Transact-SQL betik olarak kaydetmek için, Dosya menüsünde Farklı Kaydetseçin. Dosya adını kabul edin veya yeni bir adla değiştirin ve Kaydetöğesini seçin.
Değiştirilen saklı yordamı çalıştırmak için aşağıdaki örneği çalıştırın.
EXEC Purchasing.uspVendorAllInfo N'LL Crankarm'; GO
İlgili içerik
- DEĞIŞEN PROSEDÜR (Transact-SQL)
- SQL Enjeksiyonu