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

Откуда: СПб
Сообщений: 1050
Доброго времени суток.
Имеется
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
Есть БД c именем Melaren, в ней таблица:
CREATE TABLE [dbo].[DT37](
	[IDDOC] [char](9) NOT NULL,
	[LINENO_] [smallint] NOT NULL,
	[SP155] [char](9) NOT NULL,
	[SP41] [datetime] NOT NULL,
	[SP42] [char](9) NOT NULL,
	[SP84] [char](9) NOT NULL,
	[SP47] [char](9) NOT NULL,
	[SP50] [char](9) NOT NULL,
	[SP53] [char](9) NOT NULL,
	[SP58] [char](9) NOT NULL,
	[SP61] [char](9) NOT NULL,
	[SP62] [char](9) NOT NULL,
	[SP65] [char](9) NOT NULL,
	[SP66] [numeric](5, 0) NOT NULL,
	[SP67] [numeric](13, 2) NOT NULL,
	[SP68] [numeric](13, 2) NOT NULL,
	[SP69] [numeric](13, 2) NOT NULL,
	[SP70] [numeric](13, 2) NOT NULL,
	[SP71] [numeric](13, 2) NOT NULL,
	[SP72] [numeric](13, 2) NOT NULL,
	[SP73] [numeric](13, 2) NOT NULL,
	[SP74] [numeric](13, 2) NOT NULL,
	[SP75] [numeric](13, 2) NOT NULL,
	[SP76] [numeric](13, 2) NOT NULL,
	[SP77] [numeric](13, 2) NOT NULL,
	[SP78] [numeric](13, 2) NOT NULL,
	[SP79] [numeric](13, 2) NOT NULL,
	[SP80] [numeric](13, 2) NOT NULL,
	[SP81] [numeric](13, 2) NOT NULL,
	[SP82] [numeric](13, 2) NOT NULL,
	[SP83] [numeric](13, 2) NOT NULL,
	[SP156] [numeric](1, 0) NOT NULL,
	[SP541] [numeric](4, 0) NOT NULL,
	[SP542] [numeric](9, 3) NOT NULL,
	[SP573] [numeric](13, 2) NOT NULL,
	[SP574] [numeric](13, 2) NOT NULL,
	[SP575] [numeric](13, 2) NOT NULL,
	[SP576] [numeric](13, 2) NOT NULL,
	[SP597] [numeric](15, 0) NOT NULL,
 CONSTRAINT [PK_DT37] PRIMARY KEY CLUSTERED 
(
	[IDDOC] ASC,
	[LINENO_] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

Пользователь OneSReader является членом роли db_reader в этой базе и право на update поля SP597 данной таблицы.
В другой БД, где OneSReader является владельцем под данным пользователем пытается выполниться хранимая процедура:
ALTER proc [dbo].[hpУстановитьСоответствиеДата](@Dt datetime,@CarID char(9),@DriverID char(9),@Pl int)
as
begin
	set nocount on
	update melaren.dbo.DT37 set SP597=@Pl
	from melaren.dbo.DT37 D
	inner join dbo.РаботаПроведенная S on D.IDDOC=S.IDDOC and D.LINENO_=S.LINENO_
	where 
		S.ДатаИсполнения=@Dt and
		S.НомерМашины=@CarID and
		S.ФИО_Водителя=@DriverID 
end

Выполнение приводит к ошибке:
Разрешение UPDATE запрещено для столбца "IDDOC" объекта "DT37", база данных "Melaren", схема "dbo".

Данную процедуру, не смотря на то, что в ней происходит update только поля SP597 можно выполнить, если предоставить разрешения еще и на update полей кластерного ключа (IDDOC,LINENO_).
В БОЛ не нашел информации, проясняющей проблему.
Более того, такого рода действия программирую уже не первый раз и только сейчас столкнулся с этой ситуацией.
Анализируя отличия данного случая от аналогичных, нашел ряд отличий:
1. На таблице висит индексированной представление, поле SP597 является полем одного из индексов этого представления.
2. Update затрагивает несколько строк таблицы DT37 (ранее всегда делал update ... where Ключ=@Параметр)

Вопрос: Чего я не понимаю, что нужно изучить. Когда кроме прав на Update поля нужно задавать еще и права на update кластерного ключа?
7 дек 09, 11:52    [8027503]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение на update поля таблицы  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Вопрос: Чего я не понимаю, что нужно изучить.

да баг это. в 2008-ом пофиксен.
http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=257897

Posted via ActualForum NNTP Server 1.4

7 дек 09, 13:53    [8028638]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение на update поля таблицы  [new]
VladimirKr
Member

Откуда: СПб
Сообщений: 1050
daw,

Спасибо.
7 дек 09, 14:32    [8029196]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить