DSN для подключения строки?

У нас есть веб-сайт ASP.NET, который использует базу данных, к которой мы хотим иметь возможность использовать строку подключения для доступа. Мы успешно настроили DSN для подключения к этой базе данных, но я не могу найти правильную магию для использования со строкой подключения.

Есть ли простой способ перевести значения из DSN в строку подключения? Я знаю, что из пользовательского интерфейса нет очевидного ответа на этот вопрос... каждый поставщик БД предоставляет свой пользовательский интерфейс для создания DSN в зависимости от своих требований. Однако я надеялся, что под пользовательским интерфейсом это может быть что-то вроде создания строки соединения за кулисами, и я мог бы посмотреть на это, чтобы увидеть, что я делаю неправильно. Есть надежда на это? Если да, какие-нибудь указатели о том, как получить информацию мне нужно?

(Я пошел на connectionstrings.com, чтобы убедиться, что моя строка подключения имеет правильный формат, но, похоже, ничего не работает... именно поэтому я пытаюсь использовать этот странный такт translate-from-dsn.)

РЕДАКТИРОВАТЬ: Что-то, что я, должно быть, не был ясен в том, что мы не хотим иметь запись DSN. Мы создали один и использовали его в настоящее время, но мы хотим иметь возможность избавиться от него и использовать строку подключения без DSN.

4 ответа

Решение

Если вы можете использовать OLEDB, то вы можете создать файл UDL. Просто создайте новый текстовый документ, test.udl и двойной щелчок. Заполните диалоговое окно, затем снова откройте его с помощью Блокнота. Вуаля - это ваша строка подключения.

ODBC немного сложнее - вы можете создать файл DSN из ODBC Administrator или покопаться в реестре в HKLM\Software\ODBC\ODBC.INI\<DSN Name> для системы DSN. В итоге вы получите несколько пар имя / значение. Вы должны быть в состоянии перевести их в строку подключения. \\Driver будет отображать фактическую DLL, так что вам нужно получить имя поставщика от HKLM\Software\ODBC\ODBC Data Sources\\<DSN Name>,

Если вы можете использовать провайдера OLEDB для ODBC, то вы можете использовать трюк UDL и заставить его также построить строку соединения из DSN файла ODBC. Строка подключения ODBC будет в расширенных свойствах UDL.

Если вы создали DSN, то DSN - это ConnectionString!

Вы можете просто использовать DSN=<YourDSNName> и передать его объекту OdbcConnection.

Например, используя C#:

string dsnName = "DSN=MyDSN";
using (OdbcConnection conn = new OdbcConnection(dsnName))
{
  conn.Open();
}

Кроме того, вы можете использовать OdbcConnectionStringBuilder класс и установить его DSN имущество.

Чтобы расширить ответ Марка Брэкетта о реестре: для 32-разрядного ODBC в 64-разрядной Windows путь реестра - HKLM\Software\Wow6432Node\ODBC\ODBC.INI\

В моем случае было достаточно:

  • Удалить заголовок
  • Замените все новые строки точкой с запятой
  • Используйте фигурные скобки как разделитель групп

Вот мой DSN-файл, созданный администратором источника данных ODBC (3-я вкладка - DSN-файл)

[ODBC]
DRIVER=MySQL ODBC 5.3 ANSI Driver
UID=MyUserName
PORT=3306
DATABASE=mydatabasename
SERVER=localhost

И вот как выглядела моя строка подключения:

DRIVER={MySQL ODBC 5.3 ANSI Driver};UID=MyUserName;PORT=3306;DATABASE=mydatabasename;SERVER=localhost
Другие вопросы по тегам