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

Откуда:
Сообщений: 44
Зарание благадорю всех кто поможет розвязать мне ету неувязочку. Поиск работает через процедуру которая выполняет запрос из несколких таблиц в котором есть даные в каких пользователь не имеет права редактировать. Процедура считывает даные из таблицы которая хранит даные по нужному поиску и при выводе даных мне хотелось чтобы ползьователь мог редактировать даные которые ему разрешены. Подскажыте пожалуста можно ли так зделать и есть ли рацыонально использовать такой поиск.

Пояснение: пользователю разрешено редактировать А В из Table1 и нельзя редактировать даные из Таble2

Table1 Таble2 - таблица даных
| A | B | C | | B | D | E |

TablePoisk
| A | B | D | E|

create proc poshuk
with encryption
as
begin
begin tran
declare @A varchar(10), @B varchar(25), @D(25), @E(25)
select @A=(select A from TablePoisk)+'%' select @A=ISNULL(@A,'%')
select @B=(select B from TablePoisk)+'%' select @B=ISNULL(@B,'%')
select @D=(select D from TablePoisk)+'%' select @D=ISNULL(@D,'%')
select @E=(select E from TablePoisk)+'%'select @E=ISNULL(@E,'%')
select T1.A, T1.B, T2.D, T2.E
from Table1 T1, Table T2
where T1.B=T2.B and T1.A LIKE @A and T1.B LIKE @B
and T2.D LIKE @В and T2.E LIKE @E

delete TablePoisk
if @@ERROR!=0
begin
rollback TRAN
RETURN -999
end
commit tran
end
2 мар 05, 12:05    [1355464]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
StalkerS
Member

Откуда: Nowhere
Сообщений: 1343
для разграничения доступа существуют представления, их и надо использовать
2 мар 05, 12:14    [1355517]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
.:YaIk:.
Member

Откуда:
Сообщений: 44
Тоисть вы предлагаете результат процедуры выводить в представление
2 мар 05, 12:18    [1355540]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
Glory
Member

Откуда:
Сообщений: 104760
Пояснение: пользователю разрешено редактировать А В из Table1 и нельзя редактировать даные из Таble2
Т.е. вы хотите чтобы в возвращаемом клиенту наборе он мог редактировть только определенные столбцы ?
2 мар 05, 12:18    [1355542]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
.:YaIk:.
Member

Откуда:
Сообщений: 44
Да
2 мар 05, 12:22    [1355556]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
Glory
Member

Откуда:
Сообщений: 104760
После того как набор передан клиенту сервер уже ничего не может запретить клиенту делать с этим набором.
Запрещайте радактирование столбцов набора на клиенте
2 мар 05, 12:28    [1355586]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
.:YaIk:.
Member

Откуда:
Сообщений: 44
Если поиск организован таким видом то все нормально работает

create proc poshuk
with encryption
as
begin
begin tran
declare @A varchar(10), @B varchar(25), @D(25), @E(25)
select @A=(select A from TablePoisk)+'%' select @A=ISNULL(@A,'%')
select @B=(select B from TablePoisk)+'%' select @B=ISNULL(@B,'%')
select @D=(select D from TablePoisk)+'%' select @D=ISNULL(@D,'%')
select @E=(select E from TablePoisk)+'%'select @E=ISNULL(@E,'%')
select A, B
from Table1 T1
where B IN
( select B
from Table2
where B LIKE @B
)
and A LIKE @A

delete TablePoisk
if @@ERROR!=0
begin
rollback TRAN
RETURN -999
end
commit tran
end
2 мар 05, 12:36    [1355622]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
права на колонки не подходят?
2 мар 05, 12:38    [1355633]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
.:YaIk:.
Member

Откуда:
Сообщений: 44
StalkerS
для разграничения доступа существуют представления, их и надо использовать

В представление нелбзя передать результат запроса
2 мар 05, 12:38    [1355635]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
.:YaIk:.
Member

Откуда:
Сообщений: 44
iSestrin
права на колонки не подходят?

Непонял тоисть не подходят
2 мар 05, 12:41    [1355649]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
.:YaIk:.
Member

Откуда:
Сообщений: 44
Если в результате запроса нету строк которые для редактирования запрещены то работает. Glory а на сервере никак нельзя
2 мар 05, 12:45    [1355660]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
Glory
Member

Откуда:
Сообщений: 104760
Glory а на сервере никак нельзя
На сервере нет такого понятия - редактирование.
Есть команды SELECT/UPDATE.
Если вы хотите отклонить какие-то введенные пользователем данные то пишите триггера для таблиц.
Но запретить клиенту что-то там редактировать у себя в гриде сервер не может. Сервер лишь может послать клиента когда тот попробует занести отредактированные данные в таблицу
2 мар 05, 12:54    [1355714]     Ответить | Цитировать Сообщить модератору
 Re: Поиск в БД  [new]
StalkerS
Member

Откуда: Nowhere
Сообщений: 1343
.:YaIk:.

В представление нелбзя передать результат запроса


а на чем по-вашему основаны представления ? Переделайте ваш запрос, так, что-бы он представлял собой не набор операторов, а единый запрос и сделайте представление. Далее на этом представлении сделайте еще одно, которое будет разграничивать доступ для разных пользователей. Именно для этого view и предназначены, а то придумываете какие-то заморочки
2 мар 05, 13:44    [1356001]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить