Rumah >pangkalan data >tutorial mysql >Mengapa Pakej SSIS Saya Gagal Memperoleh Metadata untuk Jadual Sementara, dan Bagaimana Saya Boleh Membetulkannya Menggunakan `WITH RESULT SETS`?
Gerai Pakej SSIS Memperoleh Metadata untuk Jadual Sementara
Dalam pakej SSIS, berbilang aliran mencipta jadual sementara global sebagai kawasan pementasan untuk data. Walau bagaimanapun, satu aliran mengalami kegagalan sekejap apabila cuba mengambil metadata untuk jadual sementaranya. Mesej ralat berbunyi:
Unspecified error. The metadata could not be determined because statement 'select * from '##TmpMcsConfigurationDeviceHistory86B34BFD041A430E84CCACE78DA336A1'' uses a temp table.
Ungkapan penciptaan untuk jadual sementara ialah:
CREATE TABLE " + @[User::TmpMcsConfigurationDeviceHistory] + " ([RecId] [bigint] NULL,[DataAreaID] [nvarchar](4) COLLATE database_default NULL,[Asset] [bigint] NULL,[Code] [nvarchar](255) COLLATE database_default NULL,[Configuration] [bigint],[StartdateTime] [datetime] NULL,[EndDateTime] [datetime] NULL)
Dinilai, ungkapan ini menjadi:
CREATE TABLE ##TmpMcsConfigurationDeviceHistory764E56F088DC475C9CC747CC82B9E388 ([RecId] [bigint] NULL,[DataAreaID] [nvarchar](4) COLLATE database_default NULL,[Asset] [bigint] NULL,[Code] [nvarchar](255) COLLATE database_default NULL,[Configuration] [bigint],[StartdateTime] [datetime] NULL,[EndDateTime] [datetime] NULL)
Penyelesaian
Untuk menyelesaikan isu ini, pertimbangkan untuk menggunakan WITH RESULT SETS untuk secara eksplisit tentukan metadata untuk jadual sementara. Ini membolehkan SSIS memintas langkah sp_describe_first_result_set dan menggunakan metadata yang disediakan.
Pelaksanaan
Untuk prosedur tersimpan, gunakan sintaks berikut:
EXEC ('dbo.MyStoredProcedure') WITH RESULT SETS ( ( MyIntegerColumn INT NOT NULL, MyTextColumn VARCHAR(50) NULL, MyOtherColumn BIT NULL ) )
Untuk pertanyaan SQL mudah, gunakan sintaks berikut:
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 ) )
Atas ialah kandungan terperinci Mengapa Pakej SSIS Saya Gagal Memperoleh Metadata untuk Jadual Sementara, dan Bagaimana Saya Boleh Membetulkannya Menggunakan `WITH RESULT SETS`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!