Kegagalan Pengambilan Metadata dalam Pakej SSIS Kerana Jadual Sementara
Dalam SSIS, mendapatkan semula metadata daripada jadual sementara kadangkala boleh menyebabkan pakej gagal dengan ralat: "Ralat tidak ditentukan. Rekod OLE DB tersedia. Metadata tidak dapat ditentukan kerana pernyataan 'pilih * daripada '##TmpMcsConfigurationDeviceHistory86B34BFD041A430E84CCACE78DA336A1'' menggunakan jadual temp."
Isu ini timbul apabila pakej cuba mengakses jadual sementara global bernama "##TmpMcsConfigurationDeviceHistory." Ralat menunjukkan bahawa SSIS tidak dapat menentukan metadata jadual temp secara dinamik.
Penyelesaian
Untuk menyelesaikan isu ini, anda boleh mentakrifkan secara eksplisit metadata untuk temp jadual menggunakan klausa WITH RESULT SETS. Ini memberikan SSIS maklumat yang diperlukan terlebih dahulu, menghapuskan keperluan untuknya menentukan metadata secara dinamik, yang boleh menyebabkan kegagalan untuk jadual temp.
Contoh Pertanyaan dengan SET HASIL:
EXEC (' CREATE TABLE #a ( MyIntegerColumn INT NOT NULL, MyTextColumn VARCHAR(50) NULL, MyOtherColumn BIT NULL ) INSERT INTO #a ( MyIntegerColumn, MyTextColumn, MyOtherColumn ) SELECT 1 AS MyIntegerColumn, ''x'' AS MyTextColumn, 0 AS MyOtherColumn SELECT MyIntegerColumn, MyTextColumn, MyOtherColumn FROM #a') WITH RESULT SETS ( ( MyIntegerColumn INT NOT NULL ,MyTextColumn VARCHAR(50) NULL ,MyOtherColumn BIT NULL ) )
Dengan menyediakan metadata secara eksplisit, SSIS boleh mengelak daripada mendapatkannya secara dinamik daripada jadual temp, menghapuskan ralat dan membolehkan pakej mengambil metadata dengan jayanya.
Atas ialah kandungan terperinci Mengapa Pakej SSIS Saya Gagal Apabila Mendapatkan Metadata daripada Jadual Sementara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!