Предоставить усеченные разрешения для всех таблиц без изменений - PullRequest
0 голосов
/ 06 февраля 2020

Есть ли способ предоставить пользователю усеченное разрешение без изменения привилегий в SQL Сервер?

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Создайте тестовый Login и User id, затем предоставьте ему разрешение на выполнение хранимой процедуры Truncate_Table_Loner. Этот идентификатор будет использоваться для выполнения усечения.

-- Grant Execute Permission
-- Setup ID on Database with Connect permission
USE master 
GO
CREATE LOGIN [test_user_id] WITH PASSWORD = 'JustConnect123';
GO
USE TestSQL
GO
CREATE USER [test_user_id] FOR LOGIN [test_user_id];
GO
-- Grant Permission
GRANT EXECUTE ON dbo.Truncate_Table_Loner TO [test_user_id];
GO
1 голос
/ 06 февраля 2020

Требуемое минимальное разрешение - ALTER для table_name. Разрешения TRUNCATE TABLE по умолчанию принадлежат владельцу таблицы, членам предопределенной роли сервера sysadmin и предопределенным ролям базы данных db_owner и db_ddladmin и не могут быть переданы. Однако вы можете включить оператор TRUNCATE TABLE в модуль, такой как хранимая процедура, и предоставить соответствующие разрешения модулю, используя предложение EXECUTE AS.

CREATE PROCEDURE dbo.usp_Demo  
WITH EXECUTE AS 'CompanyDomain\SqlUser1'  
AS  
SELECT user_name();  

Источник

Вы можете go через эту официальную документацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...