Сервер SQL: Как создать снимок базы данных из хранимой процедуры для непривилегированного пользователя? - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь создать хранимую процедуру, которая создает снимок дБ для непривилегированного пользователя. Идея состоит в том, чтобы предоставить обычному пользователю способ создания моментального снимка в дБ для выполнения запросов к нему и удаления моментального снимка, когда он будет завершен.

Я думал, что можно было бы использовать 'with execute as owner "в объявлении процедуры. Однако я всегда получаю следующую ошибку:

CREATE DATABASE permission denied in database 'master'.

Вот мой код:

    -- The user that create the sp has sysadmin right
    CREATE OR ALTER PROCEDURE [dbo].[makeSnapshot] WITH EXECUTE AS OWNER
    AS
        -- just an extract of the code (should test if exist...)
        DECLARE @exec NVARCHAR(2000)
        set @exec = 'CREATE DATABASE test_dbss1900 ON  ( NAME = test, FILENAME =   
                    ''C:\\Program Files\\Microsoft SQL Server\\MSSQL14.SQLSERVER2017\\MSSQL\\Data\\test_1900.ss'' )  AS SNAPSHOT OF test';  
        EXEC (@exec)
    GO

    -- try to execute it (with any user)
    EXEC dbo.[makeSnapshot]

Кто-нибудь знает, как мне создать сохраненный процесс, который позволит обычному пользователю создать снимок БД?

Спасибо за любую помощь!

Хосе

1 Ответ

0 голосов
/ 18 апреля 2019

Я действительно нашел решение, посмотрев на - http://www.sommarskog.se/grantperm.html#serverlevel (глава 5.3)

Способ был использовать сертификаты

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