【发布时间】:2009-12-18 22:49:09
【问题描述】:
我有一个 Excel 源进入 OLE DB 目标。我将数据插入到具有处理所有插入的 INSTEAD OF 触发器的视图中。当我尝试执行包时收到此错误:
“插入只读列ColumnName失败”
我该怎么做才能让 SSIS 知道这个视图可以安全插入,因为有一个 INSTEAD OF 触发器可以处理插入?
编辑(附加信息):
一些更多的附加信息。我有一个平面文件正在插入到规范化数据库中。我最初的问题是如何获取一个平面文件并将该数据插入到多个表中,同时跟踪所有主/外键关系。我的解决方案是创建一个模仿平面文件结构的视图,然后在该视图上创建一个 INSTEAD OF 触发器。在我的 INSTEAD OF 触发器中,我将处理维护表之间所有关系的逻辑
我的视图看起来像这样。
CREATE VIEW ImportView
AS
SELECT
CONVERT(varchar(100, NULL) AS CustomerName,
CONVERT(varchar(100), NULL) AS Address1,
CONVERT(varchar(100), NULL) AS Address2,
CONVERT(varchar(100), NULL) AS City,
CONVERT(char(2), NULL) AS State,
CONVERT(varchar(250), NULL) AS ItemOrdered,
CONVERT(int, NULL) AS QuantityOrdered
...
我永远不需要从这个视图中选择,我只用它从我收到的这个平面文件中插入数据。我需要以某种方式告诉 SQL Server 这些字段并不是真正只读的,因为此视图上有一个 INSTEAD OF 触发器。
【问题讨论】:
标签: sql-server sql-server-2008 ssis