Sử dụng WITH RESULT SETS
để xác định rõ ràng siêu dữ liệu sẽ cho phép SSIS bỏ qua sp_describe_first_result_set
bước và sử dụng siêu dữ liệu mà bạn xác định. Ưu điểm là bạn có thể sử dụng điều này để SSIS thực thi SQL có chứa một bảng tạm thời (đối với tôi, hiệu suất đó đã giúp ích rất nhiều); nhược điểm là, bạn phải bảo trì và cập nhật thủ công điều này nếu có bất kỳ điều gì thay đổi.
Mẫu truy vấn (thủ tục được lưu trữ :)
EXEC ('dbo.MyStoredProcedure')
WITH RESULT SETS
(
(
MyIntegerColumn INT NOT NULL,
MyTextColumn VARCHAR(50) NULL,
MyOtherColumn BIT NULL
)
)
Mẫu truy vấn (SQL đơn giản :)
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
)
)