2014-02-19 39 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上爲此檢查創建一個登錄帳戶。爲該帳戶提供必要的最低權限,然後使用安裝程序部署帳戶詳細信息,並讓可執行文件加載它們。您需要使用用戶名和密碼更新連接字符串。