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 Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitik Platform Sistemi (PDW)
Microsoft Fabric'te SQL veritabanı
OLE DB sürücüsünü indirme
SQL Server için OLE DB Sürücüsü, tek bir komutun optimize edilmiş çoklu yürütülmesi için komut hazırlığını destekler; ancak komut hazırlama ek yük oluşturur ve tüketicinin komutu birden fazla kez çalıştırmak için bir komut hazırlanmasına gerek yoktur. Genel olarak, bir komut üç kez daha fazla uygulanacaksa hazırlanmalıdır.
Performans nedenleriyle, komut hazırlığı komut uygulanana kadar ertelenir. Bu, varsayılan davranıştır. Hazırlanan komuttaki hatalar, komut yürütülene veya bir meta özellik işlemi yapılana kadar bilinmez. SQL Server özelliğini SSPROP_DEFERPREPARE FALSE olarak ayarlamak bu varsayılan davranışı kapatabilir.
SQL Server'da, bir komut doğrudan (önceden hazırlanmadan) yürütüldüğünde, bir yürütme planı oluşturulur ve önbelleğe alınır. SQL ifadesi tekrar çalıştırılırsa, SQL Server yeni ifadeyi önbellekteki mevcut yürütme planıyla eşleştiren verimli bir algoritmaya sahiptir ve o ifade için yürütme planını yeniden kullanır.
Hazırlanmış komutlar için SQL Server, komut ilamlarının hazırlanması ve yürütülmesi için yerel destek sağlar. Bir ifade hazırladığınızda, SQL Server bir yürütme planı oluşturur, önbellekler ve bu yürütme planının bir tutamacını sağlayıcıya geri gönderir. Sağlayıcı bu kullanıcı adıyla ifadeyi defalarca çalıştırır. Hiçbir depolanmış prosedür oluşturulmaz. Çünkü tutucu, önbellekteki uygulama planıyla eşleştirmek yerine (doğrudan yürütme için olduğu gibi) SQL ifadesi için uygulama planını doğrudan tanımlar, bu yüzden ifadenin birkaç kez birden fazla kez çalıştırılacağını biliyorsanız, bir ifade hazırlamak doğrudan çalıştırmaktan daha verimlidir.
SQL Server 2005 (9.x) içinde, hazırlanan ifadeler geçici nesneler oluşturmak için kullanılamaz ve geçici tablolar gibi geçici nesneler oluşturan sistem depolanmış prosedürlere referans veremez. Bu prosedürler doğrudan uygulanmalıdır.
Bazı komutlar asla hazırlıklı olmamalı. Örneğin, SQL Server için saklanan prosedür yürütmesini belirten veya geçersiz metin içeren komutlar hazırlanmamalıdır.
Geçici bir depolanmış prosedür oluşturulursa, SQL Server için OLE DB Sürücüsü geçici olarak saklanan prosedürü çalıştırır ve sonuçları ifadenin kendisi yürütülmüş gibi geri döndürür.
Geçici olarak saklanan prosedür oluşturma, SQL Server için OLE DB Sürücüsü -specific başlatma özelliği SSPROP_INIT_USEPROCFORPREP tarafından kontrol edilir. Özellik değeri SSPROPVAL_USEPROCFORPREP_ON veya SSPROPVAL_USEPROCFORPREP_ON_DROP ise, SQL Server için OLE DB Sürücüsü bir komut hazırlandığında bir işlem oluşturmaya çalışır. Uygulama kullanıcısının yeterli SQL Server iznine sahip olması durumunda saklanan prosedür oluşturma başarılı olur.
Nadiren bağlantıyı kesen tüketiciler için, geçici depolanmış prosedürlerin oluşturulması, geçici nesnelerin oluşturulduğu SQL Server sistem veritabanı tempdb'nin önemli kaynaklarını gerektirebilir. SSPROP_INIT_USEPROCFORPREP değeri SSPROPVAL_USEPROCFORPREP_ ON olduğunda, SQL Server için OLE DB Sürücüsü tarafından oluşturulan geçici depolanmış prosedürler, komutu oluşturan oturumun SQL Server örneğiyle bağlantısını kaybetmesi durumunda bırakılır. Eğer bu bağlantı, veri kaynağı başlatma sırasında varsayılan bağlantı ise, geçici saklanan prosedür ancak veri kaynağı başlatılmadığında düşürülür.
SSPROP_INIT_USEPROCFORPREP değeri SSPROPVAL_USEPROCFORPREP_ON_DROP olduğunda, aşağıdaki işlemlerden biri gerçekleştiğinde SQL Server için OLE DB Sürücüsü bırakılır:
Tüketici, yeni bir komut belirtmek için ICommandText::SetCommandText kullanır.
Tüketici, artık komut metnine ihtiyaç duymadığını belirtmek için ICommandPrepare::Unprepare kullanır.
Tüketici, geçici depolanmış prosedür kullanarak komut nesnesine tüm referansları serbest bırakır.
Bir komut nesnesinin tempdb'de en fazla bir geçici saklanan prosedürü vardır. Mevcut herhangi bir geçici saklanan prosedür, belirli bir komut nesnesinin mevcut komut metnini temsil eder.