Я пытаюсь получить доступ к серверу Netezza из C# .net 4.5 VS2013 на победу 7.не может получить доступ к серверу IBM Netezza из C# VS2013, но работал хорошо в IBM Aginity верстаке
using System.Data.Odbc;
string connstring = "Driver={NetezzaSQL};Server=MyServerIP;Database=MyDBName;Uid=MyID;Pwd=myPWD;ReadOnly=true;";
using (OdbcConnection conn = new OdbcConnection(connstring))
{
conn.ConnectionTimeout = 120;
conn.Open(); // error 08001
Console.WriteLine("OK");
}
An unhandled exception of type 'System.Data.Odbc.OdbcException' occurred in System.Data.dll
Additional information: ERROR [08001] Client unable to establish connection
От https://msdn.microsoft.com/en-us/library/ms715433%28v=vs.85%29.aspx, я вижу эту ошибку 08001 является
The driver was unable to establish a connection with the data source.
С панели управления -> адм инструменты -> Источники данных (ODBC), я проверил, что я установил NetezzaSQL 7.01.00.3553
это должен быть 64 бита, потому что нет драйвера NetezzaSQL в источниках данных (ODBC - 32 бит).
Мой код C# построен для любого процессора. Хотя я изменил сборку на 64 бита, я получил ту же ошибку. Кажется, что код C# не может найти драйвер?
Я могу получить доступ к тому же серверу и БД из верстака IBM Netezza Aginity с тем же идентификатором и паролем без каких-либо проблем.
Любые идеи?
UPDATE
я могу получить доступ к одному серверу и базе данных с таким же Uid и PWD от сервера исследователя в VS2013. Но почему я не могу получить к нему доступ из кода C#? В проводнике сервера я щелкнул правой кнопкой мыши подключенный сервер и в окне «Изменить соединение» я скопировал «использовать строку подключения» в свой код на C#. Но это не сработает!
NEW UPDATE Кроме того, я использовал ту же строку, вызвав пакет «pypyodbc» в Python 3.4.1 (32 и 64 бит) на той же машине, он работал хорошо.
Это означает, что в библиотеке nsqlodbc.dll 32 и 64 бит нет проблем.
Я думаю, проблема в C# или VS2013.
Кроме того, в VS2013-сервере Explorer может принимать только 32 бит nsqlodbc.dll и устанавливать соединение. Например, если я установил только 64 бит nsqlodbc.dll, серверный проводник также не сможет подключить сервер Netezza.
Хотя копирование строки соединения обязательно должна работать, возможно, попробовать класс 'OdbcConnectionStringBuilder' и добавить ключи, что путь? –
Кроме того, большинство примеров строк подключения, которые я видел, используют 'servername', а не' server'. Я знаю, что вы скопировали строку, но стоит дважды проверить, что это имя используемого свойства. –
@JeremyFortune, я пробовал OdbcConnectionStringBuilder, я получил ту же ошибку. Также см. Новое обновление. – Lily