SQLConnect терпит неудачу в обслуживании, но не когда выполняется из Visual Studio - PullRequest
0 голосов
/ 07 октября 2018

У меня есть приложение, которое я пытаюсь сделать для работы на Windows 10, подключенное к базе данных MSSQL 2008 R2, которое я запускаю на виртуальной машине.

Все работает, если я запускаю его из Visual Studio или извне, но если я пытаюсь запустить его как службу из «Службы», то SQLConnect возвращает -1, что является SQL_NULL_DATA.

Погуглить проблему не помогло вообще.Я не прочь запустить его как не службу, но она спроектирована как служба и просто закрывается, когда GetMessageA из winapi возвращает 0, что и происходит.

  SQLRETURN ret;

  ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &m_henv);
  if (TSQL_FAIL(ret))
    return FALSE;

  ret = SQLSetEnvAttr(m_henv, SQL_ATTR_ODBC_VERSION, (void*) SQL_OV_ODBC3, 0);
  if (TSQL_FAIL(ret)) {
    Close();
    return FALSE;
  }

  ret = SQLAllocHandle(SQL_HANDLE_DBC, m_henv, &m_hdbc);
  if (TSQL_FAIL(ret)) {
    Close();
    return FALSE;
  }

  ret = SQLConnect(m_hdbc,
    (SQLCHAR*) dsn, SQL_NTS,
    (SQLCHAR*) user, SQL_NTS,
    (SQLCHAR*) passwd, SQL_NTS);
  // here it fails, returning -1
  if (TSQL_FAIL(ret)) {
    Close();
    return FALSE;
  }

У меня настроен DNS в 32бит odbc для указания на базу данных внутри виртуальной машины.

В чем может быть проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...