2014-02-19 2 views
0

У меня есть dll C++, у которого есть код для подключения к удаленному SQL Server. Для этого я использую API SQLDriverConnect. Он отлично работает, когда я вызываю его из тестового приложения.Подключение к удаленному SQL Server программно в C++

Однако, когда я развертываю его как часть установщика wix, сбой невозможен. При дальнейшей отладке я обнаружил, что exe, вызывающий функцию dll, запущен в системном контексте и пытается подключиться с использованием пользователя NT AUTHORITY \ ANONYMOUS LOGON и дает ошибку [Microsoft] [Ошибка SQL Server 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

Это звучит как этот исполняемый файл является службы Windows. Вы можете попробовать установить учетную запись службы в диспетчере управления службами. Или вы можете создать учетную запись для этой проверки на SQL Server. Дайте учетной записи необходимые минимальные разрешения, затем разверните данные учетной записи с помощью установщика и загрузите их исполняемый файл. Вам нужно будет обновить строку подключения с помощью имени пользователя и пароля.

Смежные вопросы