使用 SSDT/SSIS 的 SAP HANA ODBC 连接
SAP HANA ODBC Connections using SSDT/SSIS
我们正在将我们的 SAP BW 实例从 MSSQL 迁移到 HANA DB,并且需要在系统外使用 SSIS。使用 SSDT(VS2010),我在尝试从 HANA 读取数据时遇到各种错误。我安装了驱动程序,可以在我编写的小型 C# 应用程序中连接和查询数据(post 下面的代码)。
类似堆栈问题here:我的设置是:
第一个错误:
使用 .Net Provider 进行 ODBC 连接
我收到以下错误:
[SSIS.Pipeline] 错误:ADO NET 源验证失败并返回错误代码 0xC0208449。
[SSIS.Pipeline]错误:ADO NET 源验证失败并返回错误代码 0xC0208449。
验证失败?这是授权问题吗?不
第二个错误:使用直接 ODBC 连接
我收到以下错误:
[ODBC 源 4] 错误:对连接管理器 HANA_ODBC 的 AcquireConnection 方法调用失败,错误代码为 0xC0014009。在此之前可能有错误消息 posted,其中包含有关 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 有答案,但答案中的 link 已死。
非常感谢对此问题的任何帮助!!
根本原因是 HANA ODBC 的 32 位驱动程序上的错误注册表项。正确的条目应如下所示:
64 位:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\HDBODBC
32 位:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\SAP 用于 MS 的 HANA Excel
我们正在将我们的 SAP BW 实例从 MSSQL 迁移到 HANA DB,并且需要在系统外使用 SSIS。使用 SSDT(VS2010),我在尝试从 HANA 读取数据时遇到各种错误。我安装了驱动程序,可以在我编写的小型 C# 应用程序中连接和查询数据(post 下面的代码)。
类似堆栈问题here:我的设置是:
第一个错误:
使用 .Net Provider 进行 ODBC 连接
我收到以下错误: [SSIS.Pipeline] 错误:ADO NET 源验证失败并返回错误代码 0xC0208449。 [SSIS.Pipeline]错误:ADO NET 源验证失败并返回错误代码 0xC0208449。
验证失败?这是授权问题吗?不
第二个错误:使用直接 ODBC 连接
我收到以下错误:
[ODBC 源 4] 错误:对连接管理器 HANA_ODBC 的 AcquireConnection 方法调用失败,错误代码为 0xC0014009。在此之前可能有错误消息 posted,其中包含有关 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 有答案,但答案中的 link 已死。
非常感谢对此问题的任何帮助!!
根本原因是 HANA ODBC 的 32 位驱动程序上的错误注册表项。正确的条目应如下所示:
64 位:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\HDBODBC
32 位:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\SAP 用于 MS 的 HANA Excel