爲什麼.NET不能通過安裝的{NetezzaSQL}驅動程序連接到我的Netezza框? 64位應用程序也無法通過此ODBC連接進行連接。爲什麼會這樣?我已經在控制面板中建立了用戶和系統Netezza ODBC連接,並且當我點擊「測試連接」時,兩者都可以正常工作?我看到註冊表中的值,但是當我遍歷註冊表驅動時,.NET看不到「NetezzaSQL」。根據Netezza的說法,他們沒有64位ODBC驅動程序。他們提供的驅動程序應該適用於32位和64位應用程序。這可能是Windows 7的權限問題嗎?從C#通過ODBC讀取Netezza數據庫表在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();
}
這裏是連接錯誤,我從微軟Access 2007年從Windows 7箱送,當我使用的用戶ODBC連接。該系統不可見。
錯誤: 「ODBC - 調用失敗[微軟] [ODBC驅動程序管理器]指定的DSN包含驅動程序和應用程序(#0)之間的架構不匹配。」
連接字符串看起來很好:http://www.connectionstrings.com/netezza – 2012-07-13 21:00:53
請確切的錯誤信息是什麼? – dash 2012-07-13 21:13:13
錯誤[IM002] [Microsoft] [ODBC Driver Manager]數據源名稱未找到並且未指定默認驅動程序 – MacGyver 2012-07-13 21:22:28