我有一个C ++ DLL,它有代码连接到远程SQL Server。 我为此目的使用SQLDriverConnect API。当我从测试应用程序调用它时,它工作得很好。
但是,当我将其作为wix安装程序的一部分进行部署时,连接失败。在进一步调试时,我发现调用dll函数的exe在系统上下文中运行,它尝试使用用户NT AUTHORITY \ ANONYMOUS LOGON连接并给出错误[Microsoft] [ODBC SQL Server驱动程序] [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 :(得分:0)
听起来这个可执行文件是Windows服务。您可以尝试在服务控制管理器中设置服务帐户。或者,您可以在SQL Server上为此检查创建登录帐户。为该帐户授予必要的最低权限,然后使用安装程序部署帐户详细信息并让可执行文件加载它们。您需要使用用户名和密码更新连接字符串。