インストールされている {NetezzaSQL} ドライバーを介して .NET が 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 のレジストリ設定を表示し、ズームインします。
============================
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();
}
これは、ユーザー ODBC 接続を使用しているときに Windows 7 ボックスから Microsoft Access 2007 から取得した接続エラーです。システム 1 は表示されませんでした。
エラー: 「ODBC -- 呼び出しに失敗しました。[Microsoft][ODBC Driver Manager] 指定された DSN には、ドライバーとアプリケーション (#0) の間のアーキテクチャの不一致が含まれています」