ОТКАЗАТЬ ВСТАВИТЬ, ОБНОВИТЬ, УДАЛИТЬ от выполнения хранимой процедуры на сервере SQL - PullRequest
1 голос
/ 13 июля 2020
CREATE LOGIN reader with password='Test@123#';
CREATE USER ureader for login reader;
grant connect to ureader;

GRANT SELECT TO ureader
DENY INSERT, UPDATE, DELETE, ALTER, REFERENCES TO ureader

Я создал новый SQL Логин, используя вышеуказанный скрипт. В основном мне нужен один SQL ПОЛЬЗОВАТЕЛЬ, который позволяет только выбирать запросы. Если внутри процедуры есть операторы Insert / Update / Delete, она не должна позволять этого.

CREATE PROCEDURE  [dbo].[proc_testreport]
    @Mode int
AS           
BEGIN         
    IF(@Mode=1)      
    BEGIN       
        
        SELECT 1 AS 'DataValue','IP' AS 'DataText'
        UNION 
        SELECT 2 AS 'DataValue','OP' AS 'DataText'
        UNION
        SELECT 3 AS 'DataValue','MHC' AS 'DataText' 

        UPDATE [dbo].[TestTable] set test='F'

    END
END

Когда я выполняю вышеуказанную процедуру, она обновляет данные в таблице [dbo]. [TestTable], но это не должен разрешать его обновление.

EXEC [Proc_TestReport] @Mode = 1

Может ли кто-нибудь помочь ограничить его.

...