Добрый день. Я объясню свой сценарий. Есть два пользователя (user1 и user2). У меня есть таблица (tblTest) на SQL-сервере с 3 столбцами (f1, f2, f3). То, что я хочу сделать, это следующее:SQL Server - Ограничение UPDATE для конкретных столбцов
Запретить
UPDATE
колонке f2 и предоставитьUPDATE
для столбцов f1 и f3 дляuser1
.Предоставить
UPDATE
колонке f2 и отрицатьUPDATE
колонкам f1 и f3 дляuser2
.
На данный момент я застрял на шаге 1).
Это то, что я сделал:
В SQL Server я выбрал tblTest => Properties => Permissions
, выбранный user1.
В «Разрешения для пользователя1» внизу => Обновить, затем кнопку «Разрешения столбца», отметьте «Отключить» для f2 и «Грант» для f1 и f3.
Затем я обратился к SQL Server с учетными данными user1
и попытался обновить строку в этой таблице.
Очевидно, что команда не удалось с этим сообщением:
Оператор UPDATE разрешение было отказано в колонке «f2» объекта «tblTest», базы данных «dbremarksSQL», схема "ДБО.
Все работало так, как должно было до сих пор. Моя проблема в том, что и другие столбцы не обновляются. Я бы хотел, чтобы команда update обновляла столбцы f1 и f3, по крайней мере, и отказала обновление только до f2 (оставив как было).
Возможно ли это?
Спасибо
Кстати я использую SQL Server 2014 Management Studio.
Вы пытаетесь обновить несколько столбцов - в том числе 'tblTest.f2' - в одном утверждении 'UPDATE', а затем вы ожидаете, что' f2' не будет обновлен, а остальные столбцы? Это не то, как работает SQL Server - если вы выполняете инструкцию, которая терпит неудачу из-за отсутствия разрешений, ** ничего не выполняется ** этого оператора! Если вы хотите обновить другие столбцы как 'User1' - используйте соответствующее утверждение' UPDATE', которое ** не упоминает ** столбец 'f2'! –
Отлично! Понял тебя. Спасибо за разъяснения. Тогда в этом случае, я думаю, что я не могу использовать следующую инструкцию в моей будущей программе vb.net: MyDatabaseBindingSource.EndEdit() MyDatabaseTableAdapter.Update (MyDataSet.tblTest) , потому что это один оператор UPDATE. Правильно ли я? INFO: описанный выше сценарий был устранением неполадок, чтобы понять, почему этот MyDatabaseTableAdapter.Update (MyDataSet.tblTest) не работал с тем же эффектом. – LukeLuke