Visual Studio 2013 SSIS OLE DB 目标(通过连接管理器访问)SQL 命令问题

Visual Studio 2013 SSIS OLE DB Destination (Access via Connection Manager) SQL Command Issue

各位下午好,

我们正在使用 Visual Studio 2013,并且有一个我们正在创建的 SSIS 包。我们有一个简单的数据流任务,它基本上从 SQL 获取一些数据并推送到 Access 数据库。它有三个DFD流项:

我有一个 OLE DB 源(通过 select 语句获得 SQL)--> 数据转换(将 SQL 数据类型转换为访问)--> OLE DB目的地(访问数据库)

步骤 select 对 SQL 进行转换工作正常。

我们遇到的问题是我们用来更新 Access 2010 数据库的 SQL 命令。

我们已尝试 运行 并创建一个简单的 UPDATE 语句来使用硬编码数据更新几个字段,但这并没有更新。我们还尝试创建一个存储过程,然后在 OLE 目标编辑器的 SQL 命令行中执行它。

从网上的帖子可以看出,我们可以在access 2010中创建一个程序并使用它。我们还使用本机 OLE DB\Microsoft Office 12.0 访问数据库引擎 OLE DB 提供程序。此连接测试成功。

我们可以在 SQL 命令行中编写 SELECT 语句,这确实会拉回数据。我们似乎只是对更新和/或创建过程有问题。反过来,我们无法填充映射。映射显示目标框,但此处不显示任何字段。

我们已经在 Internet 上仔细查看,但我们正在努力寻找解决方案。

这是我们正在尝试运行的更新语句形式的代码示例。

UPDATE ReferenceFields 
     INNER JOIN Addresses 
     ON ReferenceFields.ID = Addresses.ID
          SET ReferenceFields.Reference2 =CustomerName,
                 ReferenceFields.Reference3 = telephone           
WHERE Addresses.UPRN = 12345678910 

如果我解析查询它是成功的,但是当我 select 映射时显示警告....

Error at Data Flow Task [OLE DB Destination [136]]: No column information was returned by the SQL command

https://msdn.microsoft.com/EN-US/library/office/ff845861.aspx

https://msdn.microsoft.com/en-us/library/ms141044.aspx

SSIS OLEDB destination with SQL command (Insert if not exists)

一段时间后,我自己设法回答了这个问题。

我已经为我需要更新的每个字段添加了独特的参数,并使用@char 来设置它。

UPDATE ReferenceFields 
     INNER JOIN Addresses 
     ON ReferenceFields.ID = Addresses.ID
          SET ReferenceFields.Reference2 = @CustomerName,
              ReferenceFields.Reference3 = @telephone
WHERE UPRN = @UPRN

这贯穿代码并更新 MS Access 数据库。