static bool DBBase::CreateDSN(const TCHAR* sDriver, const TCHAR * sCreateDsnString)
{
if (SQLConfigDataSource(NULL, ODBC_ADD_SYS_DSN, sDriver, sCreateDsnString))
{
return true;
}
else
{
WORD wErrNum = 1;
WORD cbRet;
DWORD pErr;
TCHAR szErrMsg[SQL_MAX_MESSAGE_LENGTH];
while (SQLInstallerError(wErrNum, &pErr, szErrMsg, SQL_MAX_MESSAGE_LENGTH, &cbRet) != SQL_NO_DATA)
{
_WRITELOGN(szErrMsg);
wErrNum++;
};
return false;
}
}
void test()
{
const TCHAR* sDriver = _T("SQL Server");
const TCHAR* sCreateDsnString = _T("DSN=myDSN\0Server=myIP\\MyDbInstance\0Database=myDB\0Trusted_Connection=no\0UID=sa\0PWD=sa\0\0");
DBBase::CreateDSN(sDriver, sCreateDsnString);
}
Когда Trusted_Connection=yes
и без идентификатора пользователя и пароля, это работает. Но когда с идентификатором пользователя и паролем происходит сбой с сообщениями об ошибках:
Неверные пары ключевое слово-значение. Ошибка драйвера ConfigDSN, ConfigDriver или
ConfigTranslator
Я попытался "идентификатор пользователя", "UID" и "Имя пользователя" для поля UID и "Пароль", "PWD" для поля пароля, все не удалось.