Результаты запроса SQL Server 2005 отличаются для разных учетных записей AD, использующих один и тот же логин SQL
Есть две учетные записи AD, admin1 и admin2. Оба подключаются к одинаковым компьютерам, оба открывают SQL Server Management Studio и входят в систему как один и тот же пользователь SQL на одном и том же сервере SQL (с использованием проверки подлинности SQL Server, НЕ используя встроенную защиту), и оба запускают одинаковый запрос: "SELECT * FROM View1". Тем не менее, admin1 получает много результатов (правильный набор результатов), в то время как admin2 получает пустой набор результатов. Это происходит на каждом компьютере в домене, независимо от версии Windows, проводного / беспроводного соединения и т. Д.
Почему это происходит? Разве SSMS не должен быть независимым от учетной записи Windows при использовании аутентификации SQL Server? Любая помощь будет оценена.
2 ответа
У меня возникла проблема с Microsoft Dynamics CRM, а не с самим SQL Server. Я использовал фильтрованные представления, которые возвращают нулевые результаты любому пользователю, не использующему проверку подлинности Windows. Я не уверен, как я получил результаты, которые я упомянул выше, но пытаясь снова в другой день, я так и не смог получить результаты с аутентификацией SQL, независимо от того, какую учетную запись Windows я использовал. Кроме того, я всегда мог получить результаты при входе в систему с аутентификацией Windows.
Вы можете использовать необработанные таблицы или взломать базовую структуру представления, вставив вручную записи, в которых имя домена указывается в качестве идентификатора входа для аутентификации SQL Server, и предоставив не CRMReaderRole, а стандартную роль DQL. Взгляните на замечательную функцию fn_FindUserGuid, которая ищет SystemGuid, к которому присоединяются все представления. Просто сфабриковать эту пластинку и несколько других и ваше добро. Если вы перепроектируете их систему, вы увидите, что есть способ обмануть систему.
По сути, это просто SystemUserBase, SystemUserPrincipals, UserSettingsBase.
Очевидно, что это не рекомендуется Microsoft. ¯(°_°)/¯ Но когда вам нужно соединение ODBC на общем сервере, который предоставляет общие отчеты многим пользователям за пределами замечательного мира CRM, вам нужно это сделать. Вы НЕ найдете другого пути, кроме репликации данных в другую базу данных, но, конечно, имейте в виду, что динамика удивительно динамична и часто меняется. Удачи в синхронизации сред.
По моему мнению, эта система, очевидно, была разработана таким образом, чтобы склонить пользователей к продуктам Microsoft. Не говорю, что я бы не поступил так же, если бы владел Microsoft. Когда ты вынужден взломать, ты вынужден взломать.