Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 VC++ OLEDB -> SQL Server: что за чудеса?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Не пойму как такое бывает:

есть два домена, трастед отношения.
Пускаю приложение VC++ OLEDB коннект к SQL Server.

Для проверки беру имя текущего юзера


   TCHAR username[UNLEN + 1];
   DWORD size = UNLEN + 1;

   ::GetUserName((TCHAR*)username, &size); //<------ юзер "Вася" из домена1

   if (FAILED(hr = pContext->m_OleDBConnection.Open(szOleDBProvider, dbinit,2))) // здесь трастед коннект



после этого коннекта в профайлере SQL Server вижу все вызовы от имени юзера домен2\петя

Понимаю, что фигня какая-то но проверил так и есть... как такое вообще может быть принципиально?

Перестартовал компьютер, запустил приложение - та же фигня.

Куда рыть? что проверить?

зы. пустил приложение на шарпе с трастед - все корректно, мой юзер виден.
неделю назад ставил эксперименты с еще одним приложением на шарпе, которое переключает контекст на этого юзера петю, выполняет запрос и возвращает контекст. Останавливал его в отладчике, оно могло упасть.
Но не могло же залипнуть до такой степени, чтобы и после рестарта вылезал фантом.

Модератор: Тема перенесена из форума "C++".


Сообщение было отредактировано: 8 май 14, 12:29
8 май 14, 12:02    [15990212]     Ответить | Цитировать Сообщить модератору
 Re: VC++ OLEDB -> SQL Server: что за чудеса?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
сдается мне вообще-то здесь вопрос скорее по с++ и системе, ну да ладно...
8 май 14, 12:35    [15990535]     Ответить | Цитировать Сообщить модератору
 Re: VC++ OLEDB -> SQL Server: что за чудеса?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Хм.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724432(v=vs.85).aspx
If the current thread is impersonating another client, the GetUserName function returns the user name of the client that the thread is impersonating.


И да.
"вижу все вызовы от имени юзера домен2\петя" - это в каком поле? Login или NtUserName?

Сообщение было отредактировано: 8 май 14, 12:41
8 май 14, 12:39    [15990564]     Ответить | Цитировать Сообщить модератору
 Re: VC++ OLEDB -> SQL Server: что за чудеса?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гавриленко Сергей Алексеевич
Хм.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724432(v=vs.85).aspx
If the current thread is impersonating another client, the GetUserName function returns the user name of the client that the thread is impersonating.


И да.
"вижу все вызовы от имени юзера домен2\петя" - это в каком поле? Login или NtUserName?


в обоих, так:

петя
домен2\петя


Но в этом приложении я не делаю никакой имперсонации.
Оно же запущенное на другом компьютере коннектится корректно к скл серверу.
8 май 14, 13:17    [15990924]     Ответить | Цитировать Сообщить модератору
 Re: VC++ OLEDB -> SQL Server: что за чудеса?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
домен1 и домен2 - это прямо домены, или так, машины в рабочей группе?
8 май 14, 13:26    [15991054]     Ответить | Цитировать Сообщить модератору
 Re: VC++ OLEDB -> SQL Server: что за чудеса?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гавриленко Сергей Алексеевич
домен1 и домен2 - это прямо домены, или так, машины в рабочей группе?


это реальные домены.

В домен2 находятся sql server с базами, в домен1 девелоперы.
И у них по идее даже не равноправные отношения, т.е. юзеры из домен1 имеют больше прав в домен2, но не наоборот.

Я тот код прикрутил джля взятия имени юзера для проверки непосредственно перед коннектом, как можно в с++ еще проверить какой текущий юзер? тто есть ктобудет сейчас коннектиться?
8 май 14, 13:39    [15991170]     Ответить | Цитировать Сообщить модератору
 Re: VC++ OLEDB -> SQL Server: что за чудеса?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
1. пустил приложение на шарпе, трастед = все корректно
2. пустил другое приложение с++, работающее через ADO - та же проблема, другой юзер "петя"
8 май 14, 19:31    [15993080]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить