通过 ODBC 从 C# 读取 Netezza 数据库表在 Windows 7 中不起作用

2023-12-11

为什么 .NET 无法通过已安装的 {NetezzaSQL} 驱动程序连接到我的 Netezza 盒子? 64 位应用程序也无法通过此 ODBC 连接进行连接。为什么会这样呢?我已在控制面板中构建了用户和系统 Netezza ODBC 连接,当我单击“测试连接”时,两者都工作正常吗?我在注册表中看到了该值,但是当我遍历注册表驱动程序时,.NET 没有看到“NetezzaSQL”。根据 Netezza 的说法,他们没有 64 位 ODBC 驱动程序。他们提供的驱动程序应适用于 32 位和 64 位应用程序。这可能是 Windows 7 的权限问题吗?

static void CreateNetezzaTableObjectFolders()
{
    //string activeDir = @"C:\Source\EDW\dw-objects\trunk";

    OdbcConnection conn = new OdbcConnection();
    conn.ConnectionString = "Driver={NetezzaSQL};servername=10.1.170.18;port=5480;database=DEV_SANDBOX; username=mac;password=secret;";

    OdbcDataReader rdr = null;

    try
    {
        conn.Open();
        System.Data.Odbc.OdbcCommand cmd = new System.Data.Odbc.OdbcCommand("SELECT OBJECT_NAME FROM QA_ETL..STG_OBJECTS", conn);
        rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            Console.WriteLine(rdr[0]);
            // Create Folder
            //string objectName = rdr[0].ToString();
            //string newPath = System.IO.Path.Combine(activeDir, objectName);
            //System.IO.Directory.CreateDirectory(newPath);
        }
    }
    finally
    {
        // close the reader
        if (rdr != null)
        {
            rdr.Close();
        }

        // close the connection
        if (conn != null)
        {
            conn.Close();
        }
    }
}

在新选项卡中打开以查看 ODBC 的注册表设置并放大:

enter image description here

===========================

2012 年 7 月 13 日下午 4:56 更新:

显然,驱动程序名称位于大括号内。当我以编程方式获取驱动程序列表时,我看不到驱动程序。如何在 Windows 用户界面中添加到此列表?不过,我确实在控制面板 > 管理工具 > ODBC 驱动程序下看到了已安装的 Netezza 驱动程序。

这是一些验证我所解释内容的代码:

public static void GetSystemDriverList()
{
    //List<string> names = new List<string>();
    // get system dsn's
    Microsoft.Win32.RegistryKey reg = (Microsoft.Win32.Registry.LocalMachine).OpenSubKey("Software");
    if (reg != null)
    {
        reg = reg.OpenSubKey("ODBC");
        if (reg != null)
        {
            reg = reg.OpenSubKey("ODBCINST.INI");
            if (reg != null)
            {

                reg = reg.OpenSubKey("ODBC Drivers");
                if (reg != null)
                {
                    // Get all DSN entries defined in DSN_LOC_IN_REGISTRY.
                    foreach (string sName in reg.GetValueNames())
                    {
                        Console.WriteLine(sName);
                        //names.Add(sName);
                    }
                }
                try
                {
                    reg.Close();
                }
                catch { /* ignore this exception if we couldn't close */ }
            }
        }
    }

    Console.ReadLine();
}    

enter image description here

以下是当我使用用户 ODBC 连接时,我从 Windows 7 框中的 Microsoft Access 2007 收到的连接错误。系统一不可见。

错误:“ODBC - 调用失败。[Microsoft][ODBC 驱动程序管理器] 指定的 DSN 包含驱动程序和应用程序之间的体系结构不匹配 (#0)”

enter image description here


Microsoft 从未重命名其“system32”文件夹,因此 system32 确实拥有所有 64 位驱动程序。 SysWow64 文件夹包含所有 32 位驱动程序。默认情况下,在 Visual Studio 2010 中创建的 .NET 项目的“目标平台”为 x86。我刚刚将其更改为 x64,并且我的连接可以使我的 64 位 NetezzaSQL 驱动程序适用于 .NET。

只需意识到,您可以通过运行 C:\Windows\system32\ 文件夹中的“odbcad32.exe”文件(这是该对话框的 64 位版本)来启动“控制面板”>“管理工具”下的 ODBC(数据源)对话框。构建 64 位驱动程序),或在 C:\Windows\SysWow64\ 文件夹中(这是构建 32 位驱动程序的对话框的 32 位/x86 版本)。是的,文件夹是相反的,因为微软在这方面很奇怪。

此外,注册表中还构建了两个不同的文件夹。事实证明,上面的列表(在我的黑屏截图中)来自 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ 列表,因为这些是 32 位驱动程序。我安装的 dll“nzodbcsetup.exe”显然是作为 64 位驱动程序安装的。我不太确定如何在 64 位 Windows 上将其安装为 32 位驱动程序,因此我将 .NET 项目中的“目标平台”从默认的 x86 更改为 x64。还必须有一种方法将其安装为 32 位驱动程序,因为当我在 32 位 Windows XP 机器上安装此驱动程序时,该驱动程序运行良好。

奇怪的是Netezza的OLE驱动程序是分开的。它们有一个 32 位和一个 64 位 dll exe 文件(适用于版本 6.0.3)。 “nzoledbsetup.exe”(~82MB x86)和“nzoledbsetup64.exe”(~102MB x64)。但 ODBC 只有其中之一,显然两者兼而有之。我尝试在 SysWOW6432Node 中手动构建 32 位驱动程序(在运行 > regedit 下),并指向驱动程序文件和安装文件(在 system32 文件夹中,但出现错误。请评论 Windows 中是否有一种方法可以自动安装为32位,不是64位。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 ODBC 从 C# 读取 Netezza 数据库表在 Windows 7 中不起作用 的相关文章

  • 该组件没有由 uri 标识的资源

    我想创建一个通用数据网格以在我的所有视图 用户控件上使用 这是我的结构 Class Library called Core Class called ViewBase public class ViewBase UserControl pu
  • EasyNetQ 模型关闭

    我使用 EasyNetQ 实现了一个简单的 RabbitMQ 客户端 连接后 我收到一条通知 队列模型关闭 这是我的代码 var bus RabbitHutch CreateBus String Format host 0 hostName
  • Sitecore - 隐藏功能区中的按钮

    我为特定内容项创建了上下文功能区 我有两个按钮 可以将项目 升级 或 降级 到某一类别 该部分只能有一个 是否可以根据某种隐藏代码中的内容状态隐藏其中一个按钮 我了解如何链接到 Click 事件 但我想知道是否有某种加载事件可供自定义功能区
  • 如何在 VS2017/2015 中打开 .xproj 文件

    我有一个带有扩展名的 NET core 项目 xproj 当我在VS 2017中打开项目时 项目文件 xproj migrated to csproj 如何打开 xproj 文件 Visual Studio 2017 2015 我需要安装任
  • 如何获取Winforms窗体标题栏高度的大小?

    因此 如果它是工具窗口或可最小化的表单 我希望能够以编程方式获取其高度 这可能吗 如果是这样怎么办 您可以使用以下方法确定工具窗口和普通表单的标题栏高度 Rectangle screenRectangle this RectangleToS
  • 调整图像的亮度、对比度和伽玛值

    在 NET 中调整图像的亮度 对比度和伽玛值的简单方法是什么 c and gdi have a simple way to control the colors that are drawn It s basically a ColorMa
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • “你好世界!!”在 .NET 4 中生成 3500 个页面错误

    我正在运行 Windows Vista 和 Visual Studio 2010 使用 NET 4 2 GB RAM 和大约 800 MB 可用空间 我创建了一个 Windows 窗体应用程序 但没有向其中添加任何代码 只需在发布模式下编译
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在C#背后的代码中动态创建数据模板并绑定TreeView分层数据

    我有一个场景 其中树视图动态更改其数据模板和数据绑定定义 我在 XAML 中创建了一个树视图 如下所示
  • 如何拦截 Boo 中的方法调用?

    红宝石有method missing Python有getattr Boo 是否提供了一些可以用来拦截方法调用的东西 是的 布有IQuackFu http docs codehaus org pages viewpage action pa
  • 在 SQL 2005+ 中,CLR 存储过程是否优于 TSQL 存储过程?

    我目前的观点是否定的 更喜欢 Transact SQL 存储过程 因为它们是重量更轻且 可能 性能更高的选项 而 CLR 过程允许开发人员进行各种恶作剧 然而最近我需要调试一些写得非常糟糕的 TSQL 存储过程 像往常一样 我发现许多问题是
  • 如何计算最低系统要求?

    对于我用 Visual C 编写的应用程序 Testing 不 真的 这就是全部
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 确定 PHP 中缩短的 URL 的最终目的地?

    我怎样才能在 PHP 中做到这一点 例如 bit ly f00b4r gt http www google com search q cute kittens 在Java中 解决方案是这样的 您应该发出 HEAD 请求 使用 HttpWeb
  • 第二个重写规则在 htaccess 中不起作用并显示 404 未找到页面

    嗨 我有这样的链接 www example com a letter a 1 html www example com b letter b 1 html a字母和b字母文件夹下还有3个文件 我删除了a letter包含以下 htacces
  • C# - 转换 8 位或 16 位灰度原始像素数据

    我需要能够将 8 位或 16 位灰度像素数据转换为 NET 框架可以支持的文件格式 我拥有的可用数据是宽度 高度 方向 左下角 和像素格式 即 4096 级灰度 12 位分辨率 每个像素封装为 2 个字节 例如每个像素的范围是 0 到 40
  • HTML 输入忽略 flex-basis CSS 属性 [重复]

    这个问题在这里已经有答案了 不知何故 输入无法正确感知弹性基础 这是一个最简单的示例 说明输入如何不服从并跨越其父块之外 请参阅jsfiddle div div
  • 如何覆盖!重要? [复制]

    这个问题在这里已经有答案了 我编写了一些 html 并将一些 css 样式注入到第三方网站中 但 他们的风格与我的风格相混淆由于一些 important声明 我不想这样 也不想在我的风格中使用 important 我可以做什么来防止这种情况
  • 无法备份 docker 卷

    我正在遵循官方 docker 指南here备份 docker 卷 我也知道这个问题但是我仍然遇到错误 运行以下命令 docker run rm volumes from dbstore v pwd backup ny db 1 tar cv
  • 无法读取 aws 设备场中的属性文件

    我的 Appium JUnit 测试在本地工作得很好 但在 aws 上找不到属性文件 我的测试放在下面src test java和测试中使用的属性文件src test resources locale 包含依赖项内容的 Zip app 0
  • 如何使用 Windows PowerShell 从 MariaDB 转储文件导入数据 [重复]

    这个问题在这里已经有答案了 我尝试使用以下命令在 Windows Powershell 中导入 dumpfile sql mysql u root p database database lt Backup sql 但我收到以下错误 At
  • 在 CodeBuild maven 作业中使用适当的 ECS 凭证

    我尝试在 mvn 命令中使用 CodeBuild 服务角色 但它似乎没有获取适当的 IAM 权限 我在用s3 wagon 私人插件它似乎使用了最新版本DefaultAWSCredentialsProviderChain包括EC2Contai
  • 如何在没有 Windows 窗体的情况下接收即插即用设备通知

    我正在尝试编写一个类库 它可以捕获 Windows 消息 以便在设备已连接或删除时通知我 通常 在 Windows 窗体应用程序中 我只会重写 WndProc 方法 但在本例中没有 WndProc 方法 还有其他方法可以获取消息吗 你需要一
  • 为什么 MSVC 编译器将模板实例化二进制文件放入程序集中?

    我在 MSVC 编译器中遇到了一些奇怪的事情 它将函数模板定义放在汇编中 而优化消除了对它们的需要 看起来 Clang 和 GCC 完全成功地删除了函数定义 但 MSVC 却没有 可以修复吗 主要 cpp include
  • 如何在Excel中创建下拉列表? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我在 Excel 中有一个值列 如下所示 如何将其转换为下拉列表 例如列中的每一行都会有该下拉列表 其中有狗 猫 鱼 蝙蝠 蟾蜍 都在里面 thanks 您可以通过 数据 功能区中的
  • phpMailer电子邮件不发送gmail smtp

    我无法使用 gmail SMTP 发送电子邮件 这是我收到的信息print r物体 我对 phpMailer 属性的用户名和密码使用相同的 gmail 凭据 因此我确信我的凭据是正确的 但不知道为什么它不发送 谢谢 感谢任何支持 EMail
  • 在单个页面上使用多个(猫头鹰)轮播

    我一直在谷歌上寻找在单个页面上使用多个轮播的方法 但没有找到任何适合我的解决方案 你们中的任何人都可以帮忙吗 这是代码 HTML div div class container div class row div class span12
  • 包管理器控制台仅在特定 VS 项目中启用迁移 CommandNotFoundException

    我尝试在新项目中运行命令 Enable Migrations 并收到消息 PM gt Enable Migrations The term Enable Migrations is not recognized as the name of
  • 在地址栏中显示 iFrame url

    是否可以在url地址栏中包含iframe内容的url 例如 我有一个域sub test com它有一个带有 src 的 iframerealpage com 逻辑上浏览页面不会改变地址栏中的任何内容 因为我们在其他域的 iframe 中打开
  • R oauth 身份验证期间 twitteR PIN 码出现在哪里?

    我正在尝试使用 twitteR 包 因为我已经阅读了 Jeffrey Stanton 关于数据科学的免费电子书中的 Twitter 章节 我使用此代码来注册我的凭据 requestURL lt https api twitter com o
  • 第一次使用Hadoop,MapReduce Job不运行Reduce Phase

    我编写了一个简单的映射缩减作业 该作业将从 DFS 读取数据并对其运行简单的算法 当尝试调试它时 我决定简单地让映射器输出一组键和值 而减速器输出一组完全不同的键和值 我在单节点 Hadoop 20 2 集群上运行此作业 当作业完成时 输出
  • 用于选择 x、y 和颜色(绘图)的下拉菜单

    我正在尝试创建一个带有可选 x y 和颜色变量的绘图 部分基于上一个问题 x 和 y 变量选择似乎有效 但是当选择新的 x 和 y 变量时 点颜色会丢失 此外 我尝试使用类似的策略来选择点颜色 但不幸的是这似乎不起作用 另一种选择是在前面链
  • 通过 ODBC 从 C# 读取 Netezza 数据库表在 Windows 7 中不起作用

    为什么 NET 无法通过已安装的 NetezzaSQL 驱动程序连接到我的 Netezza 盒子 64 位应用程序也无法通过此 ODBC 连接进行连接 为什么会这样呢 我已在控制面板中构建了用户和系统 Netezza ODBC 连接 当我单