我创建了一个名为 DimInternationalFunction 的表。
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[DimInternationalFunction]') AND type in (N'U'))
DROP TABLE [DimInternationalFunction]
Go
Create Table DimInternationalFunction
(IntFunctionKey int NOT NULL identity primary key,
SubSubFunctionString char(10),
FunctionCode char(3),
SubFunctionCode char(6),
SubSubFunctionCode char(10),
SubSubFunctionName nvarchar(60),
SubFunctionName nvarchar(60),
FunctionName nvarchar(60))
我最初在 SSMS 的这个表中插入了记录。
在 SSMS 中手动插入初始记录后,现在我的经理希望我使用 SSIS 插入“仅新记录”。
我已经尝试在 SSMS 中使用它并且它有效。它要么给我插入 0 条记录,要么有时它给我插入 5 条记录。我的经理希望我在 SSIS 中这样做。
我尝试在数据访问模式下的 OLE DB 源中使用此脚本:SQL 命令和 SQL 命令文本:
insert into DWResourceTask.dbo.DimInternationalFunction
select f.SubSubFunctionString,
f.FunctionCode,
f.SubFunctionCode,
f.SubSubFunctionCode,
f.SubSubFunctionName,
f.SubFunctionName,
f.FunctionName
from ODS_Function F
where FunctionViewCode = 'INT'
and not exists (select * from DWResourceTask.dbo.DimInternationalFunction I
where (f.SubSubFunctionString=i.SubSubFunctionString
and f.FunctionCode=i.FunctionCode
and f.SubFunctionCode=i.SubFunctionCode
and f.SubSubFunctionCode=i.SubSubFunctionCode
and f.SubSubFunctionName=i.SubSubFunctionName
and f.SubFunctionName=i.SubFunctionName
and f.FunctionName=i.FunctionName)
)
单击预览后收到的错误消息是
The component reported the following warnings:
Error at Int Function [International Function Table [33]]: No column information was returned by the SQL command.
Choose OK if you want to continue with the operation.
Choose Cancel if you want to stop the operation.
SSIS 中是否有另一个组件可以做到这一点?或者我可以只使用 exec sql 任务组件或 ole db 源吗?
我正在考虑使用连接到数据流任务的 exec sql 任务,在数据流任务中我将放置包含临时表的 ole db 源并对其进行删除,或者是否有任何其他方法可以做到这一点。请帮忙。提前致谢。