SQLConnect在服务中失败,但在从Visual Studio中执行时不会失败

时间:2018-10-07 20:50:30

标签: c++ sql-server odbc

我有一个要在Windows 10上运行的应用程序,该应用程序连接到运行虚拟机的数据库MSSQL 2008 R2。

如果我从Visual Studio内部或外部运行所有内容,则一切正常,但是如果我尝试从“服务”中将其作为服务启动,则SQLConnect返回-1,即SQL_NULL_DATA。

谷歌搜索问题根本没有帮助。我不介意将其作为非服务运行,但它被设计为服务,并且仅当winapi的GetMessageA返回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;
  }

我在32位odbc中配置了DNS,以指向虚拟机内部的数据库。

可能是什么问题?

0 个答案:

没有答案