Aracılığıyla paylaş


sys.fn_get_sql (Transact-SQL)

Şunlar için geçerlidir: SQL Server

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)