2014-02-19 42 views
0

我有一个C++ dll,它具有连接到远程SQL Server的代码。 我为此使用SQLDriverConnect API。当我从测试应用程序调用它时,它工作得很好。以C++编程方式连接到远程SQL Server

但是,当我将它作为wix安装程序的一部分进行部署时,连接失败。在进一步调试时,我发现调用dll函数的exe在系统上下文中运行,并且它尝试使用用户NT AUTHORITY \ ANONYMOUS LOGON进行连接,并给出错误[Microsoft] [ODBC SQL Server Driver] [SQL Server]登录失败用于NT AUTHORITY \ ANONYMOUS LOGON。

是否有可能使SQLDriverConnect在这种情况下选择当前的工作站用户而不是“匿名”用户?

Sample code below. 
// Connect to data source 
       retcode = SQLDriverConnect(
        hdbc, 
        0, 
        L"DRIVER={SQL Server};SERVER=TestMachine123;Trusted_connection=true;", 
        SQL_NTS, 
        OutConnStr, 
        255, 
        &OutConnStrLen, 
        SQL_DRIVER_NOPROMPT); 

感谢 苏尼尔

回答

0

这听起来像这个可执行文件是Windows服务。您可以尝试在Service Control Manager中设置服务帐户。或者您可以在SQL Server上为此检查创建一个登录帐户。为该帐户提供必要的最低权限,然后使用安装程序部署帐户详细信息,并让可执行文件加载它们。您需要使用用户名和密码更新连接字符串。