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