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.
Belirtilen SQL tanıtıcısı için SQL deyiminin metnini döndürür.
Önemli
Bu özellik, Microsoft SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine sys.dm_exec_sql_text kullanın. Daha fazla bilgi için bkz. sys.dm_exec_sql_text (Transact-SQL).
Transact-SQL söz dizimi kuralları
Sözdizimi
sys.fn_get_sql ( SqlHandle )
Tartışmalar
SqlHandle
Tanıtıcı değeridir.
SqlHandle , varsayılan olmayan varbinary(64) değeridir.
Döndürülen Tablolar
| Sütun adı | Veri türü | Açıklama |
|---|---|---|
| dbid | smallint | Veritabanı Kimliği. Geçici ve hazırlanmış SQL deyimleri için, deyimlerin derlendiği veritabanının kimliği. |
| nesne tanımlayıcı | Int | Veritabanı nesnesinin kimliği. Geçici SQL deyimleri için NULL değeridir. |
| Numara | smallint | Yordamlar gruplandırıldıysa grubun sayısını gösterir. 0 = Girdiler yordam değildir. NULL = Geçici SQL deyimleri. |
| şifrelenmiş | bit | Nesnenin şifrelenip şifrelenmediğini gösterir. 0 = Şifrelenmemiş 1 = Şifrelenmiş |
| Başka bir metin sağlanmadığı için, verilen metne dayalı bir çeviri yapmam mümkün değil. Lütfen çevirilecek metni belirtin. | Metin | SQL deyiminin metnidir. Şifrelenmiş nesneler için NULL değeridir. |
Açıklamalar
sys.dm_exec_requests (Transact-SQL) dinamik yönetim görünümünün sql_handle sütunundan geçerli bir SQL tanıtıcısı elde edebilirsiniz.
Önbellekte artık bulunmayan bir tanıtıcı geçirirseniz fn_get_sql boş bir sonuç kümesi döndürür. Geçerli olmayan bir tanıtıcı geçirirseniz, toplu iş durdurulur ve bir hata iletisi döndürülür.
SQL Server Veritabanı Altyapısı, toplu kopyalama deyimleri ve dize değişmez değerleri 8 KB'tan büyük deyimler gibi bazı Transact-SQL deyimlerini önbelleğe alamaz. Bu deyimlerin tanıtıcıları fn_get_sql kullanılarak alınamaz.
Sonuç kümesinin metin sütunu, parola içerebilecek metinler için filtrelenmiştir. İzlenmeyen güvenlikle ilgili saklı yordamlar hakkında daha fazla bilgi için bkz. İzleme filtreleme.
fn_get_sql işlevi DBCC INPUTBUFFER komutuna benzer bilgiler döndürür. DBCC INPUTBUFFER kullanılamadığından fn_get_sql işlevinin ne zaman kullanılabileceğinin örnekleri aşağıda verilmiştir:
Olayların 255'ten fazla karakteri olduğunda.
Saklı yordamın en yüksek geçerli iç içe yerleştirme düzeyini döndürmeniz gerektiğinde. Örneğin, sp_1 ve sp_2 adlı iki saklı yordam vardır. sp_1 sp_2 çağırırsa ve sp_2 çalışırken sys.dm_exec_requests dinamik yönetim görünümünden tanıtıcıyı alırsanız, fn_get_sql işlevi sp_2 hakkında bilgi döndürür. Ayrıca, fn_get_sql işlevi saklı yordamın tam metnini en yüksek geçerli iç içe yerleştirme düzeyinde döndürür.
İzinler
Kullanıcının sunucuda VIEW SERVER STATE iznine sahip olması gerekir.
Örnekler
Veritabanı yöneticileri, sorun işlemlerini tanılamaya yardımcı olmak için aşağıdaki örnekte gösterildiği gibi fn_get_sql işlevini kullanabilir. Yönetici bir sorun oturum kimliğini belirledikten sonra, yönetici bu oturum için SQL tanıtıcısını alabilir, tanıtıcıyla fn_get_sql çağırabilir ve ardından başlangıç ve bitiş uzaklıklarını kullanarak sorun oturum kimliğinin SQL metnini belirleyebilir.
DECLARE @Handle varbinary(64);
SELECT @Handle = sql_handle
FROM sys.dm_exec_requests
WHERE session_id = 52 and request_id = 0;
SELECT * FROM sys.fn_get_sql(@Handle);
GO
Ayrıca Bkz.
DBCC INPUTBUFFER (Transact-SQL)
sys.sysprocesses (Transact-SQL)
sys.dm_exec_requests (Transact-SQL)