2013-04-30 14 views
9

Görünüşte geçerli kod cdc.fn_cdc_get_all_changes_ yordam veya işlev için, teslim edilen:argümanlar sayısının yetersizliği de masanın <code>Fields</code> son izlenen değişiklikleri sorgulamak için

Msg 313, Level 16, State 3, Line 5 
An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_all_changes_ ... . 
:

DECLARE @Begin_LSN BINARY(10), @End_LSN BINARY(10) 
SET @Begin_LSN = sys.fn_cdc_get_min_lsn('Fields') 
SET @End_LSN = sys.fn_cdc_get_max_lsn() 
SELECT * FROM cdc.fn_cdc_get_all_changes_ordering_Fields (@Begin_LSN, @End_LSN, N'all') 
GO 

aşağıdaki hata iletisini oluşturur

Ancak, gerçek değerleri denetlerseniz bunların hepsi geçerli (null değil) olarak görünüyor, sorgu

döner

0x00000000000000000000 0x00002594000002130001 all 

cevap

15

Bu hata mesajı biraz yanıltıcı ve temelde some parameters might be out of bound ima. Mesaj, tablo fonksiyonlarının because of the limitation numarasına daha fazla uyarlanmamıştır.

sıfır değeri (0x00000000000000000000) geçerli değil. sys.fn_cdc_get_min_lsn(), uygun yakalama örnek adı bulamıyorsa bu değeri döndürür. Bu isim gerçek tablo adından sapabilir. Daha fazla ayrıntı

fazla ayrıntı için the following question bakınız bu soruya bakın.

+1

verilen @Begin_Lsn değer değişikliği tablosunda mevcut olmadığı durumlarda da ortaya çıkabilir benim yetersiz için üzgünüm – Sujith

-4

Sizinle benzer bir sorun yaşadım. Benim problemim seninkinden daha kolay ama ben böyle bir hata kodu alan birisi için buraya yazmak istiyorum.

Parametre olan bir işlevi çağırdığımda, bu parametreyi girmeyi unuttum. Bir windowsform veri kümesinde, Select * from func_for_something(@id, @name) gibi bir şey kullanmalıyım. Ama eğer Select * from func_for_something() ile veri kümesinde parametreler olmadan yazıyorsam, görsel stüdyosunda hiç bir itirazım yok. Ancak, bu işlevi programda bir yerde tetiklediğimde sizinki gibi bir hata mesajı görüyorum.

Sonuç olarak: Parametreleri olan bir işlevi kullandığınızda parametreler eklemeyi unutmayın. :) İngilizce