Rumah > pangkalan data > tutorial mysql > Mengapa Pakej SSIS Saya Gagal Memperoleh Metadata untuk Jadual Sementara, dan Bagaimana Saya Boleh Membetulkannya Menggunakan `WITH RESULT SETS`?

Mengapa Pakej SSIS Saya Gagal Memperoleh Metadata untuk Jadual Sementara, dan Bagaimana Saya Boleh Membetulkannya Menggunakan `WITH RESULT SETS`?

Mary-Kate Olsen
Lepaskan: 2024-12-27 14:23:21
asal
563 orang telah melayarinya

Why Does My SSIS Package Fail to Acquire Metadata for a Temporary Table, and How Can I Fix It Using `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.
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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
    )
  )
Salin selepas log masuk

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
        )
    )
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan