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

Откуда:
Сообщений: 282
Добрый день уважаемые коллеги

Подскажите пожалуйста , как решить такую задачу.

Допустим есть таблица

Она состоит из 5 столбцов

SELECT
nname 'Сфера деятельности',
name 'Отрасль',
legal_name 'Юридическое лицо',
front_office 'Фронт-офис',
sale_channel 'Канал продаж'
FROM table1

выдает различные данные. Канал продаж состоит из PRO, DRO, DDR, DFD, DED.

и есть вторая таблица где

SELECT
[account],
[ФИО],
[Должность],
[Канал],
[ЦФО],
[Элемент доступа],
[Уровень доступа]
FROM table2
WHERE and account = CURRENT_USER

Как написать условие, чтобы например аккаунт ADMIN видел канал продаж PRO. аккаунт ADM видел канал продаж DRO, DDR. А текущий пользователь видел DFD, DED.

Если нет возможности помочь, прошу дайте ссылки на литературу. Спасибо, с уважением.
20 май 13, 17:42    [14322816]     Ответить | Цитировать Сообщить модератору
 Re: Права доступа к данным в таблице.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
wiktor591
ссылки на литературу

Google -> "sql server row level security"
Вроде бы вот это вам должно подойти: http://www.mssqltips.com/sqlservertip/2186/how-to-setup-row-level-security-for-sql-server/
20 май 13, 17:59    [14322913]     Ответить | Цитировать Сообщить модератору
 Re: Права доступа к данным в таблице.  [new]
invm
Member

Откуда: Москва
Сообщений: 9826
Например так:
create table dbo.DefaultPermittedSaleChannels
(
 sale_channel char(3) primary key
);
go

create table dbo.NamedPermittedSaleChannels
(
 sale_channel char(3) not null,
 Account sysname not null references dbo.Accounts (Account),
 primary key (sale_channel, Account)
);
go

create view dbo.vPermittedSaleChannels
as
select
 sale_channel
from
 dbo.DefaultPermittedSaleChannels

union

select
 sale_channel
from
 dbo.NamedPermittedSaleChannels
where
 Account = current_user;
go

Сам запрос:
SELECT
nname 'Сфера деятельности',
name 'Отрасль',
legal_name 'Юридическое лицо',
front_office 'Фронт-офис',
sale_channel 'Канал продаж'
FROM table1 t1
where
 exists(select * from dbo.vPermittedSaleChannels where sale_channel = t1.sale_channel);
20 май 13, 18:03    [14322927]     Ответить | Цитировать Сообщить модератору
 Re: Права доступа к данным в таблице.  [new]
wiktor591
Member

Откуда:
Сообщений: 282
Спасибо, за ответ.

с уважением! коллеги.
21 май 13, 10:17    [14324758]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить