OLAP.ru OLAP, data mining, analysis, данные, СУБД, генераторы отчетов, проектирование, принятие решений, оптимизация, хранилише, извлечение, поиск, Crystal, Business Objects, Cognos, SAS...
Полный список »
Business intelligence - effective data mining & analysis
Вход Регистрация Новости сайта Карта сайта/поиск RSS
 
OLAP и Business Intelligence
SUBSCRIBE.RU
 
 

Функция IS_MEMBER

Олонцев Сергей

Очень часто требуется написать хранимую процедуру или функцию, которая будет выдавать разные результаты для разных групп пользователей. Например, директор предприятия хочет видеть информацию по всем сотрудникам его фирмы, а начальники отделов только по своим сотрудникам. Реализовать это можно, например, включив пользователей в разные группы AD, а в запросе проверять вхождение и в зависимости от результата выдавать разные данные. В SQL Server существует функция IS_MEMBER способная осуществлять вышеуказанную проверку, причем она работает даже с вложенными группами. Функция принимает единственный параметр - название AD группы и возвращает 1, если текущий пользователь входит в указанную группу; 0 - если не входит и NULL, если такой группы в AD не найдено. Естественно, пользователи должны использовать Windows аутентификацию, чтобы воспользоваться этим функционалом. И привожу пример, как может выглядеть в хранимой процедуре вывод результатов в зависимости от вхождения в группу.

IF IS_MEMBER('TEST\CEO') SELECT [FirstName], [LastName], [Department], [Salary] FROM [HumanResources].[Employee] ELSE IF IS_MEMBER('TEST\DepartmentHead') SELECT [FirstName], [LastName], [Department], [Salary] FROM [HumanResources].[Employee] WHERE [Department] = (SELECT [Department] FROM [HumanResources].[Employee] WHERE [LoginName] = SUSER_SNAME()) ELSE SELECT [FirstName], [LastName], [Department], [Salary] FROM [HumanResources].[Employee] WHERE [LoginName] = SUSER_SNAME()

Ссылки по теме

Рекомендовать Обсудить материал Написать редактору Распечатать   Дата публикации: 24.04.2014  
Хостинг: SiliconTaiga    Поддержка: Interface Ltd. Обратиться по техническим вопросам     
Rambler's Top100 TopList