【问题标题】:Visual Studio 2013 SSIS OLE DB Destination (Access via Connection Manager) SQL Command IssueVisual Studio 2013 SSIS OLE DB 目标(通过连接管理器访问)SQL 命令问题
【发布时间】:2016-01-18 14:38:24
【问题描述】:

下午的人们,

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

我有一个 OLE DB 源(通过 select 语句获取 SQL)--> 数据转换(将 SQL 数据类型转换为 Access)--> OLE DB 目标(Access 数据库)

选择 SQL 并转换它的步骤工作正常。

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

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

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

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

我们在互联网上进行了很好的查看,但我们正在努力寻找解决方案。

以下是我们尝试使用的更新语句形式的代码示例。

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

如果我解析查询它是成功的,但是当我选择映射时会显示一个警告......

数据流任务 [OLE DB 目标 [136]] 出错:无列 信息由 SQL 命令返回

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)

【问题讨论】:

    标签: visual-studio-2013 ssis ms-access-2010 bids


    【解决方案1】:

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

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

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

    这将运行代码并更新 MS Access 数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多