【问题标题】:SAP HANA ODBC Connections using SSDT/SSIS使用 SSDT/SSIS 的 SAP HANA ODBC 连接
【发布时间】:2016-01-15 18:43:48
【问题描述】:

我们正在将我们的 SAP BW 实例从 MSSQL 迁移到 HANA DB,并且需要在系统外使用 SSIS。使用 SSDT(VS2010),尝试从 HANA 读取数据时出现各种错误。我已经安装了驱动程序,并且可以在我编写的一个小型 C# 应用程序中连接和查询数据(也将在下面发布该代码)。

类似堆栈问题here:我的设置是:

第一个错误: 使用 .Net Provider 进行 ODBC 连接

我收到以下错误: [SSIS.Pipeline] 错误:ADO NET 源验证失败并返回错误代码 0xC0208449。 [SSIS.Pipeline] 错误:ADO NET Source 验证失败并返回错误代码 0xC0208449。

验证失败?这是授权问题吗?不

第二个错误:使用直接 ODBC 连接

我收到以下错误:

[ODBC 源 4] 错误:对连接管理器 HANA_ODBC 的 AcquireConnection 方法调用失败,错误代码为 0xC0014009。在此之前可能会发布错误消息,其中包含有关 AcquireConnection 方法调用失败原因的更多信息。

[SSIS.Pipeline] 错误:ODBC 源验证失败并返回错误代码 0x80004005。

[连接管理器“HANA_ODBC”] 错误:尝试与数据库服务器建立开放式数据库连接 (ODBC) 连接时出错。

在连接管理器上同样成功:

第三个错误:使用安装 HANA 客户端时提供的 .NET HANA 提供程序

我什至没有看到 32 位 DSN 的选项。仅显示 64 位 DSN,当输入用户和密码时会引发异常。

64 位 DSN:

32 位 DSN:

可以从 HANA 连接和查询数据的 C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Odbc;
using System.Data;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (OdbcConnection myConnection = new OdbcConnection())
            {
                string myConnectionString;                
                myConnectionString = "DSN=HANA32;SERVERNODE=MyHana:30015;UID=SYSTEM;PWD=MyPW;DATABASENAME=DB";
                myConnection.ConnectionString = myConnectionString;
                
                try
                {
                    myConnection.Open();
                }
                catch (System.Data.Odbc.OdbcException ex)
                {
                    Console.Error.WriteLine(ex);               
                }
                if (myConnection.State == ConnectionState.Open)
                {
                    Console.Write("Connection Open");
                    Console.WriteLine();
                    OdbcCommand DbCommand = myConnection.CreateCommand();
                    DbCommand.CommandText = "SELECT \"BATCH\" FROM \"_SYS_BIC\".\"ZBW/ZBATCH_ATTRS\" LIMIT 10";
                    OdbcDataReader DbReader = DbCommand.ExecuteReader();
                    while (DbReader.Read())
                    {
                        Console.WriteLine(DbReader["BATCH"].ToString());

                    }        
                    DbReader.Close();
                    DbCommand.Dispose();
                    myConnection.Close();
                    Console.ReadLine();                    
                }
                else
                {
                    Console.Write("Failure");
                    Console.ReadLine();                                       
                }
            }
        }
    }
}

在这里堆叠问题:Hana and SSIS 有答案,但答案中的链接已失效。

任何关于这个问题的帮助将不胜感激!

【问题讨论】:

  • 我找到了原始链接的 archive.org 镜像,并将其发布到您引用的问题中。如果链接解决了您的问题,我会继续写一个 SO 自我回答,这样其他人就不会遇到同样的问题。
  • 新链接对我不起作用
  • 不知道该告诉你什么。该链接对我有用。你能在archive.org上找到任何东西吗?
  • 我可以访问archive.org,但无法访问您的链接。然而,我已经解决了上述问题。我会发布解决方案。

标签: ssis odbc sql-server-data-tools hana


【解决方案1】:

此问题的根本原因是 HANA ODBC 的 32 位驱动程序上的注册表项错误。正确的条目应如下所示:

64 位: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\HDBODBC

32 位: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\SAP HANA for MS Excel

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多