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ı
Bu makalede, SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'da saklı yordamın nasıl yürütüldiği açıklanır.
Saklı yordamı yürütmenin farklı yolları vardır. İlk ve en yaygın yaklaşım, bir uygulamanın veya kullanıcının yordamı çağırmasıdır. Diğer bir yaklaşım, bir SQL Server instance başlatıldığında saklı yordamın otomatik olarak çalışacak şekilde ayarlanmasıdır.
Bir yordam bir uygulama veya kullanıcı tarafından çağrıldığında, Transact-SQL EXECUTE veya EXEC anahtar sözcüğü çağrıda açıkça belirtilir. Yordam bir Transact-SQL toplu işleminin ilk deyimiyse, yordam EXEC anahtar sözcüğü olmadan çağrılabilir ve yürütülebilir.
Limitations
Çağıran veritabanı karşılaştırması, sistem prosedürü adları eşleştirilirken kullanılır. Bu nedenle, yordam çağrılarında her zaman sistem yordamı adlarının tam biçimini kullanın. Örneğin, büyük/küçük harfe duyarlı harmanlama içeren bir veritabanı bağlamında yürütülürse bu kod başarısız olur:
EXEC SP_heLP; -- Fails to resolve because SP_heLP doesn't equal sp_help
Tam sistem yordamı adlarını görüntülemek için, sys.system_objects ve sys.system_parameters katalog görünümlerini sorgulayın.
Kullanıcı tanımlı bir yordam sistem yordamıyla aynı ada sahipse, kullanıcı tanımlı yordam hiç yürütülmeyebilir.
Recommendations
Saklı yordamları yürütmek için aşağıdaki önerileri kullanın.
Sistem saklı yordamları
Sistem yordamları sp_ön ekiyle başlar. Tüm kullanıcı ve sistem tanımlı veritabanlarında mantıksal olarak göründüklerinden, sistem yordamları, yordam adını tam olarak nitelemeden herhangi bir veritabanından yürütülebilir. Ancak, ad çakışmalarını önlemek için tüm sistem yordamı adlarını sys şema adıyla nitelemek en iyisidir. Aşağıdaki örnekte, sistem yordamı çağırmak için önerilen yöntem gösterilmektedir.
EXEC sys.sp_who;
Kullanıcı tanımlı saklı yordamlar
Kullanıcı tanımlı bir yordamı yürütürken, en iyisi yordam adını şema adıyla nitelemedir. Veritabanı Altyapısı'nın birden çok şemada arama yapmak zorunda olmaması nedeniyle bu uygulama küçük bir performans artışı sağlar. Şema adının kullanılması, bir veritabanında birden çok şemada aynı ada sahip yordamlar varsa yanlış yordamın yürütülmesini de engeller.
Aşağıdaki örneklerde, kullanıcı tanımlı bir yordamı yürütmek için önerilen yöntem gösterilmektedir. Bu yordam iki giriş parametresi kabul eder. Giriş ve çıkış parametrelerini belirtme hakkında bilgi için bkz. Saklı yordamda parametre belirtme.
EXECUTE SalesLT.uspGetCustomerCompany @LastName = N'Cannon', @FirstName = N'Chris';
GO
Or:
EXEC SalesLT.uspGetCustomerCompany N'Cannon', N'Chris';
GO
Uygun olmayan bir kullanıcı tanımlı yordam belirtilirse, Veritabanı Motoru yordamı aşağıdaki sırayla arar:
Geçerli veritabanının
sysşeması.Yordam bir toplu işlem veya dinamik SQL içinde yürütülürse, çağıranın varsayılan şeması. Nitelenmemiş yordam adı başka bir yordam tanımının gövdesinde görünürse, bu diğer yordamı içeren şemada daha sonra arama yapılır.
Geçerli veritabanındaki
dboşeması.
Security
Güvenlik bilgileri için bkz. EXECUTE AS (Transact-SQL) ve EXECUTE AS Yan Tümcesi (Transact-SQL).
Permissions
İzin bilgileri için bkz. EXECUTE (Transact-SQL)İzinler.
Saklı yordam yürütme
Sql Server Management Studio'yu (SSMS) veya bir SSMS sorgu penceresinde Transact-SQL kullanarak saklı yordam yürütebilirsiniz. SQL Server Management Studio'nun (SSMS) en son sürümünü yükleyin.
SQL Server Management Studio kullanma
Nesne Gezginibir SQL Server veya Azure SQL Veritabanı örneğine bağlanın, bu örneği genişletin ve ardından Veritabanlarıgenişletin.
İstediğiniz veritabanını genişletin, Programlanabilirlikgenişletin ve ardından Saklı Yordamlargenişletin.
Çalıştırmak istediğiniz saklı yordama sağ tıklayın ve Saklı Yordamı Yürütseçeneğini seçin.
Yordam Yürüt iletişim kutusunda, Parametre her parametrenin adını, Veri Türü veri türünü ve Çıkış Parametresi bunun bir çıkış parametresi olup olmadığını gösterir.
Her parametre için:
- Değeraltında parametresi için kullanılacak değeri yazın.
- Null Değeri Geçiraltında, parametrenin değeri olarak NULL geçirilip geçirmeyeceğini seçin.
Saklı prosedürü yürütmek için Tamam'ı seçin. Saklı yordamda herhangi bir parametre yoksa Tamamseçeneğini belirlemeniz gerekir.
Saklı yordam çalıştırılır ve sonuçlar Sonuçlar bölmesinde görüntülenir.
Örneğin,
SalesLT.uspGetCustomerCompanymakalesindeki saklı yordamını çalıştırmak için, @LastName parametresi için Cannon ve @FirstName parametresi için Chris girin ve Tamamdüğmesini seçin.FirstNameyordam Chris,LastNameCannonveCompanyNameOutdoor Sporting Goodsdöndürür.
Sorgu penceresinde Transact-SQL kullanma
SSMS'de SQL Server veya Azure SQL Veritabanı örneğine bağlanın.
Araç çubuğundan yeni sorguöğesini seçin.
Sorgu penceresine aşağıdaki söz dizimine sahip bir EXECUTE deyimi girin ve beklenen tüm parametreler için değerler sağlayın:
EXECUTE <ProcedureName> N'<Parameter 1 value>, N'<Parameter x value>; GOÖrneğin, aşağıdaki Transact-SQL deyimi
uspGetCustomerCompanysaklı yordamı yürütür veCannonparametre değeri olarak@LastNameveChrisparametre değeri olarak@FirstName:EXEC SalesLT.uspGetCustomerCompany N'Cannon', N'Chris'; GOAraç çubuğundan Yürütöğesini seçin. Saklı yordam çalıştırılır.
Parametre değerleri seçenekleri
Saklı yordam EXECUTE ifadelerinde parametre ve değer sağlamak için birden çok yöntem vardır. Aşağıdaki örneklerde EXECUTE deyimi için birkaç farklı seçenek gösterilmektedir.
Parametre değerlerini saklı yordamda tanımlandığı sırada sağlarsanız, parametre adlarını belirtmeniz gerekmez. Örneğin:
EXEC SalesLT.uspGetCustomerCompany N'Cannon', N'Chris';@parameter_name=valuedeseninde parametre adları sağlarsanız, parametre adlarını ve değerlerini tanımlandıkları sırada belirtmeniz gerekmez. Örneğin, aşağıdaki deyimlerden biri geçerlidir:EXEC SalesLT.uspGetCustomerCompany @FirstName = N'Chris', @LastName = N'Cannon';or:
EXEC SalesLT.uspGetCustomerCompany @LastName = N'Cannon', @FirstName = N'Chris';Herhangi bir parametre için
@parameter_name=valueformunu kullanırsanız, bunu bu deyimdeki sonraki tüm parametreler için kullanmanız gerekir. Örneğin,EXEC SalesLT.uspGetCustomerCompany1 @FirstName = N'Chris', N'Cannon';kullanamazsınız.
Başlangıçta otomatik yürütme
Şunlar için geçerlidir: SQL Server
SQL Server'da, sysadmin sunucu rolünün bir üyesi başlangıçta otomatik yürütme yordamını ayarlamak veya temizlemek için sp_procoption kullanabilir. Başlangıç yordamları master veritabanında olmalı, saait olmalıdır ve giriş veya çıkış parametrelerine sahip olamaz. Daha fazla bilgi için bkz. sp_procoption (Transact-SQL).
Başlangıçta otomatik yürütme için işaretlenmiş yordamlar, SQL Server her başlatıldığında yürütülür ve bu başlatma işlemi sırasında master veritabanı kurtarılır. Yordamları otomatik olarak yürütülecek şekilde ayarlamak, veritabanı bakım işlemlerini gerçekleştirmek veya yordamların arka plan işlemleri olarak sürekli çalışmasını sağlamak için yararlı olabilir.
Otomatik yürütmenin başka bir kullanımı, yordamın tempdbiçinde sistem veya bakım görevlerini gerçekleştirmesini sağlamaktır; örneğin, genel geçici tablo oluşturur. Otomatik yürütme, SQL Server başlatma sırasında tempdb yeniden oluşturulduğunda böyle bir geçici tablonun her zaman var olmasını sağlar.
Otomatik olarak yürütülen bir yordam, sysadmin sabit sunucu rolünün üyeleriyle aynı izinlerle çalışır. Yordamın oluşturduğu hata iletileri, SQL Server hata günlüğüne yazılır.
Sahip olabileceğiniz başlangıç yordamlarının sayısıyla ilgili bir sınır yoktur, ancak her başlangıç yordamı yürütülürken bir çalışan iş parçacığı tüketir. Başlangıçta birden çok yordam yürütmeniz gerekiyorsa ancak bunları paralel olarak yürütmeniz gerekmiyorsa, bir yordamı başlangıç yordamı yapın ve bu yordamın diğer yordamları çağırmasını sağlayın. Bu yöntem yalnızca bir işçi iş parçacığı kullanır.
Tip
Otomatik yürütülen bir yordamdan hiçbir sonuç kümesi döndürmeyin. Yordam bir uygulama veya kullanıcı yerine SQL Server tarafından yürütülmekte olduğundan sonuç kümelerinin gideceği yer yoktur.
Note
Azure SQL Veritabanı, özellikleri master veritabanındaki bağımlılıklardan yalıtacak şekilde tasarlanmıştır. Bu nedenle, sunucu düzeyinde seçenekleri yapılandıran Transact-SQL deyimleri Azure SQL'de kullanılamaz.
Esnek işler veya Azure Automationgibi Azure'ın diğer hizmetlerinden uygun alternatifler bulabilirsiniz.
Başlangıçta otomatik olarak yürütülecek bir yordam ayarlama
Bir yordamı otomatik olarak yürütülecek şekilde yalnızca sistem yöneticisi (sa) işaretleyebilir.
SSMS'de Veritabanı Altyapısı'na bağlanın.
Standart araç çubuğundan Yeni Sorguöğesini seçin.
SQL Server başlangıcında bir saklı yordamı otomatik olarak yürütülecek şekilde ayarlamak için aşağıdaki sp_procoption komutlarını girin.
EXEC sp_procoption @ProcName = N'<stored procedure name>' , @OptionName = 'startup' , @OptionValue = 'on'; GOAraç çubuğunda Yürütöğesini seçin.
Bir yordamın başlangıçta otomatik olarak yürütülmesini durdurma
sysadmin, sql server başlangıcında bir yordamın otomatik olarak yürütülmesini durdurmak için sp_procoption kullanabilir.
SSMS'de Veritabanı Altyapısı'na bağlanın.
Standart araç çubuğundan Yeni Sorguöğesini seçin.
Sorgu penceresine aşağıdaki komutları girin.
EXEC sp_procoption @ProcName = N'<stored procedure name>' , @OptionName = 'startup' , @OptionValue = 'off'; GOAraç çubuğunda Yürütöğesini seçin.