以编程方式连接到远程 SQL Server C++

Connecting to a remote SQL Server programatically in C++

本文关键字:SQL Server C++ 编程 方式 连接      更新时间:2023-10-16

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

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

在这种情况下,是否可以让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 );

谢谢苏尼尔

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