1 Ekim 2010 Cuma

"Remote table-valued function calls are not allowed."

HATA:
Remote table-valued function calls are not allowed.

AÇIKLAMA:
Tam adresleme ve NOLOCK kullanarak (4 isim sunucu_adı.veritabanı_adı.schema_adı.tablo_adı) yaptığınız bir sorgu sonucunda böyle bir hata mesajı alabilirsiniz.

Örnek:
SELECT * FROM sunucu_adı.veritabanı_adı.schema_adı.tablo_adı (NOLOCK)


ÇÖZÜM:
Eğer sorgunuzda NOLOCK kullanmak istiyorsanız o zaman WITH (NOLOCK) şeklinde kullanmalısınız, aşağıdaki örnekte olduğu gibi:

SELECT * FROM sunucu_adı.veritabanı_adı.schema_adı.tablo_adı WITH (NOLOCK)

2 yorum:

Mehmet Akif dedi ki...

hocam, hata mesajının function'ın linked server üzerinden çağırılmasıyla ilgili olduğunu düşünüyorum.

bu hatayı da şu örnekteki gibi bertaraf edebiliriz:

SELECT * FROM OPENQUERY(LinkedServerAdi, 'SELECT [dbAdi].dbo.[functionAdi](p1, p2, p3, ....)')

kolay gelsin.

Ekrem Önsoy dedi ki...

Selam Mehmet Akif,

Bu sorunu yaşamak için bir Function kullanmak gerekmiyor ki? Örnekte de verdiğim yapıdaki gibi düz bir SELECT cümleciği de kullansan, WITH kullanmadan bunu çalıştırdığında bu hatayı alırsın.