为什么不能.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注册表设置和放大:
============================
7/13/2012下午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();
}
这里是连接错误,我从Microsoft Access 2007年从Windows 7箱送,当我使用的用户ODBC连接。 该系统中的一个是不可见的。
错误:“ODBC - 调用失败[微软] [ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的结构不匹配(#0)”